[{"data":1,"prerenderedAt":372},["ShallowReactive",2],{"project-24676774":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":43,"post_text":46,"what":47,"said":66,"maker_in_thread":217,"shape":230,"grid":234,"attempts":323,"same_week":334,"maker_shows":259,"maker_hidden":364,"reader_version":365,"card":366},"24676774","Concise Encoding","a friendly data format for human and machine","title","Show HN: Concise Encoding – a friendly data format for human and machine","https:\u002F\u002Fconcise-encoding.org","concise-encoding.org","kstenerud",1601790306,2020,78,46,806,3028,27,"notable","languages","data serialization format","library",[24,25,26,27,28],"data format","serialization","binary format","text format","json alternative","curious",-0.351,{"positive":32,"neutral":33,"mixed":34,"critical":35},1,11,0,10,22,{"design":38,"idea":40,"docs":42},{"positive":32,"critical":39},6,{"positive":34,"critical":41},4,{"positive":34,"critical":34},[32,34,44,34,34,32,44,32,34,34,34,34,32,44,34,44,34,44,44,32,32,34,32,34,44,34,44,45,32,34,32,34,34,44,34,34,44,34,44,32],3,5,null,{"problem":48,"audience":46,"pricing":46,"motivation":58,"time_to_build":46,"stack":62,"openness":63,"stage":64,"team_size":65},{"value":49,"source":50,"evidence":51},"Data formats are either readable text or efficient binary, and lack native types","maker",[52,55],{"id":53,"by":11,"text":54},"24677841","If you have ideas or comments on the design of the format, please let me know! I've been working on this for 3 years and am getting close to release, but there are always blind…",{"id":56,"by":11,"text":57},"24678939","It's versioned, so if we come up with significant improvements later, we can bump the version. This format fills two voids: 1. The lack of native types in most of the other…",{"value":59,"source":50,"evidence":60},"Tired of encoding on top of encodings like base64 to move data between systems",[61],{"id":56,"by":11,"text":57},[],"unknown","prototype","solo",{"praise":67,"objections":83,"requests":133,"questions":160,"alternatives":182},[68,76],{"value":69,"source":70,"evidence":71},"Hexfloat support is a good choice for parsing and readability","commenter",[72],{"id":73,"by":74,"text":75},"24680247","formerly_proven","I really like the inclusion of hexfloats (beware of C++ iostream bugs, though), because they're wayyyyy easier to parse correctly than decimal floats (way faster, too). As an…",{"value":77,"source":70,"evidence":78},"Interesting work in a space that needs more attention",[79],{"id":80,"by":81,"text":82},"24679735","mpweiher","Glad to see more work in this space. You might spend a little more saying what makes your approach unique: \"Use text based formats that are bloated and slow, or use binary…",[84,103,114,125],{"value":85,"source":70,"evidence":86},"Optional behaviour in the spec, especially for NUL, will cause interoperability problems",[87,91,95,99],{"id":88,"by":89,"text":90},"24678379","viraptor","So while I like the idea of asn-like multiple encoding standards, there are some fragments in the description that make me just see potential issues: > Support for the NUL…",{"id":92,"by":93,"text":94},"24679280","pdimitar","As a programmer who had to wrestle with like 30 formats during his career, here's one piece of non-negotiable requirement: ---------- NO. OPTIONAL. PARTS. OF. THE. STANDARD! (And…",{"id":96,"by":97,"text":98},"24679451","tux3","Votes on comments are not public, so let me agree loudly: Many people will not want to use a format with implementation defined or optional behavior. That way lies pain.",{"id":100,"by":101,"text":102},"24681255","sitkack","Optionality is a bigger problem than people realize, these special cases force “conditional pollution”, and when the optionality is implemented with exceptions, you now have to…",{"value":104,"source":70,"evidence":105},"Too many similar formats already exist; the format adds to format creep",[106,110],{"id":107,"by":108,"text":109},"24678768","spacemanmatt","How does this address format creep? Why is it going to be better to support all the existing formats and now this one too? Does it really add that much? The first formats filled…",{"id":111,"by":112,"text":113},"24682032","08-15","Seriously, another one? https:\u002F\u002Fxkcd.com\u002F927\u002F Why was CBOR not good enough this time? Still not enough string types? Oh, indeed, CBOR doesn't have markup, whatever that means.",{"value":115,"source":70,"evidence":116},"Built-in URL and UUID types add complexity and parsing edge cases",[117,121],{"id":118,"by":119,"text":120},"24677422","IshKebab","Native support for complex types like URLs and UUIDs is a mistake. It just makes it more complicated and harder to interoperate with other formats like JSON. Look at all the…",{"id":122,"by":123,"text":124},"24679632","ysleepy","URL parsing is a nightmare. There are lots of RFCs, but the real world is full of quirks. This will lead to edge case differences between the implementations. Also, which URI…",{"value":126,"source":70,"evidence":127},"No compact way to represent arrays of homogeneous records or deduplicate map keys",[128,129],{"id":88,"by":89,"text":90},{"id":130,"by":131,"text":132},"24679717","grncdr","Not the GP but regarding no references for map keys; I can imagine that this would be an issue when representing a list of maps with uniform keys. E.g. a list of 1000 points with…",[134,138,145,153],{"value":135,"source":70,"evidence":136},"Build a compliance test tool for implementations",[137],{"id":92,"by":93,"text":94},{"value":139,"source":70,"evidence":140},"Add a related work section and a formal grammar",[141],{"id":142,"by":143,"text":144},"24680426","carapace","In a project like this I look for a \"related work\" section (that shows you know the context and are at least not reinventing [square] wheels and have some reason why your thing…",{"value":146,"source":70,"evidence":147},"Clarify what makes it different from existing formats like Ion, CBOR, and EDN",[148,149],{"id":80,"by":81,"text":82},{"id":150,"by":151,"text":152},"24680162","wsargent","How does this compare to Amazon Ion? https:\u002F\u002Famzn.github.io\u002Fion-docs\u002F",{"value":154,"source":70,"evidence":155},"Reconsider the byte array annotation style",[156],{"id":157,"by":158,"text":159},"24681511","seanalltogether","It's weird that you use a completely different annotation style for byte arrays. Why not just use bytes = u8[10 ff 38 9a dd 00 4f 4f 91]",[161,168,175],{"value":162,"source":70,"evidence":163},"How does it compare to EDN, Transit or Fressian",[164],{"id":165,"by":166,"text":167},"24679911","valw","Are you aware of EDN, Transit or Fressian, which IMO improve a lot on the currently common approaches to encoding (JSON \u002F YAML)? If so, how does Concise Encoding differentiate…",{"value":169,"source":70,"evidence":170},"How are multi-line strings written",[171],{"id":172,"by":173,"text":174},"24680181","evnix","how do you do multi line strings, the thing I don't like about YAML is there are 101 ways to do a multiline string.",{"value":176,"source":70,"evidence":177},"Does the format validate that a URL is a URL",[178],{"id":179,"by":180,"text":181},"24678762","Aeolun","Personally I think it’s nice, though I think they’re basically syntactic sugar for a string and byte array. Does the format validate that a URL is actually a URL?",[183,191,195,199,203,210],{"value":184,"source":70,"evidence":185},"CBOR",[186,190],{"id":187,"by":188,"text":189},"24677542","jiehong","CBOR is filling the same requirements and is isomorphic to JSON.",{"id":111,"by":112,"text":113},{"value":192,"source":70,"evidence":193},"Amazon Ion",[194],{"id":150,"by":151,"text":152},{"value":196,"source":70,"evidence":197},"EDN, Transit and Fressian",[198],{"id":165,"by":166,"text":167},{"value":200,"source":70,"evidence":201},"Property lists",[202],{"id":80,"by":81,"text":82},{"value":204,"source":70,"evidence":205},"Bencode",[206],{"id":207,"by":208,"text":209},"24677370","dfischer","Hmm seems like a battery packed version of bencoding but maybe someone can enlighten further?",{"value":211,"source":70,"evidence":212},"Red language",[213],{"id":214,"by":215,"text":216},"24677993","9214","The basic premise (The friendly data format for human & machine) instantly reminded me of Red language [1], which, by the virtue of homoiconicity, is also its own data format…",{"comments":218,"answered":219,"key":220},18,9,[221,224,227],{"id":222,"text":223},"24678916","I'm still on the fence with NUL to be honest... I may remove it, but for now I want to garner discussion. I'm not sure how disallowing a reference for a map key would cause…",{"id":225,"text":226},"24679504","Right. No optional stuff then!",{"id":228,"text":229},"24679863","Hmm yes I see how that could be useful as a kind of \"pointer-to-key\" setup. A key that is a ref to a non-keyable type would be invalid anyway... I've added array types for arrays…",{"commenters":231,"max_depth":39,"maker_replies":218,"first_comment_mins":232,"lifespan_hours":233},28,190,25,[235,237,239,241,243,244,245,247,249,250,253,255,258,261,264,266,269,271,272,274,276,277,279,281,282,283,284,286,289,291,293,295,298,299,301,302,304,307,309,310,312,315,316,318,319,321],[88,34,32,236,89,34],"project\u002Fcritical\u002Fdesign",[222,34,34,238,11,32],"maker\u002Fneutral\u002Fnone",[92,34,44,240,93,34],"maker\u002Fneutral\u002Fdesign",[96,34,34,242,97,34],"commenter\u002Fneutral\u002Fdesign",[225,34,34,240,11,32],[130,34,32,236,131,34],[228,34,34,246,11,32],"project\u002Fneutral\u002Fdesign",[248,34,44,246,89,34],"24681845",[100,34,32,236,101,34],[251,34,34,242,252,34],"24683655","ethbr0",[214,32,34,254,215,34],"other\u002Fneutral\u002Fnone",[256,32,34,254,257,34],"24680089","spfzero",[53,259,34,260,11,32],2,"project\u002Fneutral\u002Fidea",[262,259,32,236,263,34],"24678371","bb88",[265,259,34,246,11,32],"24678881",[267,259,44,246,268,34],"24679749","mkesper",[270,259,34,246,11,32],"24679968",[165,259,44,260,166,34],[273,259,34,260,11,32],"24680167",[142,259,44,275,143,34],"project\u002Fneutral\u002Fdocs",[157,259,44,246,158,34],[80,44,32,278,81,34],"project\u002Fcritical\u002Fidea",[280,44,34,260,11,32],"24680127",[107,41,32,278,108,34],[56,41,34,260,11,32],[187,45,32,278,188,34],[285,45,34,260,11,32],"24677773",[287,39,44,246,288,34],"24677687","x3ro",[290,39,34,260,11,32],"24677765",[150,292,44,260,151,34],7,[294,292,34,246,11,32],"24680776",[73,296,45,297,74,34],8,"project\u002Fpositive\u002Fdesign",[118,219,32,236,119,34],[300,219,34,246,11,32],"24677789",[122,219,32,236,123,34],[303,219,34,246,11,32],"24679752",[305,219,34,242,306,34],"24682509","benibela",[308,219,34,246,11,32],"24685094",[179,219,44,246,180,34],[311,219,34,246,11,32],"24685106",[313,219,34,242,314,34],"24678901","tasogare",[207,35,44,260,208,34],[317,35,34,260,11,32],"24677805",[172,33,44,275,173,34],[320,33,34,275,11,32],"24680642",[111,322,32,278,112,34],12,[324,327,330,331],{"id":325,"t":326,"points":41,"comments":34},"23958303",1595781979,{"id":328,"t":329,"points":259,"comments":32},"23966723",1595867867,{"id":4,"t":12,"points":14,"comments":15},{"id":332,"t":333,"points":32,"comments":34},"37676601",1695830214,[335,340,345,350,355,360],{"id":336,"name":337,"points":338,"category":339},"24696658","TypeLit",1589,"productivity",{"id":341,"name":342,"points":343,"category":344},"24707407","Buy For Life",1392,"web_saas",{"id":346,"name":347,"points":348,"category":349},"24671525","Igel",405,"ai",{"id":351,"name":352,"points":353,"category":354},"24696145","Plausible",351,"data",{"id":356,"name":357,"points":358,"category":359},"24671259","vision_blender",268,"dev_tools",{"id":361,"name":362,"points":363,"category":339},"24709393","nb",240,false,"v2",{"id":367,"name":5,"line":6,"ai":364,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":368,"top":18,"kw":369,"maker":11,"domain":10,"tier":19,"attempts":41,"strip":370,"url":9,"mix":371,"praise":69,"objection":85,"sub":21},24676774,-0.35,[24,25,26,27,28],"1030013100001303033110103035101003003031",[32,33,34,35],1794036596763]