[{"data":1,"prerenderedAt":618},["ShallowReactive",2],{"project-9522489":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":46,"post_text":48,"what":49,"said":76,"maker_in_thread":193,"shape":205,"grid":209,"attempts":577,"same_week":582,"maker_shows":33,"maker_hidden":610,"reader_version":611,"card":612},"9522489","Deck of Cards","A playing card API","title","Show HN: Deck of Cards – A playing card API","http:\u002F\u002Fdeckofcardsapi.com","deckofcardsapi.com","crobertsbmw",1431313855,2015,255,137,65,2565,3,"legend","dev_tools","web api","api",[24,25,26,27],"playing card api","deck of cards","card shuffle api","rest api","curious",-0.101,{"positive":31,"neutral":32,"mixed":33,"critical":34},9,43,4,21,77,{"execution":37,"design":39,"docs":42,"idea":44,"privacy":45},{"positive":38,"critical":33},0,{"positive":40,"critical":41},2,10,{"positive":43,"critical":38},1,{"positive":18,"critical":18},{"positive":38,"critical":33},[47,18,18,18,43,43,43,18,43,43,43,18,18,18,40,38,47,18,38,18,43,43,18,18,38,18,38,18,18,43,18,18,40,18,47,33,18,43,18,18],5,null,{"problem":48,"audience":48,"pricing":48,"motivation":50,"time_to_build":48,"stack":57,"openness":73,"stage":74,"team_size":75},{"value":51,"source":52,"evidence":53},"Wanted a simple API documented so his past self could understand it; also thought the idea was unique.","maker",[54],{"id":55,"by":11,"text":56},"9525746","Thanks for asking. I wanted to build a very simple API, and document it that my year ago self could understand it and actually figure out how to use the whole thing. I don't know…",[58,66],{"value":59,"source":60,"evidence":61},"Django","commenter",[62],{"id":63,"by":64,"text":65},"9522597","hartror","Nice one! Good on you for building a thing and putting it out there. A few comments\u002Fsuggestions: * You have DEBUG = True in your production Django config. (eg.…",{"value":67,"source":60,"evidence":68},"GitHub hosted source",[69],{"id":70,"by":71,"text":72},"9525150","spdustin","Has anyone noticed that it's on Github, and thus it wouldn't be too tough to submit an Issue or, even, a PR?","open_source","launched","solo",{"praise":77,"objections":105,"requests":142,"questions":168,"alternatives":177},[78,93],{"value":79,"source":60,"evidence":80},"Simple, clean, straightforward API design",[81,85,89],{"id":82,"by":83,"text":84},"9523217","alangpierce","While this looks to me like a pretty clean and straightforward API, it's definitely not a REST API (not that it claims to be): * The API doesn't really follow HTTP. It allows GET…",{"id":86,"by":87,"text":88},"9522801","xxbondsxx","Pretty cool! Love that theres no authentication and I can start straight from curl. Nit: drawing from an empty deck does not throw an error: > curl…",{"id":90,"by":91,"text":92},"9525805","jaideepsingh","Kudos! Simple and to the point.",{"value":94,"source":60,"evidence":95},"Good work putting it out there",[96,100,101],{"id":97,"by":98,"text":99},"9525222","aarondf","Hey, you did a thing and told people [0]! Good for you. Is it perfect? No idea, but from reading the comments here a lot of people don't think so. Who cares though [1]! You're so…",{"id":63,"by":64,"text":65},{"id":102,"by":103,"text":104},"9526051","tjbiddle","Neat! Nice work! Some are definitely criticizing, but hey - you'll always have critics. Unless they're following through with a pull-request, don't mind them. Great job on…",[106,118,126,131],{"value":107,"source":60,"evidence":108},"GET used for state-changing actions breaks HTTP semantics",[109,110,114],{"id":82,"by":83,"text":84},{"id":111,"by":112,"text":113},"9523106","vog","> Is an api that [...] uses only GET requests for [...] state changes really a horrible api? Yes, it is. Because HTTP clients (including browser) rely on the common method…",{"id":115,"by":116,"text":117},"9522913","xnxn","> Drawing a card is definitely a GET. I see where you're coming from (\"I'm drawing \u002F taking \u002F GETting some cards\"), but drawing cards is not an idempotent action. I would…",{"value":119,"source":60,"evidence":120},"Not RESTful: uses verbs in URLs and action parameters",[121,122],{"id":82,"by":83,"text":84},{"id":123,"by":124,"text":125},"9523077","nl","As a general rule \"action\" parameter is pretty non-RESTful. Sometimes RPC-style interfaces like that are ok, but don't pretend that they are RESTful. Also PUTs are supposed to be…",{"value":127,"source":60,"evidence":128},"Errors returned with success 200 and DEBUG enabled in production",[129,130],{"id":63,"by":64,"text":65},{"id":86,"by":87,"text":88},{"value":132,"source":60,"evidence":133},"Shuffle randomness and deck id entropy questioned",[134,138],{"id":135,"by":136,"text":137},"9523054","gabemart","This seems like a really cool project! But how are you shuffling the cards, and how are you identifying unique shuffled decks? It looks like the deck_id is 12 characters, numbers…",{"id":139,"by":140,"text":141},"9522598","adanto6840","What's being used for RNG?",[143,154,161],{"value":144,"source":60,"evidence":145},"Support custom deck sizes and card subsets",[146,150],{"id":147,"by":148,"text":149},"9523096","carrotleads","Sounds straightforward and simple. Well done. Would like an option to set parameters of a deck. Some card games use only 8 cards from a set and not the whole 13.",{"id":151,"by":152,"text":153},"9523143","comrh","Adding and subtracting from the starting deck would very useful. Adding Jokers, playing with only 1-10 (scopa), ect",{"value":155,"source":60,"evidence":156},"Support multiple players and passing cards",[157],{"id":158,"by":159,"text":160},"9522687","evan_","If it supported the idea of multiple players, keeping track of what cards each player has, and facilitating passing cards between players; it could be a cool backend for lots of…",{"value":162,"source":60,"evidence":163},"Return SVG card images",[164],{"id":165,"by":166,"text":167},"9522558","voltagex_","I wonder if returning SVG would be possible - https:\u002F\u002Fcode.google.com\u002Fp\u002Fvectorized-playing-cards\u002F Edit: Could be an excellent idea - 8 of Clubs is: * 28kb as a PNG. * 14kb as an…",[169,173],{"value":170,"source":60,"evidence":171},"What RNG is used for shuffling?",[172],{"id":139,"by":140,"text":141},{"value":174,"source":60,"evidence":175},"How are shuffled decks uniquely identified?",[176],{"id":135,"by":136,"text":137},[178,189],{"value":179,"source":60,"evidence":180},"Local random number generator shuffling",[181,185],{"id":182,"by":183,"text":184},"9522602","hurin","Seriously, why wouldn't you just use a local RNG? Do you realize it's actually less work than reading API documentation?",{"id":186,"by":187,"text":188},"9523043","soup10","I like the website design but shuffling cards is extremely trivial to code. Also cards are mostly used for gambling games and it's a huge security hole to use a third party api…",{"value":190,"source":60,"evidence":191},"Vectorized playing cards on Google Code",[192],{"id":165,"by":166,"text":167},{"comments":194,"answered":33,"key":195},11,[196,199,202],{"id":197,"text":198},"9522758","Good catch, haha.",{"id":200,"text":201},"9522766","I've changed the secret key that I am using in production. I wanted the settings.py to be there so it works out of the box if anyone forks it.",{"id":203,"text":204},"9522625","I just stole all the images off wikipedia. I wanted to make sure I wouldn't get sued.",{"commenters":206,"max_depth":31,"maker_replies":194,"first_comment_mins":207,"lifespan_hours":208},91,17,28,[210,212,216,219,221,224,226,229,231,234,238,241,244,247,249,252,254,256,258,260,261,264,267,270,273,275,277,280,281,284,287,289,292,294,296,299,301,304,308,310,311,314,317,320,323,325,328,330,332,335,338,340,343,345,348,350,352,354,358,360,362,364,366,368,370,373,376,379,383,386,390,392,396,399,402,404,405,408,410,414,417,420,422,425,428,431,433,436,440,442,444,447,450,454,455,458,461,465,468,469,472,475,477,479,481,484,487,490,494,496,499,501,504,506,509,511,512,516,520,523,525,527,530,534,538,542,547,548,550,552,554,556,560,562,567,570,572],[97,38,47,211,98,38],"maker\u002Fpositive\u002Fnone",[213,38,38,214,215,38],"9526166","other\u002Fneutral\u002Fnone","gooseus",[217,38,38,214,218,38],"9526728","amouat",[63,43,18,220,64,38],"project\u002Fmixed\u002Fexecution",[222,43,38,223,166,38],"9522706","commenter\u002Fneutral\u002Fnone",[225,43,38,223,64,38],"9522727",[227,43,38,214,228,38],"9523299","iamflimflam1",[230,43,38,223,64,38],"9523371",[232,43,38,214,233,38],"9524772","evanspa",[235,43,18,236,237,38],"9522872","project\u002Fneutral\u002Fdesign","Kiro",[239,43,18,236,240,38],"9522897","anilgulecha",[242,43,18,236,243,38],"9522906","kikibobo69",[245,43,18,236,246,38],"9523008","bdcravens",[123,43,43,248,124,38],"project\u002Fcritical\u002Fdesign",[250,43,38,223,251,38],"9524842","dghf",[253,43,38,223,112,38],"9526637",[255,43,38,223,251,38],"9527211",[257,43,38,223,112,38],"9528097",[259,43,38,223,251,38],"9529999",[115,43,43,248,116,38],[262,43,38,223,263,38],"9523200","ryan-allen",[265,43,38,223,266,38],"9523225","wetmore",[268,43,43,248,269,38],"9523256","Confusion",[271,43,38,223,272,38],"9526060","whyaduck",[274,43,18,236,269,38],"9523245",[276,43,38,214,64,38],"9523384",[278,43,18,236,279,38],"9522993","crimsonalucard",[111,43,43,248,112,38],[282,43,43,248,283,38],"9523110","alexhill",[285,43,43,248,286,38],"9523066","Drakim",[288,43,43,248,64,38],"9523075",[290,43,18,236,291,38],"9523759","jalfresi",[293,43,38,223,64,38],"9523772",[295,43,38,223,291,38],"9524191",[297,43,38,223,298,38],"9524260","couchand",[300,43,38,223,291,38],"9524342",[302,43,43,248,303,38],"9525568","thedufer",[305,43,47,306,307,38],"9526576","project\u002Fpositive\u002Fdocs","iamleppert",[309,43,38,223,112,38],"9526638",[82,40,43,248,83,38],[312,40,18,236,313,38],"9523302","salex89",[315,40,18,236,316,38],"9523320","SilasX",[318,40,18,319,313,38],"9523367","project\u002Fneutral\u002Fidea",[321,40,18,319,322,38],"9523618","oneeyedpigeon",[324,40,18,236,64,38],"9523326",[326,40,18,236,327,38],"9523365","vladharbuz",[329,40,38,223,64,38],"9523405",[331,40,38,223,327,38],"9523422",[333,40,18,236,334,38],"9529324","thetrav",[336,40,18,236,337,38],"9523355","geon",[339,40,43,248,327,38],"9523368",[341,40,38,223,342,38],"9523544","lmm",[344,40,38,223,337,38],"9523695",[346,40,38,223,347,38],"9523771","michaelmior",[349,40,38,223,342,38],"9525628",[351,40,38,223,347,38],"9527115",[353,40,38,223,337,38],"9523702",[355,40,47,356,357,38],"9523693","project\u002Fpositive\u002Fdesign","storea",[359,40,18,236,291,38],"9523709",[361,40,38,223,291,38],"9523891",[363,40,38,223,64,38],"9523941",[365,40,38,223,291,38],"9524041",[367,40,38,223,64,38],"9524109",[369,40,38,223,291,38],"9524302",[371,40,38,223,372,38],"9529381","cdcarter",[374,40,18,236,375,38],"9526151","Fogest",[377,40,18,236,378,38],"9526557","MarkyC4",[380,18,18,381,382,38],"9522666","project\u002Fneutral\u002Fnone","flashman",[384,18,38,214,385,38],"9522672","sturmeh",[387,18,43,388,389,38],"9522679","project\u002Fcritical\u002Fexecution","fosk",[197,18,38,391,11,43],"maker\u002Fneutral\u002Fexecution",[393,18,18,394,395,38],"9522729","project\u002Fneutral\u002Fexecution","ChristianBundy",[397,18,43,398,246,38],"9523020","project\u002Fcritical\u002Fprivacy",[400,18,43,398,401,38],"9522736","ctekin",[200,18,38,403,11,43],"project\u002Fneutral\u002Fprivacy",[165,33,18,236,166,38],[406,33,18,236,407,38],"9522935","Everlag",[409,33,18,236,166,38],"9523205",[411,33,18,412,413,38],"9523012","project\u002Fmixed\u002Fdesign","evv",[415,33,18,381,416,38],"9525716","jessaustin",[418,33,18,236,419,38],"9523958","polshaw",[186,47,18,421,187,38],"project\u002Fmixed\u002Fidea",[423,47,38,223,424,38],"9523616","nly",[426,47,38,223,427,38],"9523917","ivanche",[429,47,38,223,430,38],"9525384","sesquipedalian",[432,47,38,223,427,38],"9526061",[434,47,38,223,435,38],"9525510","g8gggu89",[437,438,18,381,439,38],"9522606",6,"packetized",[70,441,38,214,71,38],7,[443,441,38,214,416,38],"9525165",[445,441,38,214,446,38],"9526476","Retra",[448,441,38,214,449,38],"9526493","joshmn",[451,452,18,236,453,38],"9522534",8,"javajosh",[203,452,38,236,11,43],[456,452,18,236,457,38],"9522629","lectrick",[459,452,18,236,460,38],"9522773","jdeisenberg",[462,31,18,463,464,38],"9522538","project\u002Fneutral\u002Fdocs","jwcrux",[466,31,38,467,11,43],"9522631","maker\u002Fneutral\u002Fdocs",[86,41,18,220,87,38],[470,194,43,388,471,38],"9522698","jonobird1",[473,194,43,388,474,38],"9522728","bt3",[476,194,38,391,11,43],"9522781",[478,194,38,391,11,43],"9522780",[158,480,18,319,159,38],12,[482,480,18,319,483,38],"9522752","sirclueless",[485,480,38,486,11,43],"9522795","maker\u002Fneutral\u002Fidea",[488,480,18,319,489,38],"9522866","lann",[491,492,18,319,493,38],"9524675",13,"Navarr",[139,495,18,403,140,38],14,[497,495,18,381,498,38],"9522649","Walkman",[500,495,43,398,483,38],"9522690",[502,495,43,398,503,38],"9523188","sneak",[102,505,47,211,103,38],15,[507,505,38,223,508,38],"9526159","nicobn",[147,510,18,319,148,38],16,[151,207,18,319,152,38],[513,514,18,319,515,38],"9522954",18,"bloodspatter504",[517,514,47,518,519,38],"9522985","project\u002Fpositive\u002Fidea","d0m",[521,514,38,223,522,38],"9529227","MeghdeepRay",[524,514,38,223,519,38],"9529875",[135,526,18,403,136,38],19,[528,526,18,394,529,38],"9523065","kornish",[531,532,47,518,533,38],"9524555",20,"brettkc",[535,34,43,536,537,38],"9524537","project\u002Fcritical\u002Fidea","listic",[539,540,47,518,541,38],"9523177",22,"drinchev",[543,544,18,545,546,38],"9525097",23,"maker\u002Fneutral\u002Fnone","blt",[55,544,38,467,11,43],[182,549,43,536,183,38],24,[551,549,38,536,11,43],"9522652",[553,549,18,319,183,38],"9525838",[90,555,47,356,91,38],25,[557,558,43,536,559,38],"9523873",26,"murbard2",[561,558,38,319,11,43],"9525788",[563,564,47,565,566,38],"9522742",27,"project\u002Fpositive\u002Fnone","mattkenefick",[568,208,43,388,569,38],"9522711","recursive",[571,208,38,391,11,43],"9522873",[573,574,38,575,576,38],"9525516",29,"other\u002Fneutral\u002Fprivacy","leovander",[578,581],{"id":579,"t":580,"points":505,"comments":31},"9462184",1430345651,{"id":4,"t":12,"points":14,"comments":15},[583,588,593,598,602,606],{"id":584,"name":585,"points":586,"category":587},"9531265","Ephemeral P2P",803,"languages",{"id":589,"name":590,"points":591,"category":592},"9521177","gnu-pricing",160,"other",{"id":594,"name":595,"points":596,"category":597},"9532467","Neural Slime Volleyball",147,"games",{"id":599,"name":600,"points":601,"category":20},"9532951","Pyre",107,{"id":603,"name":604,"points":605,"category":20},"9513784","Slacker",90,{"id":607,"name":608,"points":609,"category":20},"9522885","Departure",78,false,"v2",{"id":613,"name":5,"line":6,"ai":610,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":614,"top":18,"kw":615,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":616,"url":9,"mix":617,"praise":79,"objection":107,"sub":21},9522489,-0.1,[24,25,26,27],"5333111311133320530311330303313323543133",[31,32,33,34],1794036531192]