[{"data":1,"prerenderedAt":153},["ShallowReactive",2],{"talk-\u002Ftalks\u002F2024-11-20\u002Ftakimeet":3,"talks-explore-en-53197fdc-4107-4d5d-8c8e-9b4d856371b6":61},{"metadata":4,"summary":40,"transcript":60},{"id":5,"title":6,"artifacts":7,"date":9,"description":10,"event":11,"extension":19,"links":20,"locale":26,"meta":27,"slug":28,"sourceLanguage":29,"stem":30,"talkId":31,"topics":32,"__hash__":39},"talks\u002Ftalks\u002F2024-11-20\u002Ftakimeet.json","Smoother user experiences",{"summary":8},"summary.en.md","2024-11-20","Design responsive, reliable interfaces by choosing among loaders, optimistic UI, and skeleton fallbacks, with practical examples in Vue and Pinia Colada.",{"name":12,"url":13,"location":14},"TakiMeet","https:\u002F\u002Fwww.takima.fr\u002F",{"city":15,"country":16,"latitude":17,"longitude":18},"Paris","France",48.80486167446941,2.324595137047259,"json",{"slides":21,"thumbnail":22,"thumbnailDark":23,"source":24,"pdf":25},"https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-20\u002Ftakimeet","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-20\u002Ftakimeet\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-20\u002Ftakimeet\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-20\u002Ftakimeet\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-20\u002Ftakimeet\u002Fpdf","en",{},"2024-11-20\u002Ftakimeet","fr","talks\u002F2024-11-20\u002Ftakimeet","53197fdc-4107-4d5d-8c8e-9b4d856371b6",[33,34,35,36,37,38],"loading-states","optimistic-ui","pinia-colada","skeleton-screens","user-experience","vue","3trE-3c8Q4CtxgXE3KAnIdZT2lC_eX4gPc_wOTjMMZ8",{"id":41,"body":42,"extension":56,"meta":57,"rawbody":58,"stem":30,"__hash__":59},"talksSummary\u002Ftalks\u002F2024-11-20\u002Ftakimeet.md",{"type":43,"value":44,"toc":52},"minimark",[45,49],[46,47,48],"p",{},"A user interface needs to explain what happened after an action. This talk compares loading indicators, optimistic UI, and skeleton fallbacks, then looks at when each approach fits based on the next state, error handling, response time, and the importance of the data.",[46,50,51],{},"The examples use Vue and Pinia Colada to implement optimistic interactions and data fetching.",{"title":53,"searchDepth":54,"depth":54,"links":55},"",2,[],"md",{},"A user interface needs to explain what happened after an action. This talk compares loading indicators, optimistic UI, and skeleton fallbacks, then looks at when each approach fits based on the next state, error handling, response time, and the importance of the data.\n\nThe examples use Vue and Pinia Colada to implement optimistic interactions and data fetching.\n","tis6d9Tql_PMYjy1B3UgbYacv-bACgq6nOmhGZrWy_M",null,[62,95,124],{"id":63,"title":64,"artifacts":65,"date":66,"description":67,"event":68,"extension":19,"links":75,"locale":26,"meta":81,"slug":82,"sourceLanguage":29,"stem":83,"talkId":84,"topics":85,"__hash__":94},"talks\u002Ftalks\u002F2026-06-18\u002Fvoxxeddays-luxembourg.json","Inside a pipeline: demystifying Vite and its plugins",{"summary":8},"2026-06-18","See how Vite processes each request with transformations, plugins, virtual modules, middleware, and HMR to extend modern web development.",{"name":69,"url":70,"location":71},"Voxxed Days Luxembourg","https:\u002F\u002Fluxembourg.voxxeddays.com\u002Fen\u002F",{"city":72,"country":72,"latitude":73,"longitude":74},"Luxembourg",49.50869734204942,6.278993417195408,{"slides":76,"thumbnail":77,"thumbnailDark":78,"source":79,"pdf":80},"https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-18\u002Fvoxxeddays-luxembourg","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-18\u002Fvoxxeddays-luxembourg\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-18\u002Fvoxxeddays-luxembourg\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-18\u002Fvoxxeddays-luxembourg\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-18\u002Fvoxxeddays-luxembourg\u002Fpdf",{},"2026-06-18\u002Fvoxxeddays-luxembourg","talks\u002F2026-06-18\u002Fvoxxeddays-luxembourg","a6e200c1-6442-4c97-906f-cb58cf102995",[86,87,88,89,90,91,92,93],"bundlers","esm","hot-module-replacement","middleware","module-transforms","plugin-development","virtual-modules","vite","EM70NPHUcCVtycNgr8CMvfaqpxq7b165tiNu56--yp8",{"id":96,"title":97,"artifacts":98,"date":99,"description":100,"event":101,"extension":19,"links":107,"locale":26,"meta":113,"slug":114,"sourceLanguage":29,"stem":115,"talkId":116,"topics":117,"__hash__":123},"talks\u002Ftalks\u002F2025-09-09\u002Fhumantalks-paris.json","Inertia: One Ring to rule them all",{"summary":8},"2025-09-09","Learn how Inertia.js pairs Laravel routes and controllers with Vue or React pages to build rich interfaces without splitting the backend into a REST API.",{"name":102,"url":103,"location":104},"HumanTalks Paris","https:\u002F\u002Fhumantalks.paris\u002F",{"city":15,"country":16,"latitude":105,"longitude":106},48.87626759662574,2.333568626805848,{"slides":108,"thumbnail":109,"thumbnailDark":110,"source":111,"pdf":112},"https:\u002F\u002Ftalks.soubiran.dev\u002F2025-09-09\u002Fhumantalks-paris","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-09-09\u002Fhumantalks-paris\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-09-09\u002Fhumantalks-paris\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-09-09\u002Fhumantalks-paris\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-09-09\u002Fhumantalks-paris\u002Fpdf",{},"2025-09-09\u002Fhumantalks-paris","talks\u002F2025-09-09\u002Fhumantalks-paris","b3d0c40a-96f1-46f9-abb2-76b7e862cdb5",[118,119,120,121,122,38],"full-stack","inertiajs","laravel","monolith","react","z7aGuosD1Ggln2EBgJnFyySH2a4hHy1kHm4lCNmbb30",{"id":125,"title":64,"artifacts":126,"date":128,"description":129,"event":130,"extension":19,"links":137,"locale":26,"meta":147,"slug":148,"sourceLanguage":29,"stem":149,"talkId":150,"topics":151,"__hash__":152},"talks\u002Ftalks\u002F2026-06-12\u002Fdevlille.json",{"summary":8,"transcript":127},"transcript.en.md","2026-06-12","Follow a Vite request through resolution, loading, and transformation to understand and build plugins, virtual modules, and custom integrations.",{"name":131,"url":132,"location":133},"DevLille","https:\u002F\u002Fdevlille.fr\u002F",{"city":134,"country":16,"latitude":135,"longitude":136},"Lille",50.632820223594464,3.0780877271604523,{"slides":138,"thumbnail":139,"thumbnailDark":140,"source":141,"pdf":142,"recording":143,"youtubeEmbed":144,"audio":145,"transcript":146},"https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-12\u002Fdevlille","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-12\u002Fdevlille\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-12\u002Fdevlille\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-12\u002Fdevlille\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-12\u002Fdevlille\u002Fpdf","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-12\u002Fdevlille\u002Frecording","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FAwhemfKsd8k","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-06-12\u002Fdevlille\u002Faudio","https:\u002F\u002Fsoubiran.dev\u002Ftalks\u002F2026-06-12\u002Fdevlille",{},"2026-06-12\u002Fdevlille","talks\u002F2026-06-12\u002Fdevlille","7c235d66-5c64-44e3-9fe0-b6f8ceddd89f",[86,87,90,91,92,93],"fJJ4AusfrAg-lu2TlSZtewTZvKr_OtSp6uN2rUyRglI",1790086906629]