[{"data":1,"prerenderedAt":158},["ShallowReactive",2],{"talk-\u002Ftalks\u002F2025-10-14\u002Fparis-typescript":3,"talks-explore-en-0e074a1e-bc04-49a6-b1df-8053daaa0a2a":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-10-14\u002Fparis-typescript.json","Reactivity and signals: demystifying frontend magic",{"summary":8},"summary.en.md","2025-10-14","Unpack frontend reactivity: change propagation, dependency tracking, signals, computed values, and effects in modern frameworks.",{"name":12,"url":13,"location":14},"Paris TypeScript","https:\u002F\u002Ftypescript.paris\u002F",{"city":15,"country":16,"latitude":17,"longitude":18},"Paris","France",48.866768910791514,2.342438728872608,"json",{"slides":21,"thumbnail":22,"thumbnailDark":23,"source":24,"pdf":25},"https:\u002F\u002Ftalks.soubiran.dev\u002F2025-10-14\u002Fparis-typescript","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-10-14\u002Fparis-typescript\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-10-14\u002Fparis-typescript\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-10-14\u002Fparis-typescript\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-10-14\u002Fparis-typescript\u002Fpdf","en",{},"2025-10-14\u002Fparis-typescript","fr","talks\u002F2025-10-14\u002Fparis-typescript","0e074a1e-bc04-49a6-b1df-8053daaa0a2a",[33,34,35,36,37,38],"computed-values","dependency-tracking","effects","frontend-reactivity","signals","vue","-rVCW__i3J4xAmWFBbXRLa5Y0PArsJvA0TivUF4NycE",{"id":41,"body":42,"extension":61,"meta":62,"rawbody":63,"stem":30,"__hash__":64},"talksSummary\u002Ftalks\u002F2025-10-14\u002Fparis-typescript.md",{"type":43,"value":44,"toc":57},"minimark",[45,54],[46,47,48,49,53],"p",{},"This talk explains frontend reactivity through dependency graphs, signals, computed values, and effects. It uses ",[50,51,52],"code",{},"alien-signals"," to show how a change in a signal reaches the computations and effects that depend on it.",[46,55,56],{},"The examples cover graph traversal, doubly linked lists, push and pull propagation, and the implementation of signal getters, computed values, and effects. The final section relates this low-level model to Vue's component update mechanism.",{"title":58,"searchDepth":59,"depth":59,"links":60},"",2,[],"md",{},"This talk explains frontend reactivity through dependency graphs, signals, computed values, and effects. It uses `alien-signals` to show how a change in a signal reaches the computations and effects that depend on it.\n\nThe examples cover graph traversal, doubly linked lists, push and pull propagation, and the implementation of signal getters, computed values, and effects. The final section relates this low-level model to Vue's component update mechanism.\n","Kl-Ff5gRUthvnJbaWtyF0VguL3S5IdrT1TUNwDk4pxQ",null,[67,95,127],{"id":68,"title":6,"artifacts":69,"date":71,"description":10,"event":72,"extension":19,"links":78,"locale":26,"meta":89,"slug":90,"sourceLanguage":29,"stem":91,"talkId":92,"topics":93,"__hash__":94},"talks\u002Ftalks\u002F2025-04-17\u002Fdevoxxfr.json",{"summary":8,"transcript":70},"transcript.en.md","2025-04-17",{"name":73,"url":74,"location":75},"Devoxx France","https:\u002F\u002Fwww.devoxx.fr\u002F",{"city":15,"country":16,"latitude":76,"longitude":77},48.87920881050965,2.2836092090943354,{"slides":79,"thumbnail":80,"thumbnailDark":81,"source":82,"pdf":83,"recording":84,"youtubeEmbed":85,"audio":86,"transcript":87,"article":88},"https:\u002F\u002Ftalks.soubiran.dev\u002F2025-04-17\u002Fdevoxxfr","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-04-17\u002Fdevoxxfr\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-04-17\u002Fdevoxxfr\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-04-17\u002Fdevoxxfr\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-04-17\u002Fdevoxxfr\u002Fpdf","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-04-17\u002Fdevoxxfr\u002Frecording","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FIyts6NE6bps","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-04-17\u002Fdevoxxfr\u002Faudio","https:\u002F\u002Fsoubiran.dev\u002Ftalks\u002F2025-04-17\u002Fdevoxxfr","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-04-17\u002Fdevoxxfr\u002Farticle",{},"2025-04-17\u002Fdevoxxfr","talks\u002F2025-04-17\u002Fdevoxxfr","48a8a750-8be9-4457-9dfd-588a701fd385",[33,34,35,36,37,38],"RdECC2Ca4qEQLVoI3cU28PfC_nulfjqyjWPmJRpncmo",{"id":96,"title":97,"artifacts":98,"date":99,"description":100,"event":101,"extension":19,"links":104,"locale":26,"meta":115,"slug":116,"sourceLanguage":29,"stem":117,"talkId":118,"topics":119,"__hash__":126},"talks\u002Ftalks\u002F2024-04-19\u002Fdevoxxfr.json","Unified and universal: JavaScript with UnJS",{"summary":8,"transcript":70},"2024-04-19","Learn how UnJS provides modular, runtime-independent TypeScript tools for building, publishing, and deploying JavaScript applications from the edge to Node.js.",{"name":73,"url":102,"location":103},"https:\u002F\u002Fdevoxx.fr\u002F",{"city":15,"country":16,"latitude":76,"longitude":77},{"slides":105,"thumbnail":106,"thumbnailDark":107,"source":108,"pdf":109,"recording":110,"youtubeEmbed":111,"audio":112,"transcript":113,"article":114},"https:\u002F\u002Ftalks.soubiran.dev\u002F2024-04-19\u002Fdevoxxfr","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-04-19\u002Fdevoxxfr\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-04-19\u002Fdevoxxfr\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-04-19\u002Fdevoxxfr\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-04-19\u002Fdevoxxfr\u002Fpdf","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-04-19\u002Fdevoxxfr\u002Frecording","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F0BApl8r1VWc","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-04-19\u002Fdevoxxfr\u002Faudio","https:\u002F\u002Fsoubiran.dev\u002Ftalks\u002F2024-04-19\u002Fdevoxxfr","https:\u002F\u002Ftalks.soubiran.dev\u002F2024-04-19\u002Fdevoxxfr\u002Farticle",{},"2024-04-19\u002Fdevoxxfr","talks\u002F2024-04-19\u002Fdevoxxfr","41a590cb-fafa-486d-98d3-8d0b37681ba7",[120,121,122,123,124,125],"cross-runtime","developer-tooling","edge-computing","npm-packages","typescript","unjs","Ax8pwhX9Ht-3_P3pCi20p3K2Bh4TzlF1x5xU3gOkeTA",{"id":128,"title":129,"artifacts":130,"date":131,"description":132,"event":133,"extension":19,"links":137,"locale":26,"meta":147,"slug":148,"sourceLanguage":29,"stem":149,"talkId":150,"topics":151,"__hash__":157},"talks\u002Ftalks\u002F2025-01-21\u002Fparis-typescript.json","Become full-stack with TypeScript",{"summary":8,"transcript":70},"2025-01-21","Learn how AdonisJS applies TypeScript to backend development with routing, an ORM, validation, authentication, authorization, tests, and application architecture.",{"name":12,"url":13,"location":134},{"city":15,"country":16,"latitude":135,"longitude":136},48.868673706774,2.333473847730007,{"slides":138,"thumbnail":139,"thumbnailDark":140,"source":141,"pdf":142,"recording":143,"youtubeEmbed":144,"audio":145,"transcript":146},"https:\u002F\u002Ftalks.soubiran.dev\u002F2025-01-21\u002Fparis-typescript","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-01-21\u002Fparis-typescript\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-01-21\u002Fparis-typescript\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-01-21\u002Fparis-typescript\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-01-21\u002Fparis-typescript\u002Fpdf","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-01-21\u002Fparis-typescript\u002Frecording","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FxKrok6ZtHUk","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-01-21\u002Fparis-typescript\u002Faudio","https:\u002F\u002Fsoubiran.dev\u002Ftalks\u002F2025-01-21\u002Fparis-typescript",{},"2025-01-21\u002Fparis-typescript","talks\u002F2025-01-21\u002Fparis-typescript","6a169e55-32dd-4454-878d-d39290607511",[152,153,154,155,124,156],"adonisjs","backend","full-stack","testing","web-architecture","aUtv9ZUldsjEyQhKznRyXFh9xhJFRmvw3W99utf7v9U",1790086905915]