[{"data":1,"prerenderedAt":170},["ShallowReactive",2],{"project-9613456":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":27,"sentiment":28,"stance_mix":29,"scored_comments":32,"aspects":33,"strip":36,"post_text":38,"what":39,"said":55,"maker_in_thread":107,"shape":110,"grid":115,"attempts":133,"same_week":134,"maker_shows":111,"maker_hidden":163,"reader_version":164,"card":165},"9613456","Graph-Reply","Graph-based data storage REPL in C","title","Show HN: Graph-based data storage REPL in C","https:\u002F\u002Fgithub.com\u002Fincrediblesound\u002FGraph-Reply","github.com","jhedwards",1432752014,2015,39,7,731,2565,29,"shown","data","graph database","cli",[21,24,25,26],"c repl","graph storage","data storage","mixed",0,{"positive":30,"neutral":30,"mixed":28,"critical":31},2,1,5,{"execution":34,"idea":35},{"positive":31,"critical":31},{"positive":31,"critical":28},[37,28,37,32,32,28,31],3,null,{"problem":38,"audience":38,"pricing":38,"motivation":40,"time_to_build":38,"stack":47,"openness":53,"stage":54,"team_size":54},{"value":41,"source":42,"evidence":43},"Learning C","maker",[44],{"id":45,"by":11,"text":46},"9615171","Thanks for your feedback! I spent a lot of time chasing down memory leaks with this project, which was fun, but clearly that's not the last of the hurdles with C. My dream is to…",[48],{"value":49,"source":42,"evidence":50},"C",[51],{"id":52},"post","open_source","unknown",{"praise":56,"objections":69,"requests":88,"questions":97,"alternatives":98},[57],{"value":58,"source":59,"evidence":60},"Commenters call the project neat and encourage continued C learning","commenter",[61,65],{"id":62,"by":63,"text":64},"9615079","jotux","Some general feedback: In C you separate your implementation from your interface with header files. If you include .c files in .c files it will end up causing a lot of problems…",{"id":66,"by":67,"text":68},"9615508","_sh","As well as jotux's excellent reply, I'd like to add that clint, valgrind and friends help out a lot when starting out with C. Learning to use these tools well (by using them all…",[70,80,84],{"value":71,"source":59,"evidence":72},"Multiple C safety issues: memory leaks, fixed-size sscanf buffers, unsafe input handling",[73,76],{"id":74,"by":63,"text":75},"9615279","I do a lot of embedded C, so I generally avoid dynamically allocating memory, but when I do the way I try to avoid memory leaks is to always try to allocate and free in the same…",{"id":77,"by":78,"text":79},"9615828","axoltl","C is not a safe language sort of by definition, so you always have to consider all the possibilities. For example, you use sscanf in places, with fixed sized buffers. What…",{"value":81,"source":59,"evidence":82},"Includes .c files instead of using header files, making include order matter",[83],{"id":62,"by":63,"text":64},{"value":85,"source":59,"evidence":86},"Code produces compiler warnings; use -Wall",[87],{"id":62,"by":63,"text":64},[89,93],{"value":90,"source":59,"evidence":91},"Restructure memory allocation so malloc and free share a scope",[92],{"id":74,"by":63,"text":75},{"value":94,"source":59,"evidence":95},"Use header files per source file",[96],{"id":62,"by":63,"text":64},[],[99,103],{"value":100,"source":59,"evidence":101},"valgrind and clint for C memory debugging",[102],{"id":66,"by":67,"text":68},{"value":104,"source":59,"evidence":105},"JPL C coding standard",[106],{"id":74,"by":63,"text":75},{"comments":31,"answered":28,"key":108},[109],{"id":45,"text":46},{"commenters":111,"max_depth":112,"maker_replies":31,"first_comment_mins":113,"lifespan_hours":114},6,4,275,12,[116,118,120,121,123,127,131],[62,28,37,117,63,28],"maker\u002Fneutral\u002Fexecution",[45,28,28,119,11,31],"maker\u002Fpositive\u002Fidea",[74,28,37,117,63,28],[66,28,32,122,67,28],"project\u002Fpositive\u002Fidea",[124,28,32,125,126,28],"9616064","maker\u002Fpositive\u002Fexecution","LukeShu",[128,28,28,129,130,28],"9616380","other\u002Fneutral\u002Fnone","e12e",[77,31,31,132,78,28],"maker\u002Fcritical\u002Fexecution",[],[135,139,144,149,154,158],{"id":136,"name":137,"points":138,"category":20},"9588128","Visa Explorer",582,{"id":140,"name":141,"points":142,"category":143},"9604203","jsblocks",337,"languages",{"id":145,"name":146,"points":147,"category":148},"9583384","jsgraphs",328,"dev_tools",{"id":150,"name":151,"points":152,"category":153},"9610509","An old rotary phone converted into a mobile phone",222,"hardware",{"id":155,"name":156,"points":157,"category":148},"9583976","InboxSDK",176,{"id":159,"name":160,"points":161,"category":162},"9598972","Typedetail.com",137,"creative",false,"v2",{"id":166,"name":5,"line":6,"ai":163,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":28,"top":18,"kw":167,"maker":11,"domain":10,"tier":19,"attempts":28,"strip":168,"url":9,"mix":169,"praise":58,"objection":71,"sub":21},9613456,[21,24,25,26],"3035501",[30,30,28,31],1794036531749]