[{"data":1,"prerenderedAt":287},["ShallowReactive",2],{"project-4040046":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":44,"post_text":47,"what":48,"said":97,"maker_in_thread":188,"shape":200,"grid":204,"attempts":250,"same_week":251,"maker_shows":189,"maker_hidden":279,"reader_version":280,"card":281},"4040046","Joint","A real-time Node.js framework for single page apps","title","Show HN: Joint, a real-time Node.js framework for single page apps","https:\u002F\u002Fgithub.com\u002Fptrsghr\u002Fjoint","github.com","rgbrgb",1338326997,2012,56,23,419,1677,25,"notable","languages","web framework","library",[24,25,26,27,28],"node.js","single page app","real-time","dnode","websockets","roasted",-0.346,{"positive":32,"neutral":32,"mixed":33,"critical":34},2,1,7,12,{"idea":37,"design":40,"execution":41,"performance":42,"docs":43},{"positive":38,"critical":39},0,4,{"positive":33,"critical":38},{"positive":38,"critical":33},{"positive":38,"critical":32},{"positive":33,"critical":38},[38,38,45,38,45,33,38,33,38,46,38,33,38,33,38,33,38,46,45,38,33,38,33],3,5,null,{"problem":49,"audience":59,"pricing":47,"motivation":63,"time_to_build":47,"stack":70,"openness":94,"stage":95,"team_size":96},{"value":50,"source":51,"evidence":52},"Makes client-server real-time calls in single page apps without HTTP setup boilerplate","maker",[53,56],{"id":54,"by":11,"text":55},"4040380","Yes, DNode (https:\u002F\u002Fgithub.com\u002Fsubstack\u002Fdnode) will actually do most of this stuff and it is a pluggable library. For Joint, we wanted to make a really clean interface just for…",{"id":57,"by":11,"text":58},"4042735","So at the top of any nowjs app you're going to have some kind of HTTP stuff to serve files and something about listening on a port. You might also have some Express stuff with…",{"value":60,"source":51,"evidence":61},"Developers building small single page apps with real-time features",[62],{"id":54,"by":11,"text":55},{"value":64,"source":51,"evidence":65},"Minimal way to build single page apps with real-time features, avoiding HTTP plumbing",[66,69],{"id":67,"by":11,"text":68},"4041118","Yes, very similar but nowjs includes a lot more specialized functions and namespacing conventions. However, with any library that you simply require in your node.js app, there is…",{"id":54,"by":11,"text":55},[71,76,80,86],{"value":72,"source":51,"evidence":73},"Node.js",[74],{"id":75},"post",{"value":77,"source":51,"evidence":78},"DNode",[79],{"id":54,"by":11,"text":55},{"value":81,"source":51,"evidence":82},"socket.io",[83],{"id":84,"by":11,"text":85},"4042808","It uses dnode which uses socket.io which uses WebSockets whenever possible and falls back on flash or xhr polling. Joint is pretty new and I provide no guarantees but I've found…",{"value":87,"source":88,"evidence":89},"browserify","commenter",[90],{"id":91,"by":92,"text":93},"4042002","substack","Nice to see people using some of my libs to do nifty stuff but I must caution against depending on `latest` since this could cause your application to break in the future if I…","open_source","prototype","team",{"praise":98,"objections":117,"requests":147,"questions":152,"alternatives":169},[99,110],{"value":100,"source":88,"evidence":101},"Clean, useful interface for small single page apps",[102,106],{"id":103,"by":104,"text":105},"4040931","aroman","Looks interesting, particularly for smaller apps that don't need the whole dnode protocol exposed. I think that's their target use case. Also, I was kind of surprised that the…",{"id":107,"by":108,"text":109},"4041802","SjuulJanssen","I've been programming with NowJs and could you point me to the \"Boiler plate\" stuff you're talking about? I don't get it. It is very clean.",{"value":111,"source":88,"evidence":112},"Good tutorial",[113],{"id":114,"by":115,"text":116},"4040139","ad126","Neat hack. Excellent tutorial.",[118,128,143],{"value":119,"source":88,"evidence":120},"Not truly real-time; no response time guarantees",[121,125],{"id":122,"by":123,"text":124},"4042275","supernooneo","In what sense in this real-time? Hard or soft real-time? What guarantees does it provide?",{"id":126,"by":123,"text":127},"4042839","Well that's not real time in any sense then is it? \"a non-real-time system is one that cannot guarantee a response time in any situation, even if a fast response is the usual…",{"value":129,"source":88,"evidence":130},"Mostly duplicates existing tools like nowjs and DNode",[131,135,139],{"id":132,"by":133,"text":134},"4040763","ilaksh","Isn't this exactly what nowjs does?",{"id":136,"by":137,"text":138},"4040282","smagch","You can do exactly the same thing using DNode.",{"id":140,"by":141,"text":142},"4040314","tlack","why does this require its own application to launch it? wouldnt it be fairly easy to make this connect\u002Fexpress middleware?",{"value":144,"source":88,"evidence":145},"Depending on 'latest' versions risks breaking changes",[146],{"id":91,"by":92,"text":93},[148],{"value":149,"source":88,"evidence":150},"Clarify what 'real-time' means and guarantees",[151],{"id":122,"by":123,"text":124},[153,158,165],{"value":154,"source":88,"evidence":155},"What does it offer beyond nowjs or DNode?",[156,157],{"id":132,"by":133,"text":134},{"id":136,"by":137,"text":138},{"value":159,"source":88,"evidence":160},"Why not use ZeroMQ?",[161],{"id":162,"by":163,"text":164},"4040754","joeblau","What would be the benefit of using this over something like ZeroMQ?",{"value":166,"source":88,"evidence":167},"Why not Express middleware?",[168],{"id":140,"by":141,"text":142},[170,174,177,184],{"value":171,"source":88,"evidence":172},"nowjs",[173],{"id":132,"by":133,"text":134},{"value":77,"source":88,"evidence":175},[176],{"id":136,"by":137,"text":138},{"value":178,"source":88,"evidence":179},"Meteor.js",[180],{"id":181,"by":182,"text":183},"4041564","blrblr","Heard about Meteor.js?",{"value":185,"source":88,"evidence":186},"ZeroMQ",[187],{"id":162,"by":163,"text":164},{"comments":189,"answered":46,"key":190},10,[191,194,197],{"id":192,"text":193},"4040136","Hey, my name's Peter, I put this up. This was the non-language part of our project from the Programming Languages and Translators taught by Al Aho at Columbia last semester. Our…",{"id":195,"text":196},"4041656","Feel free to tweet me @_0_ if you have any more questions.",{"id":198,"text":199},"4041035","Not sure what you're suggesting, but thank you!",{"commenters":201,"max_depth":39,"maker_replies":189,"first_comment_mins":202,"lifespan_hours":203},13,16,18,[205,207,209,211,212,216,218,221,223,224,226,227,229,231,232,236,237,238,241,242,244,246,248],[192,38,38,206,11,33],"project\u002Fneutral\u002Fidea",[195,38,38,208,11,33],"maker\u002Fneutral\u002Fnone",[103,33,45,210,104,38],"project\u002Fmixed\u002Fidea",[198,33,38,208,11,33],[213,33,45,214,215,38],"4042322","project\u002Fneutral\u002Fdesign","bricestacey",[91,32,33,217,92,38],"project\u002Fcritical\u002Fexecution",[219,32,38,220,11,33],"4042748","maker\u002Fpositive\u002Fexecution",[132,45,33,222,133,38],"project\u002Fcritical\u002Fidea",[67,45,38,206,11,33],[107,45,46,225,108,38],"project\u002Fpositive\u002Fdesign",[57,45,38,214,11,33],[122,39,33,228,123,38],"project\u002Fcritical\u002Fperformance",[84,39,38,230,11,33],"project\u002Fneutral\u002Fperformance",[126,39,33,228,123,38],[233,39,38,234,235,38],"4043354","commenter\u002Fneutral\u002Fnone","jdlshore",[140,46,33,222,141,38],[54,46,38,206,11,33],[114,239,46,240,115,38],6,"project\u002Fpositive\u002Fdocs",[162,34,45,206,163,38],[243,34,38,206,11,33],"4041151",[136,245,33,222,137,38],8,[247,245,38,206,11,33],"4040290",[181,249,33,222,182,38],9,[],[252,257,262,267,271,275],{"id":253,"name":254,"points":255,"category":256},"4025901","Drapache",98,"infrastructure",{"id":258,"name":259,"points":260,"category":261},"4028597","Snaketron",96,"games",{"id":263,"name":264,"points":265,"category":266},"4023941","Stallion",93,"dev_tools",{"id":268,"name":269,"points":270,"category":266},"4044362","Cloudedit",82,{"id":272,"name":273,"points":274,"category":20},"4031699","JSON5",64,{"id":276,"name":277,"points":278,"category":266},"4025361","Gistlicious",54,false,"v2",{"id":282,"name":5,"line":6,"ai":279,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":283,"top":18,"kw":284,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":285,"url":9,"mix":286,"praise":100,"objection":119,"sub":21},4040046,-0.35,[24,25,26,27,28],"00303101050101010530101",[32,32,33,34],1794036496354]