[{"data":1,"prerenderedAt":280},["ShallowReactive",2],{"project-9513784":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":36,"aspects":37,"strip":42,"post_text":43,"what":44,"said":81,"maker_in_thread":157,"shape":162,"grid":166,"attempts":242,"same_week":243,"maker_shows":271,"maker_hidden":272,"reader_version":273,"card":274},"9513784","Slacker","A command-line Slack chat client","title","Show HN: I made a command-line Slack chat client","https:\u002F\u002Fgithub.com\u002FTidalLabs\u002FSlacker","github.com","bkanber",1431114971,2015,90,37,293,2565,12,"notable","dev_tools","terminal chat client","cli",[24,25,26,27,28],"slack","terminal chat","ncurses","command line","php","mixed",0.158,{"positive":32,"neutral":33,"mixed":34,"critical":35},5,3,0,2,10,{"idea":38,"execution":40,"design":41},{"positive":39,"critical":34},1,{"positive":35,"critical":39},{"positive":34,"critical":39},[34,34,32,34,34,33,32,33,34,32,32,34,33,34,34,34,39,34,34,34,34,34,34,34,39,34,34,34,34,34,32],null,{"problem":45,"audience":43,"pricing":43,"motivation":54,"time_to_build":43,"stack":65,"openness":78,"stage":79,"team_size":80},{"value":46,"source":47,"evidence":48},"Using Slack from the terminal instead of the web or desktop app","inferred",[49,51],{"id":50},"post",{"id":52,"by":11,"text":53},"9514454","That's true! But there are two reasons I didn't go that route: 1) I wanted to build this ;) 2) Slack's IRC integration does not mark messages as read until you exit the IRC…",{"value":55,"source":56,"evidence":57},"Educational pet project; wanted to build it and try PHP ncurses","maker",[58,59,62],{"id":52,"by":11,"text":53},{"id":60,"by":11,"text":61},"9514419","I actually intended to write a comment in the README about my choice of language, but as things go, I forgot. This was, first and foremost, an educational pet project for me. I…",{"id":63,"by":11,"text":64},"9514616","Thanks, appreciate it! I considered Go for this too, but wanted to use PHP because you don't see too many curses PHP apps around, and I wanted to observe one for myself ;)",[66,73],{"value":67,"source":56,"evidence":68},"PHP",[69,70],{"id":63,"by":11,"text":64},{"id":71,"by":11,"text":72},"9514833","Honestly PHP was a breeze! There's only a couple of things that stood out to me as suboptimal: - PHP ncurses is not well documented beyond just function signatures. Of course,…",{"value":74,"source":56,"evidence":75},"ncurses (PHP extension)",[76,77],{"id":71,"by":11,"text":72},{"id":60,"by":11,"text":61},"open_source","launched","solo",{"praise":82,"objections":98,"requests":122,"questions":130,"alternatives":138},[83,91],{"value":84,"source":85,"evidence":86},"Clean, well-commented code","commenter",[87],{"id":88,"by":89,"text":90},"9514267","imothee","I was building something similar in Go for the exact same reason so looks like there is validation for the product at least! Great work on shipping, incredibly well commented and…",{"value":92,"source":85,"evidence":93},"Building for fun and learning is a good reason to ship",[94],{"id":95,"by":96,"text":97},"9514538","jwise0","I upvoted this comment because I really like the idea of \"I built this because I wanted to\". I like the idea of Show HNs as an \"I made this thing for me, and not for any other…",[99,114],{"value":100,"source":85,"evidence":101},"PHP is the wrong language for a command-line tool",[102,106,110],{"id":103,"by":104,"text":105},"9514332","masukomi","i was all interested until i saw PHP. That's not a dis on PHP. It's just that PHP is so not the right tool for the job for a command line client. Sure, it appears you can coerce…",{"id":107,"by":108,"text":109},"9514342","tshadwell","I'd agree with you, but somehow arcanist manages to be written in PHP.",{"id":111,"by":112,"text":113},"9514424","babuskov","This reminds me of people who say: \"JavaScript is designed for embedding in web pages. Node.js developers are crazy too.\" The Right Tool for the job is not the same for everyone.…",{"value":115,"source":56,"evidence":116},"Ncurses extension must be installed separately, hurting deployment",[117,118],{"id":60,"by":11,"text":61},{"id":119,"by":120,"text":121},"9514625","aikah","> I \u002Flike\u002F building things in the wrong language. That's not the issue here. You could have written that in shell script it wouldn't matter. Just that PHP(+ all the extensions…",[123],{"value":124,"source":85,"evidence":125},"Mark messages as read when the client is away",[126],{"id":127,"by":128,"text":129},"9514892","zobzu","2) is a pretty good point actually, maybe slack could integrate that in their backend - basically if the irc client is set as away do not mark read. if not or returns from away,…",[131],{"value":132,"source":85,"evidence":133},"How was working with PHP, pros and cons?",[134],{"id":135,"by":136,"text":137},"9514735","xasos","How did you like working with PHP for the project? Pros\u002Fcons?",[139,146],{"value":140,"source":85,"evidence":141},"Slack's IRC gateway with IRC curses or Emacs clients",[142],{"id":143,"by":144,"text":145},"9514425","LukeHoersten","Slack has an IRC backend and IRC has CLI and Curses interfaces you can use (even Emacs interfaces).",{"value":147,"source":85,"evidence":148},"Python for ncurses tools",[149,153],{"id":150,"by":151,"text":152},"9514460","ssunstruck","Why not use Python then? Its implementation of arrays\u002Fdictionaries is much less duct-tapey.",{"id":154,"by":155,"text":156},"9518834","tonyarkles","For me, my go-to tool for stuff like this is Python. It's been a while since I've done an ncurses tool with it though, I'm not sure how painful\u002Funpainful it would be. It's easy…",{"comments":32,"answered":39,"key":158},[159,160,161],{"id":52,"text":53},{"id":63,"text":64},{"id":71,"text":72},{"commenters":163,"max_depth":32,"maker_replies":32,"first_comment_mins":164,"lifespan_hours":165},22,98,169,[167,169,171,173,177,180,182,186,189,193,195,197,199,200,202,206,209,211,213,215,219,221,223,224,226,228,230,233,234,235,238],[143,34,34,168,144,34],"other\u002Fneutral\u002Fidea",[52,34,34,170,11,39],"maker\u002Fneutral\u002Fidea",[95,34,32,172,96,34],"maker\u002Fpositive\u002Fidea",[174,34,34,175,176,34],"9515438","other\u002Fneutral\u002Fnone","PhasmaFelis",[178,34,34,175,179,34],"9515994","stephenr",[127,34,33,181,128,34],"project\u002Fneutral\u002Fidea",[183,34,32,184,185,34],"9516102","maker\u002Fpositive\u002Fnone","jjawssd",[187,34,33,181,188,34],"9516461","chimeracoder",[190,34,34,191,192,34],"9518111","commenter\u002Fneutral\u002Fnone","xrstf",[194,34,32,184,144,34],"9553755",[88,39,32,196,89,34],"maker\u002Fpositive\u002Fexecution",[63,39,34,198,11,39],"maker\u002Fneutral\u002Fdesign",[135,35,33,198,136,34],[71,35,34,201,11,39],"project\u002Fpositive\u002Fdesign",[203,35,34,204,205,34],"9516494","other\u002Fneutral\u002Fdesign","joshfriend",[207,35,34,175,208,34],"9517645","svisser",[103,33,39,210,104,34],"project\u002Fcritical\u002Fdesign",[107,33,34,212,108,34],"commenter\u002Fcritical\u002Fdesign",[214,33,34,212,104,34],"9514369",[216,33,34,217,218,34],"9515408","commenter\u002Fneutral\u002Fdesign","GrinningFool",[220,33,34,212,104,34],"9514365",[222,33,34,217,112,34],"9514447",[154,33,34,217,155,34],[60,33,34,225,11,39],"project\u002Fmixed\u002Fdesign",[119,33,39,227,120,34],"project\u002Fcritical\u002Fexecution",[229,33,34,191,11,39],"9514639",[231,33,34,191,232,34],"9514742","albedoa",[111,33,34,212,112,34],[150,33,34,217,151,34],[236,33,34,237,112,34],"9515982","commenter\u002Fpositive\u002Fdesign",[239,33,32,240,241,34],"9514561","project\u002Fpositive\u002Fexecution","meritt",[],[244,249,253,258,263,267],{"id":245,"name":246,"points":247,"category":248},"9531265","Ephemeral P2P",803,"languages",{"id":250,"name":251,"points":252,"category":20},"9522489","Deck of Cards",255,{"id":254,"name":255,"points":256,"category":257},"9521177","gnu-pricing",160,"other",{"id":259,"name":260,"points":261,"category":262},"9532467","Neural Slime Volleyball",147,"games",{"id":264,"name":265,"points":266,"category":20},"9532951","Pyre",107,{"id":268,"name":269,"points":270,"category":20},"9522885","Departure",78,4,false,"v2",{"id":275,"name":5,"line":6,"ai":272,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":276,"top":18,"kw":277,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":278,"url":9,"mix":279,"praise":84,"objection":100,"sub":21},9513784,0.16,[24,25,26,27,28],"0050035305503000100000001000005",[32,33,34,35],1793990924272]