[{"data":1,"prerenderedAt":165},["ShallowReactive",2],{"talk-\u002Ftalks\u002F2025-11-13\u002Fdevfest-toulouse":3,"talks-explore-en-42fd99aa-4090-4d02-af22-d47406ddd6e7":66},{"metadata":4,"summary":40,"transcript":65},{"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\u002F2025-11-13\u002Fdevfest-toulouse.json","Reactivity and signals: demystifying frontend magic",{"summary":8},"summary.en.md","2025-11-13","Unpack frontend reactivity: change propagation, dependency tracking, signals, computed values, and effects in modern frameworks.",{"name":12,"url":13,"location":14},"DevFest Toulouse","https:\u002F\u002Fdevfesttoulouse.fr\u002F",{"city":15,"country":16,"latitude":17,"longitude":18},"Toulouse","France",43.54228454982411,1.5135988668549822,"json",{"slides":21,"thumbnail":22,"thumbnailDark":23,"source":24,"pdf":25},"https:\u002F\u002Ftalks.soubiran.dev\u002F2025-11-13\u002Fdevfest-toulouse","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-11-13\u002Fdevfest-toulouse\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-11-13\u002Fdevfest-toulouse\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-11-13\u002Fdevfest-toulouse\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-11-13\u002Fdevfest-toulouse\u002Fpdf","en",{},"2025-11-13\u002Fdevfest-toulouse","fr","talks\u002F2025-11-13\u002Fdevfest-toulouse","42fd99aa-4090-4d02-af22-d47406ddd6e7",[33,34,35,36,37,38],"computed-values","dependency-tracking","effects","frontend-reactivity","signals","vue","k2HGJMbbEVqLBjws4JJNS5cxxzCviFuKmpgh3Q2E1lY",{"id":41,"body":42,"extension":61,"meta":62,"rawbody":63,"stem":30,"__hash__":64},"talksSummary\u002Ftalks\u002F2025-11-13\u002Fdevfest-toulouse.md",{"type":43,"value":44,"toc":57},"minimark",[45,54],[46,47,48,49,53],"p",{},"Frontend frameworks hide a dependency-tracking system behind their reactive APIs. This talk makes that system visible with ",[50,51,52],"code",{},"alien-signals",", showing how signals, computed values, and effects form a graph that can be updated when state changes.",[46,55,56],{},"The examples use directed graphs, topological ordering, doubly linked lists, and push-pull propagation to explain the underlying algorithms. They finish by comparing this model with Vue's component-level reactive effects.",{"title":58,"searchDepth":59,"depth":59,"links":60},"",2,[],"md",{},"Frontend frameworks hide a dependency-tracking system behind their reactive APIs. This talk makes that system visible with `alien-signals`, showing how signals, computed values, and effects form a graph that can be updated when state changes.\n\nThe examples use directed graphs, topological ordering, doubly linked lists, and push-pull propagation to explain the underlying algorithms. They finish by comparing this model with Vue's component-level reactive effects.\n","NhHpPUOGsABK0I-rFlwdmcYgHQUxS7EAaH5a7A2Z8nk",null,[67,98,130],{"id":68,"title":69,"artifacts":70,"date":71,"description":72,"event":73,"extension":19,"links":80,"locale":26,"meta":86,"slug":87,"sourceLanguage":29,"stem":88,"talkId":89,"topics":90,"__hash__":97},"talks\u002Ftalks\u002F2025-03-05\u002Fnodejs-paris.json","You don't need these new Node.js APIs",{"summary":8},"2025-03-05","Take a closer look at newer Node.js APIs, from --watch and node:test to parseArgs, .env, and SQLite, then decide which tools your projects actually need.",{"name":74,"url":75,"location":76},"Node.js Paris","http:\u002F\u002Fnodejs.paris\u002Fmeetups",{"city":77,"country":16,"latitude":78,"longitude":79},"Paris",48.86860314335723,2.3354337719970117,{"slides":81,"thumbnail":82,"thumbnailDark":83,"source":84,"pdf":85},"https:\u002F\u002Ftalks.soubiran.dev\u002F2025-03-05\u002Fnodejs-paris","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-03-05\u002Fnodejs-paris\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-03-05\u002Fnodejs-paris\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-03-05\u002Fnodejs-paris\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-03-05\u002Fnodejs-paris\u002Fpdf",{},"2025-03-05\u002Fnodejs-paris","talks\u002F2025-03-05\u002Fnodejs-paris","4e7cb9ea-82aa-4d56-b335-002a5420db26",[91,92,93,94,95,96],"developer-tooling","nodejs","nodejs-apis","package-managers","runtimes","yagni","bxW-xTB89tTPCShKZfpyB3LMwZR5Ka7d9U0W6vGgb8s",{"id":99,"title":100,"artifacts":101,"date":102,"description":103,"event":104,"extension":19,"links":111,"locale":26,"meta":118,"slug":119,"sourceLanguage":29,"stem":120,"talkId":121,"topics":122,"__hash__":129},"talks\u002Ftalks\u002F2025-06-26\u002Fbreizhcamp.json","In JavaScript, there's a package for everything... and often for nothing.",{"summary":8},"2025-06-26","Examine the cost of unnecessary JavaScript dependencies and learn how to reduce the footprint of packages, bundles, and the delivery pipeline.",{"name":105,"url":106,"location":107},"BreizhCamp","https:\u002F\u002Fbreizhcamp.org\u002F",{"city":108,"country":16,"latitude":109,"longitude":110},"Rennes",48.111154286133214,-1.6369320132492642,{"slides":112,"thumbnail":113,"thumbnailDark":114,"source":115,"pdf":116,"article":117},"https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp\u002Fpdf","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp\u002Farticle",{},"2025-06-26\u002Fbreizhcamp","talks\u002F2025-06-26\u002Fbreizhcamp","691f7b68-74eb-438e-8e6a-1cb791599de9",[123,124,125,126,127,128],"bundle-size","dependencies","e18e","javascript","package-management","performance","TBEQIGy1IWxnnGVOfjDjiF0K6sY12XDkqQjXrc_W9OQ",{"id":131,"title":132,"artifacts":133,"date":135,"description":136,"event":137,"extension":19,"links":143,"locale":26,"meta":153,"slug":154,"sourceLanguage":26,"stem":155,"talkId":156,"topics":157,"__hash__":164},"talks\u002Ftalks\u002F2024-11-13\u002Fnuxtnation.json","Ship Nuxt apps that scale",{"summary":8,"transcript":134},"transcript.en.md","2024-11-13","Learn how NuxtHub brings Nuxt applications to production with Cloudflare's edge platform, managed data services, deployment tooling, and a scalable full-stack architecture.",{"name":138,"url":139,"location":140},"Nuxt Nation","https:\u002F\u002Fnuxtnation.com\u002F",{"city":141,"country":141,"latitude":142,"longitude":142},"Online",0,{"slides":144,"thumbnail":145,"thumbnailDark":146,"source":147,"pdf":148,"recording":149,"youtubeEmbed":150,"audio":151,"transcript":152},"https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-13\u002Fnuxtnation","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-13\u002Fnuxtnation\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-13\u002Fnuxtnation\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-13\u002Fnuxtnation\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-13\u002Fnuxtnation\u002Fpdf","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-13\u002Fnuxtnation\u002Frecording","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FI4-YfEn8K0w","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-11-13\u002Fnuxtnation\u002Faudio","https:\u002F\u002Fsoubiran.dev\u002Ftalks\u002F2024-11-13\u002Fnuxtnation",{},"2024-11-13\u002Fnuxtnation","talks\u002F2024-11-13\u002Fnuxtnation","ac5aed5a-f07a-4394-81e9-9d25ad026e7e",[158,159,160,161,162,163],"cloudflare","edge-computing","full-stack","nitro","nuxt","nuxthub","QdCLBpLzulywbO8vKHySyFeESnUy7iS-hs0wv7k1xSo",1790086905672]