[{"data":1,"prerenderedAt":197},["ShallowReactive",2],{"maker-ekzhang":3},[4,33,53,79,99,116,136,156,176],{"id":5,"name":6,"line":7,"ai":8,"cat":9,"year":10,"points":11,"comments":12,"rec":13,"s":14,"top":15,"kw":16,"maker":21,"domain":22,"tier":23,"attempts":24,"strip":25,"url":26,"mix":27,"praise":31,"objection":32,"sub":19},21957819,"Set with Friends","A Real-Time multiplayer online card game",false,"games",2020,95,37,"mixed",0.14,23,[17,18,19,20],"set card game","multiplayer","online card game","real-time","ekzhang","setwithfriends.com","notable",2,"5000105550000050353100055133301333100","https:\u002F\u002Fsetwithfriends.com\u002F",[28,29,30,29],8,5,3,"Fun, simple interface that is easy to learn","Hard to play on mobile portrait mode",{"id":34,"name":35,"line":36,"ai":8,"cat":37,"year":10,"points":38,"comments":24,"rec":39,"s":40,"top":41,"kw":42,"maker":21,"domain":35,"tier":47,"attempts":48,"strip":49,"url":50,"mix":51,"praise":-1,"objection":-1,"sub":52},23319829,"ekzhang.com","Simulate 2^100 live automata cells in milliseconds, in your browser","learning_science",13,"quiet",null,70,[43,44,45,46],"game of life","hashlife","cellular automata","javascript","shown",0,"00","https:\u002F\u002Fwww.ekzhang.com\u002Fgame-of-life\u002F",[48,48,48,48],"cellular automata simulator",{"id":54,"name":55,"line":56,"ai":8,"cat":57,"year":58,"points":59,"comments":60,"rec":61,"s":62,"top":63,"kw":64,"maker":21,"domain":70,"tier":23,"attempts":48,"strip":71,"url":72,"mix":73,"praise":76,"objection":77,"sub":78},27408326,"Rustpad","A self-hosted online collaborative text editor","dev_tools",2021,143,21,"curious",-0.1,14,[65,66,67,68,69],"collaborative editor","operational transformation","self-hosted","rust","monaco","github.com","150350105033031031033","https:\u002F\u002Fgithub.com\u002Fekzhang\u002Frustpad",[30,74,48,75],7,4,"Clean, lightweight and snappy","Breaks the browser back button","collaborative code editor",{"id":80,"name":81,"line":82,"ai":8,"cat":83,"year":58,"points":84,"comments":28,"rec":85,"s":86,"top":87,"kw":88,"maker":21,"domain":70,"tier":23,"attempts":48,"strip":92,"url":93,"mix":94,"praise":96,"objection":97,"sub":98},28615418,"Composing Studio","An online, collaborative editor for music notation","creative",113,"loved",0.46,19,[89,65,90,91],"music notation","abc notation","online sheet music","35355535","https:\u002F\u002Fgithub.com\u002Fekzhang\u002Fcomposing.studio",[29,24,95,48],1,"Useful for sharing and learning music theory and transcriptions","Lacks keyboard shortcuts that composers expect from Sibelius and Finale","music notation editor",{"id":100,"name":101,"line":102,"ai":8,"cat":103,"year":58,"points":104,"comments":30,"rec":39,"s":40,"top":105,"kw":106,"maker":21,"domain":70,"tier":47,"attempts":48,"strip":111,"url":112,"mix":113,"praise":114,"objection":-1,"sub":115},29521975,"Percival","Web-based reactive Datalog notebooks, made with Rust+Svelte","languages",22,53,[107,108,68,109,110],"datalog","reactive notebook","svelte","data analysis","000","https:\u002F\u002Fgithub.com\u002Fekzhang\u002Fpercival",[48,48,48,48],"Impressive reactive notebook; error messages from chumsky are helpful","datalog notebook",{"id":117,"name":118,"line":119,"ai":8,"cat":103,"year":120,"points":121,"comments":38,"rec":13,"s":122,"top":123,"kw":124,"maker":21,"domain":70,"tier":47,"attempts":48,"strip":130,"url":131,"mix":132,"praise":133,"objection":134,"sub":135},33132820,"Inline SQL","Inline SQL in any Python program",2022,26,0.26,52,[125,126,127,128,129],"python","sql","dsl","duckdb","pandas","5035010530500","https:\u002F\u002Fgithub.com\u002Fekzhang\u002Finline-sql",[75,24,48,95],"Clean, cool syntax and idea","The ^ operator is an unusual choice for syntax","python library",{"id":137,"name":138,"line":139,"ai":8,"cat":57,"year":140,"points":141,"comments":142,"rec":13,"s":143,"top":74,"kw":144,"maker":21,"domain":70,"tier":23,"attempts":48,"strip":149,"url":150,"mix":151,"praise":154,"objection":155,"sub":145},38152109,"Sshx","A web-based collaborative terminal",2023,242,62,0.04,[145,146,147,148],"collaborative terminal","web terminal","shared shell","terminal sharing","1000000000110135305335115130330030330101","https:\u002F\u002Fgithub.com\u002Fekzhang\u002Fsshx",[152,38,48,153],6,9,"Great user experience and a fun, useful idea for shared terminals","Encryption design concerns: IV handling, no integrity protection with AES-CTR alone",{"id":157,"name":158,"line":159,"ai":8,"cat":160,"year":161,"points":162,"comments":75,"rec":39,"s":40,"top":163,"kw":164,"maker":21,"domain":170,"tier":47,"attempts":48,"strip":171,"url":172,"mix":173,"praise":174,"objection":-1,"sub":175},45346721,"SSH-hypervisor","like SSH, but each user gets their own microVM","infrastructure",2025,34,41,[165,166,167,168,169],"microvm","ssh","firecracker","virtual machines","hypervisor","ekzhang.substack.com","5030","https:\u002F\u002Fekzhang.substack.com\u002Fp\u002Fssh-hypervisor-simcity-for-vms",[95,95,48,48],"Seen as a useful way to teach Linux to students.","virtual machines over ssh",{"id":177,"name":178,"line":179,"ai":8,"cat":180,"year":181,"points":182,"comments":104,"rec":13,"s":183,"top":87,"kw":184,"maker":21,"domain":190,"tier":23,"attempts":48,"strip":191,"url":192,"mix":193,"praise":194,"objection":195,"sub":196},46516267,"jax-js","Jax-JS, array library in JavaScript targeting WebGPU","ai",2026,84,0.36,[185,186,187,188,189],"javascript machine learning","webgpu","autodiff","tensor library","jax javascript","ss.ekzhang.com","5000000505530300031005","https:\u002F\u002Fss.ekzhang.com\u002Fp\u002Fjax-js-an-ml-library-for-the-web",[29,95,24,95],"Fills gap left by tensorflow.js for gradients in JavaScript","Firefox cannot run the demos without WebGPU","ml library",1794036769441]