[{"data":1,"prerenderedAt":425},["ShallowReactive",2],{"project-13628157":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":34,"aspects":35,"strip":45,"post_text":47,"what":48,"said":84,"maker_in_thread":211,"shape":223,"grid":228,"attempts":386,"same_week":387,"maker_shows":41,"maker_hidden":417,"reader_version":418,"card":419},"13628157","JSONlite","A simple, serverless, zero-configuration JSON document store","title","Show HN: JSONlite – A simple, serverless, zero-configuration JSON document store","https:\u002F\u002Fgithub.com\u002Fnodesocket\u002Fjsonlite","github.com","nodesocket",1486904927,2017,74,64,601,2242,27,"notable","data","document store","cli",[24,25,26,27],"json document store","embedded database","json storage","sqlite alternative","roasted",-0.526,{"positive":31,"neutral":32,"mixed":31,"critical":33},1,11,21,34,{"execution":36,"idea":37,"performance":40,"docs":42,"design":43},{"positive":31,"critical":31},{"positive":38,"critical":39},0,7,{"positive":38,"critical":41},4,{"positive":38,"critical":39},{"positive":38,"critical":44},2,[31,38,31,31,31,38,31,38,46,31,38,46,31,46,31,46,31,46,46,38,38,31,38,38,31,38,31,38,31,38,38,31,46,31,31,31,38,46,46,31],3,null,{"problem":49,"audience":47,"pricing":47,"motivation":47,"time_to_build":47,"stack":61,"openness":81,"stage":82,"team_size":83},{"value":50,"source":51,"evidence":52},"Storing JSON documents locally without a database server","inferred",[53,57],{"id":54,"by":55,"text":56},"13628437","edraferi","I agree that \"serverless\" now mainly means \"Function as a Service.\" The goal here is convey that there is no server component of the database, similar to SQLite and unlike…",{"id":58,"by":59,"text":60},"13630532","cocktailpeanuts","Of course there is no server, since we are talking about local. I agree with others that the title is misleading. I looked at the project for a while to realize that it's just a…",[62,74],{"value":63,"source":64,"evidence":65},"Bash","commenter",[66,70],{"id":67,"by":68,"text":69},"13628372","sigmonsays","This is 200 lines of bash using the file system as a database. The term document store implies a database which this is not. How is this different than just writing files to a…",{"id":71,"by":72,"text":73},"13628593","dunkey123","I don't like that it is just a composition of bash and the filesystem. I'd just do this: id=$(uuidgen) echo '{\"hi\":\"mom\"}' | jq . > id cat id",{"value":75,"source":64,"evidence":76},"Python JSON module",[77],{"id":78,"by":79,"text":80},"13628393","mtolan","I think your title might not be the best; * Serverless typically implies something accessible from more than the host you're on * It's not zero configuration, there's at least 1…","open_source","launched","unknown",{"praise":85,"objections":93,"requests":148,"questions":174,"alternatives":195},[86],{"value":87,"source":64,"evidence":88},"Maker takes criticism graciously and fixes reported bugs",[89],{"id":90,"by":91,"text":92},"13638090","CJefferson","Just wanted to say, glad to see these are being fixed. My initial message was a little harsh -- although github makes it hard to tell if you are making a new library for fun, or…",[94,108,119,133,137],{"value":95,"source":64,"evidence":96},"Title's 'serverless' and 'zero-configuration' claims are misleading",[97,98,99,100,104],{"id":78,"by":79,"text":80},{"id":54,"by":55,"text":56},{"id":58,"by":59,"text":60},{"id":101,"by":102,"text":103},"13629195","vikingcaffiene","First I want to say this is really cool. Thanks for taking the time to make it and I'll definitely give a test drive. That said, it's not zero configuration and your title is…",{"id":105,"by":106,"text":107},"13629125","sscarduzio","lol why is this so high in the front page? BTW this is NOT SERVERLESS therefore click bait in my book",{"value":109,"source":64,"evidence":110},"Thin implementation; a bash wrapper over the filesystem with little added value",[111,112,116],{"id":67,"by":68,"text":69},{"id":113,"by":114,"text":115},"13628631","camus2","The point is the project seems a bit low-effort. The most complicated thing in that bash script is argument processing. What is the added value of that project? does it come up…",{"id":117,"by":91,"text":118},"13628328","If you are going to invoke the sacred name of 'sqlite', then I expect to see rock-solid code and quality testing. Instead, there are two tiny tests, and I found a couple of…",{"value":120,"source":64,"evidence":121},"Filesystem performance degrades with many files in one directory",[122,126,129],{"id":123,"by":124,"text":125},"13628694","noonespecial","Hint: If you really want to use your filesystem as a database (and don't mind the haters, there's a long and storied history of doing just this), make sure you break it up into…",{"id":127,"by":91,"text":128},"13628778","With 1, you are trusting the directory returned by uuid will be unique --it should be, but it might not be, in particular if it is based on time and I run in two threads. With 4,…",{"id":130,"by":131,"text":132},"13629158","tyingq","Even if it's running on a filesystem that deals with it well, standard utilities like 'ls' don't deal with it well, as the default behavior is to sort. You end up having to look…",{"value":134,"source":64,"evidence":135},"Insufficient tests and error handling",[136],{"id":117,"by":91,"text":118},{"value":138,"source":64,"evidence":139},"SQLite with JSON1 already covers this",[140,144],{"id":141,"by":142,"text":143},"13629752","NelsonMinar","Why not just use SQLite? Its JSON1 extension is pretty good, and then you get all the rest of SQLite's goodness as part of the package. https:\u002F\u002Fsqlite.org\u002Fjson1.html",{"id":145,"by":146,"text":147},"13629019","bvinc","Wouldn't you be much better off storing JSON in a SQLite table?",[149,156,163],{"value":150,"source":64,"evidence":151},"Shard files into subdirectories by UUID prefix",[152,153],{"id":78,"by":79,"text":80},{"id":154,"by":131,"text":155},"13628844","On 4, the point might be that thousands of files in a single directory can create performance issues with readdir(). The usual workaround to that is to create subdirectories…",{"value":157,"source":64,"evidence":158},"Add an append function",[159],{"id":160,"by":161,"text":162},"13629271","Tepix","Cool! Can you add an append function?",{"value":164,"source":64,"evidence":165},"Rename to avoid clash with the R jsonlite package",[166,170],{"id":167,"by":168,"text":169},"13629943","nerdponx","There's already an R package called jsonlite: https:\u002F\u002Fcran.r-project.org\u002Fpackage=jsonlite",{"id":171,"by":172,"text":173},"13633296","laughfactory","Also the name of a very popular R package. Maybe call it JSONdb? Or JSONstore?",[175,183,190],{"value":176,"source":64,"evidence":177},"What are the use cases for this project?",[178,179],{"id":67,"by":68,"text":69},{"id":180,"by":181,"text":182},"13628961","drinchev","This reminds me of NodeJS configstore[1]. I would be really happy to learn what are the use-cases for this tool, since using it via bash is actually an overkill. 1:…",{"value":184,"source":64,"evidence":185},"What does sandboxing the current working directory mean?",[186],{"id":187,"by":188,"text":189},"13628463","jwilk","> JSONlite sandboxes the current working directory similar to SQLite. Huh, what does that mean?",{"value":191,"source":64,"evidence":192},"Why not store JSON in SQLite instead?",[193,194],{"id":145,"by":146,"text":147},{"id":141,"by":142,"text":143},[196,203,207],{"value":197,"source":64,"evidence":198},"SQLite with JSON1 extension",[199,200],{"id":141,"by":142,"text":143},{"id":201,"by":114,"text":202},"13628432","Serverless means anything really, a cli app is now serverless. I didn't know I was writing serverless applications for 20 years then. Serverless was already a bad buzz word, it…",{"value":204,"source":64,"evidence":205},"Amazon DynamoDB",[206],{"id":78,"by":79,"text":80},{"value":208,"source":64,"evidence":209},"configstore",[210],{"id":180,"by":181,"text":182},{"comments":212,"answered":31,"key":213},5,[214,217,220],{"id":215,"text":216},"13628339","Create some issues and pull requests and help out. :-)",{"id":218,"text":219},"13628371","Good point on 2 and 3. Should just involve checking the previous commands return code before echoing the uuid. I'll get that patched up and ship a new version in a bit. Not sure…",{"id":221,"text":222},"13632438","Heads up, just fixed the bug where providing invalid json to set would write an empty file with a uuid filename to the data directory. Now providing invalid json to set errors…",{"commenters":224,"max_depth":225,"maker_replies":212,"first_comment_mins":226,"lifespan_hours":227},41,8,53,31,[229,231,233,236,240,242,246,247,251,254,256,257,258,260,261,264,267,270,274,276,280,282,285,288,289,292,295,298,301,303,307,309,312,316,317,320,322,324,326,328,329,333,336,337,340,341,344,346,348,350,352,357,358,359,363,365,366,368,371,373,376,379,382,384],[117,38,31,230,91,38],"project\u002Fcritical\u002Fexecution",[215,38,38,232,11,31],"commenter\u002Fneutral\u002Fnone",[234,38,38,232,235,38],"13628500","rad_gruchalski",[237,38,31,238,239,38],"13628979","project\u002Fcritical\u002Fidea","throwanem",[218,38,38,241,11,31],"maker\u002Fneutral\u002Fexecution",[243,38,31,244,245,38],"13628740","project\u002Fcritical\u002Fperformance","jakewins",[127,38,31,244,91,38],[248,38,38,249,250,38],"13629086","commenter\u002Fneutral\u002Fexecution","avip",[252,38,38,249,253,38],"13629275","sz4kerto",[255,38,38,249,91,38],"13629298",[154,38,31,244,131,38],[221,38,38,241,11,31],[90,38,212,259,91,38],"maker\u002Fpositive\u002Fexecution",[78,31,31,238,79,38],[262,31,38,263,11,31],"13628413","project\u002Fneutral\u002Fdesign",[265,31,31,266,114,38],"13628576","maker\u002Fcritical\u002Fdocs",[268,31,38,269,11,31],"13629293","commenter\u002Fneutral\u002Fdocs",[271,31,38,272,273,38],"13630079","commenter\u002Fcritical\u002Fdocs","sciurus",[54,31,46,275,55,38],"project\u002Fneutral\u002Fdocs",[277,31,31,278,279,38],"13628482","project\u002Fcritical\u002Fdocs","hashkb",[281,31,46,275,131,38],"13628934",[283,31,46,275,284,38],"13629080","deif",[286,31,38,269,287,38],"13629289","evanweaver",[58,31,31,278,59,38],[290,31,46,275,291,38],"13637656","phamilton",[293,31,31,278,294,38],"13638458","jeshan25",[296,31,38,269,297,38],"13638482","mjn",[299,31,46,275,300,38],"13629221","icebraining",[123,44,46,302,124,38],"project\u002Fneutral\u002Fperformance",[304,44,38,305,306,38],"13628701","other\u002Fneutral\u002Fnone","TheGreatPotatoe",[308,44,38,305,131,38],"13628910",[310,44,38,305,311,38],"13629280","manojlds",[313,44,38,314,315,38],"13629091","other\u002Fneutral\u002Fperformance","PretzelFisch",[130,44,31,244,131,38],[318,44,46,302,319,38],"13629648","e12e",[321,44,38,314,131,38],"13631147",[323,44,38,314,319,38],"13631934",[325,44,38,314,131,38],"13632086",[327,44,38,314,319,38],"13637225",[67,46,31,238,68,38],[330,46,38,331,332,38],"13628430","commenter\u002Fneutral\u002Fidea","pmelendez",[334,46,38,335,279,38],"13628472","commenter\u002Fcritical\u002Fnone",[113,46,31,238,114,38],[338,41,38,305,339,38],"13629082","Waterluvian",[201,212,31,238,114,38],[342,212,38,269,343,38],"13629176","dchest",[345,212,38,269,287,38],"13629294",[347,212,38,269,343,38],"13629789",[349,212,38,272,114,38],"13629796",[351,212,38,269,343,38],"13629853",[353,354,31,355,356,38],"13628323",6,"project\u002Fcritical\u002Fdesign","PythonicAlpha",[187,39,46,275,188,38],[71,225,31,238,72,38],[360,361,31,278,362,38],"13629851",9,"agounaris",[141,364,31,238,142,38],10,[167,32,31,278,168,38],[145,367,31,355,146,38],12,[369,367,38,370,315,38],"13629122","commenter\u002Fneutral\u002Fdesign",[372,367,38,305,114,38],"13629140",[180,374,46,375,181,38],13,"project\u002Fneutral\u002Fidea",[101,377,46,378,102,38],14,"project\u002Fmixed\u002Fdocs",[171,380,46,381,172,38],15,"project\u002Fneutral\u002Fnone",[160,383,46,381,161,38],16,[105,385,31,278,106,38],17,[],[388,393,398,403,408,413],{"id":389,"name":390,"points":391,"category":392},"13642662","HTML Reference",728,"dev_tools",{"id":394,"name":395,"points":396,"category":397},"13628522","Rumuki",405,"security_privacy",{"id":399,"name":400,"points":401,"category":402},"13623852","Beehive",247,"infrastructure",{"id":404,"name":405,"points":406,"category":407},"13616751","Aragon",191,"web_saas",{"id":409,"name":410,"points":411,"category":412},"13642967","illustrated-algorithms",187,"learning_science",{"id":414,"name":415,"points":416,"category":392},"13628530","DeepUI Programming Studio",186,false,"v2",{"id":420,"name":5,"line":6,"ai":417,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":421,"top":18,"kw":422,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":423,"url":9,"mix":424,"praise":87,"objection":95,"sub":21},13628157,-0.53,[24,25,26,27],"1011101031031313133001001010100131110331",[31,32,31,33],1793990955007]