[{"data":1,"prerenderedAt":96},["ShallowReactive",2],{"3e3w-H2wz0BIvrBDdUUcsIy8nKZlcspdeiSN3f1J8eM":3,"_apollo:default":63},{"events":4,"previous":57,"next":61,"photos":62},[5],{"__typename":6,"id":7,"date":8,"time":9,"title":10,"eventType":11,"edition":12,"meetupLink":13,"streamLink":10,"venue":14,"talks":21,"sponsors":56},"Event","cmpe6n1ixagi307t5pgnje1ec","2026-05-29","18:30",null,"Physical",93,"https:\u002F\u002Fwww.meetup.com\u002Fweb-zurich\u002Fevents\u002F314002090",{"__typename":15,"name":16,"street":17,"zip":18,"city":19,"googleMapsUrl":20},"Venue","Impact Hub Zürich - Viadukt","Viaduktstrasse 93","8005","Zürich","https:\u002F\u002Fgoo.gl\u002Fmaps\u002FwnYhbDWbyWR2",[22,38,46],{"__typename":23,"id":24,"name":25,"abstract":26,"youtubecode":10,"speakers":27},"Talk","cmpe6gxdya6gx07t5dl207nl3","Monetizing JavaScript: Building Profitable Products as a Solo Developer","Lessons learned from building and launching a commercial JavaScript library as a solo developer.",[28],{"__typename":29,"id":30,"name":31,"role":32,"company":33,"speakerPicture":34},"Speaker","cmpe6gnl7a7gy08unx2ks6sd3","Alex Suzuki","Founder","Pixelverse GmbH (STRICH)",{"__typename":35,"url":36,"fileName":37},"Asset","https:\u002F\u002Feu-central-1.graphassets.com\u002FAYopFRtiZSsGRyNXA0N4nz\u002Fcmpe6g0i6a6r808unk7632lv2","alex_suzuki_2025_1024x1024.jpg",{"__typename":23,"id":39,"name":40,"abstract":41,"youtubecode":10,"speakers":42},"cmpe6l3haaei308ung7087e1f","Ten times tea","I'm building a programming language. When I got to the frontend, I ran into a problem: React's mental model is elegant, but the mental model is at odds with the code. Hooks, effects, and render passes create a runtime that bears little resemblance to the code we write. The Elm programming language works differently and its architecture (TEA = The Elm Architecture) has been adopted by other tools over the years.\n\nSo I copied it as well. My language embeds TEA at the language level, not as a library. This unlocks time-travel debugging, reproducible application state and serializable bug reports that include the entire program state.\n\nThis talk covers the quick introduction of my language, TEA, why TEA is the right fit and what becomes possible when the architecture is baked into the language itself.",[43],{"__typename":29,"id":44,"name":45,"role":10,"company":10,"speakerPicture":10},"cmpe6kx3tae3a08unbr5k0z94","Hugo Sousa",{"__typename":23,"id":47,"name":48,"abstract":49,"youtubecode":10,"speakers":50},"cmpe6mmi4856q07umsxwyn13o","Software testing","Many old software projects don't have any tests - if the code works, why should you bother with tests? Well, you really should bother, because code changes all the time. During development, you keep adding new features which at times requires large scale modifications of the code that will inevitably alter existing functionality. And in existing projects, one still has to make updates once in a while, for example for security patches. These things will always break existing functionality and tests are the only remedy against this issue.\n \nIn this talk, we will look at the basic idea of tests, how to implement them, what issues to look out for and how you can test pretty much any piece of code if your code base is well structured. ",[51],{"__typename":29,"id":52,"name":53,"role":54,"company":55,"speakerPicture":10},"cmmz3c2nwtzw007unkuw53akf","Marco Gähler","Software Engineer","Zurich Instruments",[],[58],{"__typename":6,"date":59,"title":60},"2026-03-27","Web Zurich March 2026",[],[],{"Speaker:cmpe6gnl7a7gy08unx2ks6sd3":64,"Talk:cmpe6gxdya6gx07t5dl207nl3":66,"Speaker:cmpe6kx3tae3a08unbr5k0z94":70,"Talk:cmpe6l3haaei308ung7087e1f":71,"Speaker:cmmz3c2nwtzw007unkuw53akf":75,"Talk:cmpe6mmi4856q07umsxwyn13o":76,"Event:cmpe6n1ixagi307t5pgnje1ec":80,"ROOT_QUERY":89},["null","__typename",29,"id",30,"name",31,"role",32,"company",33,"speakerPicture",65],["null","__typename",35,"url",36,"fileName",37],["null","__typename",23,"id",24,"name",25,"abstract",26,"youtubecode",10,"speakers",67],[68],{"__ref":69},"Speaker:cmpe6gnl7a7gy08unx2ks6sd3",["null","__typename",29,"id",44,"name",45,"role",10,"company",10,"speakerPicture",10],["null","__typename",23,"id",39,"name",40,"abstract",41,"youtubecode",10,"speakers",72],[73],{"__ref":74},"Speaker:cmpe6kx3tae3a08unbr5k0z94",["null","__typename",29,"id",52,"name",53,"role",54,"company",55,"speakerPicture",10],["null","__typename",23,"id",47,"name",48,"abstract",49,"youtubecode",10,"speakers",77],[78],{"__ref":79},"Speaker:cmmz3c2nwtzw007unkuw53akf",["null","__typename",6,"id",7,"date",8,"time",9,"title",10,"eventType",11,"edition",12,"meetupLink",13,"streamLink",10,"venue",81,"talks",82,"sponsors",56],["null","__typename",15,"name",16,"street",17,"zip",18,"city",19,"googleMapsUrl",20],[83,85,87],{"__ref":84},"Talk:cmpe6gxdya6gx07t5dl207nl3",{"__ref":86},"Talk:cmpe6l3haaei308ung7087e1f",{"__ref":88},"Talk:cmpe6mmi4856q07umsxwyn13o",["null","__typename",90,"events({\"first\":1,\"where\":{\"date\":\"2026-05-29\"}})",91,"events({\"first\":1,\"orderBy\":\"date_DESC\",\"where\":{\"NOT\":[{\"title_starts_with\":\"No event\"}],\"date_lt\":\"2026-05-29\"}})",94,"events({\"first\":1,\"orderBy\":\"date_ASC\",\"where\":{\"NOT\":[{\"title_starts_with\":\"No event\"}],\"date_gt\":\"2026-05-29\"}})",61,"photos({\"first\":60,\"where\":{\"date\":\"2026-05-29\"}})",62],"Query",[92],{"__ref":93},"Event:cmpe6n1ixagi307t5pgnje1ec",[95],["null","__typename",6,"date",59,"title",60],1791217030145]