[{"data":1,"prerenderedAt":429},["ShallowReactive",2],{"project-7472982":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":45,"post_text":47,"what":48,"said":72,"maker_in_thread":193,"shape":204,"grid":208,"attempts":389,"same_week":390,"maker_shows":31,"maker_hidden":421,"reader_version":422,"card":423},"7472982","Mogo Chat","open-source team chat app written in Elixir and Ember.js","title","Show HN: Mogo Chat – open-source team chat app written in Elixir and Ember.js","https:\u002F\u002Fgetmogochat.com","getmogochat.com","SingAlong",1395838101,2014,140,69,183,2272,9,"notable","productivity","team chat","web_app",[21,24,25,26,27],"open source chat","elixir chat","ember.js chat","self-hosted chat","mixed",-0.051,{"positive":31,"neutral":32,"mixed":33,"critical":34},4,8,2,6,20,{"performance":37,"execution":39,"docs":41,"design":42,"idea":43},{"positive":38,"critical":33},0,{"positive":38,"critical":40},3,{"positive":33,"critical":38},{"positive":38,"critical":38},{"positive":33,"critical":44},1,[38,40,44,38,38,38,38,38,44,44,38,38,38,38,38,46,44,40,38,38,40,46,40,40,38,38,46,40,46,38,40,38,38,44,40,38,40,44,38,38],5,null,{"problem":47,"audience":47,"pricing":47,"motivation":49,"time_to_build":47,"stack":59,"openness":69,"stage":70,"team_size":71},{"value":50,"source":51,"evidence":52},"Learning Ember; one-man project","maker",[53,56],{"id":54,"by":11,"text":55},"7473957","At first, just to learn Ember. For complex layouts I believe Ember works better. You could use Angular too, but I think you'll need UIRouter or something else along with it.",{"id":57,"by":11,"text":58},"7474656","Totally agree. That's the right way to do it. MogoChat is right now a one-man project, so supporting websockets and then polling seemed tedious, especially with something like…",[60,65],{"value":61,"source":51,"evidence":62},"Elixir",[63],{"id":64},"post",{"value":66,"source":51,"evidence":67},"Ember.js",[68],{"id":64},"open_source","unknown","solo",{"praise":73,"objections":93,"requests":123,"questions":143,"alternatives":155},[74,86],{"value":75,"source":76,"evidence":77},"Good example of an Elixir app with polish","commenter",[78,82],{"id":79,"by":80,"text":81},"7473737","yebyen","I, for one, am glad to see example Elixir apps with some polish that are published freely. I've been meaning to get into Elixir and Erlang, but lack of polished example apps has…",{"id":83,"by":84,"text":85},"7475313","mattdeboard","I am glad to see an Elixir app on HN! Elixir is a great language I have been enjoying messing with in my spare time. It's far below a 1.0 release but its syntax is delightful and…",{"value":87,"source":76,"evidence":88},"Demo is useful for learning Elixir",[89],{"id":90,"by":91,"text":92},"7474068","pessimizer","Isn't every Erlang web tutorial about building a chat app? Thanks for an example in Elixir, though:)",[94,101,112],{"value":95,"source":76,"evidence":96},"Chat servers like IRC are already proven and scale better",[97],{"id":98,"by":99,"text":100},"7473896","hunvreus","Why re-inventing the wheel? IRC and XMPP are proven technologies that scale, I wouldn't go and try to build my own messaging technology: there are hard problems like presence and…",{"value":102,"source":76,"evidence":103},"Stored HTML not sanitized; style tags injected in messages",[104,108],{"id":105,"by":106,"text":107},"7473281","JangoSteve","Someone seems to have broken the demo by typing in some JavaScript. Doesn't seem to be sanitizing input completely. EDIT: Looks like it's CSS, not JS. In case it helps, here's…",{"id":109,"by":110,"text":111},"7473675","voicereasonish","This should be a major red flag to anyone. You don't make an app\u002Fwebsite secure by deciding on a list of things you need to sanitise. You sanitise everything to start with. A…",{"value":113,"source":76,"evidence":114},"Polling instead of WebSockets creates many AJAX requests",[115,119],{"id":116,"by":117,"text":118},"7475343","elwell","That's a lot of AJAX requests. Why not use WebSockets?",{"id":120,"by":121,"text":122},"7473718","psycr","It seems that the room message state is synced via a poller, as seen here: https:\u002F\u002Fgithub.com\u002FHashNuke\u002Fmogo-chat\u002Fblob\u002Fmaster\u002Fassets\u002Fjavascripts\u002Fpollers\u002Fmessage_poller.js.coffee…",[124,129,136],{"value":125,"source":76,"evidence":126},"Use WebSockets instead of polling",[127,128],{"id":120,"by":121,"text":122},{"id":116,"by":117,"text":118},{"value":130,"source":76,"evidence":131},"Show messages instantly on send",[132],{"id":133,"by":134,"text":135},"7473173","KhalPanda","Suggestion: Have messages instantly appear in chat (maybe with a loading icon to one side) when uses hit enter\u002Fsend... then display an error if it fails to reach the server. Not…",{"value":137,"source":76,"evidence":138},"Add local install documentation",[139],{"id":140,"by":141,"text":142},"7474210","tehskylark","Is there any documentation on installing this locally (without Heroku)?",[144,148],{"value":145,"source":76,"evidence":146},"Why use a poller instead of WebSockets?",[147],{"id":120,"by":121,"text":122},{"value":149,"source":76,"evidence":150},"Why choose Ember over Angular?",[151],{"id":152,"by":153,"text":154},"7473891","jlafon","Out of curiosity, why did you choose Ember? For context, my team is evaluating Angular vs. Ember. Thanks.",[156,162,172,179,186],{"value":157,"source":76,"evidence":158},"Kandan",[159],{"id":160,"by":99,"text":161},"7473335","There are tons of free apps, with contenders like Kandan (https:\u002F\u002Fgithub.com\u002Fkandanapp\u002Fkandan) if you're looking for a self-hosted or free alternative to HipChat\u002FCampfire, you…",{"value":163,"source":76,"evidence":164},"Let's Chat",[165,169],{"id":166,"by":167,"text":168},"7473707","hhaidar","Shameless plug, I've also written an app: https:\u002F\u002Fgithub.com\u002Fsdelements\u002Flets-chat It looks a little something like this: http:\u002F\u002Fi.imgur.com\u002Fdjnd0Uk.png It's still in it's…",{"id":170,"by":167,"text":171},"7474545","Check out https:\u002F\u002Fgithub.com\u002Fsdelements\u002Flets-chat, it does exactly that.",{"value":173,"source":76,"evidence":174},"Slack",[175],{"id":176,"by":177,"text":178},"7473380","bicx","I know the advantage here is the open source availability, but ever since my team joined Slack for dev team chat, we haven't looked back. So many integrations. Such awesome.",{"value":180,"source":76,"evidence":181},"IRCCloud",[182],{"id":183,"by":184,"text":185},"7473728","nilkn","I haven't seen anything that beats IRCCloud in the ease of use and UI departments, especially their mobile apps. That said, the full service is $5\u002Fmonth and so not for everybody.…",{"value":187,"source":76,"evidence":188},"Echoplex",[189],{"id":190,"by":191,"text":192},"7474565","arcameron","If you're interested in this, you might also check out https:\u002F\u002Fechoplex.us",{"comments":32,"answered":31,"key":194},[195,198,201],{"id":196,"text":197},"7473916","Thanks for reporting Steve. I'll fix it. EDIT: Should be fixed now. Thanks JangoSteve for reporting this.",{"id":199,"text":200},"7473994","Here are some problems when using websockets * Message loss * Latency * Authentication has to be done again over websockets - on every connect and reconnect. That means it is…",{"id":202,"text":203},"7474416","I live in a country where latency for websockets is 300-400ms for most hosting services (US\u002FEurope). And the most common internet connection speed 512kbps. Websockets disconnects…",{"commenters":205,"max_depth":32,"maker_replies":32,"first_comment_mins":206,"lifespan_hours":207},41,29,25,[209,211,215,219,222,225,226,228,231,233,235,238,240,242,244,246,247,251,253,255,259,261,263,265,268,272,275,277,279,282,284,285,288,290,293,294,297,299,301,303,306,308,310,313,314,317,321,322,323,326,329,332,334,337,340,342,346,348,350,355,360,363,366,369,374,377,380,383,386],[160,38,38,210,99,38],"other\u002Fneutral\u002Fidea",[212,38,38,213,214,38],"7473359","other\u002Fneutral\u002Fnone","xt",[216,38,40,217,218,38],"7473585","maker\u002Fneutral\u002Fnone","edcrfv",[220,38,44,221,110,38],"7473698","project\u002Fcritical\u002Fperformance",[223,38,38,213,224,38],"7473854","opendais",[166,38,38,213,167,38],[98,38,38,227,99,38],"commenter\u002Fcritical\u002Fidea",[229,38,38,230,167,38],"7475484","commenter\u002Fneutral\u002Fidea",[232,38,38,210,224,38],"7473902",[234,38,38,210,99,38],"7474005",[236,38,38,237,224,38],"7474083","commenter\u002Fneutral\u002Fnone",[239,38,38,213,99,38],"7474121",[241,38,38,213,224,38],"7474214",[243,38,38,213,117,38],"7475351",[105,44,44,245,106,38],"project\u002Fcritical\u002Fexecution",[109,44,44,245,110,38],[248,44,38,249,250,38],"7473735","commenter\u002Fneutral\u002Fexecution","gildas",[252,44,38,249,110,38],"7473784",[254,44,38,249,224,38],"7473954",[256,44,38,257,258,38],"7474639","commenter\u002Fneutral\u002Fdesign","dethstar",[260,44,38,249,224,38],"7474995",[262,44,38,249,110,38],"7474731",[264,44,38,249,224,38],"7475008",[266,44,38,249,267,38],"7475527","ashearer",[269,44,38,270,271,38],"7474037","other\u002Fneutral\u002Fexecution","untog",[273,44,38,274,110,38],"7474734","other\u002Fneutral\u002Fperformance",[79,44,46,276,80,38],"project\u002Fpositive\u002Fdocs",[196,44,38,278,11,44],"maker\u002Fpositive\u002Fexecution",[280,44,44,245,281,38],"7473993","_puk",[120,33,40,283,121,38],"maker\u002Fneutral\u002Fdesign",[199,33,38,283,11,44],[286,33,38,287,271,38],"7474102","commenter\u002Fcritical\u002Fperformance",[202,33,38,289,11,44],"maker\u002Fneutral\u002Fperformance",[291,33,38,292,271,38],"7474448","commenter\u002Fneutral\u002Fperformance",[57,33,38,283,11,44],[295,33,40,289,296,38],"7480457","yetihehe",[83,40,46,298,84,38],"project\u002Fpositive\u002Fidea",[133,31,40,300,134,38],"project\u002Fneutral\u002Fdesign",[90,46,40,302,91,38],"project\u002Fmixed\u002Fidea",[304,34,40,300,305,38],"7473342","ef4",[307,34,38,283,11,44],"7474044",[309,34,38,257,305,38],"7474200",[311,34,38,257,312,38],"7474542","ulisesrmzroche",[170,34,38,210,167,38],[315,34,38,316,305,38],"7478785","other\u002Fpositive\u002Fnone",[318,319,46,276,320,38],"7476774",7,"lengads",[152,32,40,217,153,38],[54,32,38,283,11,44],[324,18,46,298,325,38],"7473147","jvehent",[327,18,38,230,328,38],"7473339","welterde",[330,18,38,230,331,38],"7474528","dewey",[183,18,38,333,184,38],"other\u002Fneutral\u002Fpricing",[140,335,40,336,141,38],10,"project\u002Fneutral\u002Fdocs",[338,335,38,339,11,44],"7478997","maker\u002Fpositive\u002Fdocs",[176,341,38,213,177,38],11,[343,341,38,344,345,38],"7473863","other\u002Fneutral\u002Fprivacy","taude",[190,347,38,210,191,38],12,[116,349,44,221,117,38],13,[351,352,38,353,354,38],"7475448",14,"other\u002Fcritical\u002Fidea","robobro",[356,357,40,358,359,38],"7473092",15,"project\u002Fneutral\u002Fnone","yincrash",[361,357,38,249,362,38],"7473180","michaelmior",[364,357,38,365,11,44],"7473255","maker\u002Fneutral\u002Fdocs",[367,357,40,368,362,38],"7473369","maker\u002Fmixed\u002Fexecution",[370,371,44,372,373,38],"7473088",16,"project\u002Fcritical\u002Fidea","moron4hire",[375,371,38,237,376,38],"7473112","paukiatwee",[378,371,38,237,379,38],"7473132","chrismccord",[381,371,38,237,382,38],"7473151","mrincredibler",[384,371,38,237,385,38],"7473302","nodata",[387,371,38,237,388,38],"7473627","hackerboos",[],[391,396,401,406,411,416],{"id":392,"name":393,"points":394,"category":395},"7454242","Bread Box",199,"web_saas",{"id":397,"name":398,"points":399,"category":400},"7477095","Coding Interview Practice",172,"learning_science",{"id":402,"name":403,"points":404,"category":405},"7468328","ShareDrop",165,"dev_tools",{"id":407,"name":408,"points":409,"category":410},"7435569","2048 Tetris",160,"games",{"id":412,"name":413,"points":414,"category":415},"7442925","ngxtop",134,"infrastructure",{"id":417,"name":418,"points":419,"category":420},"7461343","Bitcoin derivatives",95,"finance_crypto",false,"v2",{"id":424,"name":5,"line":6,"ai":421,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":425,"top":18,"kw":426,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":427,"url":9,"mix":428,"praise":75,"objection":95,"sub":21},7472982,-0.05,[21,24,25,26,27],"0310000011000005130035330053503001303100",[31,32,33,34],1794036517048]