[{"data":1,"prerenderedAt":314},["ShallowReactive",2],{"project-20494747":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":43,"post_text":44,"what":45,"said":67,"maker_in_thread":154,"shape":164,"grid":168,"attempts":278,"same_week":279,"maker_shows":41,"maker_hidden":307,"reader_version":308,"card":309},"20494747","Sinuous","Small, fast, reactive UI library","title","Show HN: Sinuous – Small, fast, reactive UI library","https:\u002F\u002Fgithub.com\u002Fluwes\u002Fsinuous","github.com","luwes",1563758221,2019,76,44,618,2195,29,"notable","languages","ui library","library",[24,25,26,27,28],"reactive ui library","javascript","observable","hyperscript","template literals","roasted",-0.56,{"positive":32,"neutral":33,"mixed":32,"critical":34},0,3,10,13,{"docs":37,"design":38,"performance":39,"execution":40,"idea":42},{"positive":32,"critical":33},{"positive":32,"critical":33},{"positive":32,"critical":33},{"positive":32,"critical":41},1,{"positive":32,"critical":32},[33,33,32,32,32,32,32,32,32,32,32,32,32,32,32,32,41,32,32,32,41,32,32,32,32,41,32,41,32,41,41,32,41,32,32,32,41,32,41,33],null,{"problem":44,"audience":44,"pricing":44,"motivation":44,"time_to_build":44,"stack":46,"openness":65,"stage":66,"team_size":65},[47,58],{"value":48,"source":49,"evidence":50},"JavaScript","inferred",[51,55],{"id":52,"by":53,"text":54},"20495344","evmar","I work in this space so I am curious how your library is different from its similar competitors. I read the docs, but I didn't find anything about the actual model for how it…",{"id":56,"by":11,"text":57},"20500515","@localvoid thanks for the investigation, Sinuous can get around this with the template module I believe. Also Sinuous doesn't use the same library as Solid or S.js for tracking…",{"value":59,"source":60,"evidence":61},"htm","maker",[62],{"id":63,"by":11,"text":64},"20503871","This is fixed in v0.12.3, https:\u002F\u002Fcodesandbox.io\u002Fs\u002Fsinuous-counter-hmp8x The issue below is still to be fixed. It currently returns an array when it should be a DocumentFragment.…","unknown","beta",{"praise":68,"objections":83,"requests":112,"questions":127,"alternatives":139},[69,75],{"value":70,"source":60,"evidence":71},"Stays close to plain JS and web standards",[72],{"id":73,"by":11,"text":74},"20502711","@aitchnyu it is similar to Svelte, a lot simpler, early stages, less features though. I think one of the upsides of Sinuous is that stays much closer to plain JS and to the web…",{"value":76,"source":77,"evidence":78},"Fast in benchmarks","commenter",[79],{"id":80,"by":81,"text":82},"20504424","spankalee","The preprocessing is far from an HTML parser. It just helps pick what marker to join template fragments with before passing to the built-in parser. You seem to think this is…",[84,94,105],{"value":85,"source":77,"evidence":86},"Fine-grained observables fail a benchmark's correctness check",[87,91],{"id":88,"by":89,"text":90},"20495480","localvoid","All \"top ranked\" libraries that use fine-grained observables graph in this benchmark are actually \"broken\"[1]. 1. https:\u002F\u002Fgithub.com\u002Fryansolid\u002Fsolid\u002Fissues\u002F46",{"id":92,"by":89,"text":93},"20503894","Your library has the same issue. Also, you are using linear search[1] when removing edges. 1.…",{"value":95,"source":77,"evidence":96},"Template literal HTML lacks syntax highlighting and is error-prone",[97,101],{"id":98,"by":99,"text":100},"20495555","_hardwaregeek","I kinda don't get the whole \"put html in template literals\". Wouldn't there be no syntax highlighting? And the framework is either putting the string into the DOM with some regex…",{"id":102,"by":103,"text":104},"20496128","dmitriid","My personal opinion is that tagged template literals are the worst addition to Javascript [1] As HN user stevebmark said [2]: --- start quote --- …we’ve learned not to write code…",{"value":106,"source":77,"evidence":107},"Counter examples behave unexpectedly",[108],{"id":109,"by":110,"text":111},"20498006","ezekg","I took it for a super simple test run and behavior seems very… weird and incorrect: https:\u002F\u002Fcodesandbox.io\u002Fs\u002F7o92r. Perhaps I'm just using it wrong, but it's not very clear why…",[113,117],{"value":114,"source":77,"evidence":115},"Document the rendering model and how it differs from competitors",[116],{"id":52,"by":53,"text":54},{"value":118,"source":77,"evidence":119},"Use more descriptive variable names in examples",[120,124],{"id":121,"by":122,"text":123},"20496125","codegladiator","> import { o, h } from 'sinuous'; really recommend you to use proper names instead of single letter variables.",{"id":125,"by":110,"text":126},"20497908","I second this. Also, this example on GitHub doesn't work since html is not defined.",[128,132],{"value":129,"source":77,"evidence":130},"Does the whole UI rerender on any observable change?",[131],{"id":52,"by":53,"text":54},{"value":133,"source":77,"evidence":134},"How does it compare to Svelte?",[135],{"id":136,"by":137,"text":138},"20496564","aitchnyu","This brings Svelte to my mind with mere kbs of code free of a virtual-dom runtime. What should I know more?",[140,144,150],{"value":141,"source":77,"evidence":142},"Svelte",[143],{"id":136,"by":137,"text":138},{"value":145,"source":77,"evidence":146},"lit-html",[147],{"id":148,"by":81,"text":149},"20495649","Of course you can write a syntax highlighter for HTML in template literals. The lit-plugin VS Code extension provides syntax highlighting plus type checking for bindings.…",{"value":151,"source":77,"evidence":152},"Solid",[153],{"id":88,"by":89,"text":90},{"comments":155,"answered":41,"key":156},7,[157,158,161],{"id":56,"text":57},{"id":159,"text":160},"20499721","Thanks for the feedback! `o` is an alias for `observable`. `observable` can be used as well. `h` is the pragma, comes from hyperscript. it's used by a lot of libraries as the…",{"id":162,"text":163},"20500602","thanks for reporting, seems to be a bug. added to GH issues and will fix asap",{"commenters":165,"max_depth":155,"maker_replies":155,"first_comment_mins":166,"lifespan_hours":167},26,194,51,[169,171,174,178,180,183,186,189,192,195,198,201,204,206,209,211,213,216,219,221,224,225,227,228,232,235,237,239,241,244,246,248,249,252,253,255,258,260,261,264,268,270,273,276],[52,32,33,170,53,32],"project\u002Fneutral\u002Fdocs",[172,32,33,170,173,32],"20495455","voltagex_",[175,32,32,176,177,32],"20497124","other\u002Fneutral\u002Fnone","jazoom",[179,32,32,176,53,32],"20498361",[181,41,32,176,182,32],"20495609","Pmop",[184,41,32,176,185,32],"20496104","schpaencoder",[187,41,32,176,188,32],"20496421","sooheon",[190,41,32,176,191,32],"20496194","kitd",[193,41,32,176,194,32],"20498661","e12e",[196,41,32,176,197,32],"20496388","TeMPOraL",[199,41,32,176,200,32],"20498475","seanmcdirmid",[202,41,32,176,203,32],"20499046","Razengan",[205,41,32,176,200,32],"20499127",[207,41,32,176,208,32],"20499312","buckminster",[210,41,32,176,200,32],"20499414",[212,41,32,176,197,32],"20501299",[214,41,32,176,215,32],"20496519","mhd",[98,217,41,218,99,32],2,"project\u002Fcritical\u002Fdesign",[148,217,32,220,81,32],"commenter\u002Fneutral\u002Fperformance",[222,217,32,223,103,32],"20495969","commenter\u002Fcritical\u002Fperformance",[80,217,32,220,81,32],[226,217,32,223,103,32],"20505199",[102,217,41,218,103,32],[229,217,32,230,231,32],"20496425","commenter\u002Fneutral\u002Fnone","tobr",[233,217,32,230,234,32],"20496989","rounce",[236,217,32,230,231,32],"20497327",[238,217,32,230,103,32],"20499054",[240,217,41,218,197,32],"20496438",[242,217,32,230,243,32],"20498834","brandonmenc",[88,33,41,245,89,32],"project\u002Fcritical\u002Fperformance",[56,33,32,247,11,41],"maker\u002Fneutral\u002Fperformance",[92,33,41,245,89,32],[121,250,41,251,122,32],4,"project\u002Fcritical\u002Fdocs",[125,250,41,251,110,32],[159,250,32,254,11,41],"maker\u002Fneutral\u002Fdocs",[109,256,41,257,110,32],5,"project\u002Fcritical\u002Fexecution",[162,256,32,259,11,41],"maker\u002Fneutral\u002Fexecution",[63,256,32,257,11,41],[262,256,32,263,11,41],"20512296","maker\u002Fpositive\u002Fexecution",[265,266,41,245,267,32],"20495478",6,"theprotocol",[269,266,32,247,11,41],"20500623",[271,155,41,251,272,32],"20498713","azangru",[136,274,33,275,137,32],8,"project\u002Fneutral\u002Fidea",[73,274,32,277,11,41],"maker\u002Fneutral\u002Fidea",[],[280,285,289,293,298,302],{"id":281,"name":282,"points":283,"category":284},"20478339","Trennd",446,"data",{"id":286,"name":287,"points":288,"category":284},"20498474","Ananas",359,{"id":290,"name":291,"points":292,"category":284},"20507592","Poli",236,{"id":294,"name":295,"points":296,"category":297},"20514683","printable-mockups",155,"dev_tools",{"id":299,"name":300,"points":301,"category":297},"20515880","blogger-cli",150,{"id":303,"name":304,"points":305,"category":306},"20517129","Minimal Twitter",93,"productivity",false,"v2",{"id":310,"name":5,"line":6,"ai":307,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":311,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":312,"url":9,"mix":313,"praise":70,"objection":85,"sub":21},20494747,[24,25,26,27,28],"3300000000000000100010000101011010001013",[32,33,32,34],1794036579285]