[{"data":1,"prerenderedAt":264},["ShallowReactive",2],{"project-3464607":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":44,"post_text":45,"what":46,"said":68,"maker_in_thread":119,"shape":123,"grid":127,"attempts":228,"same_week":229,"maker_shows":40,"maker_hidden":257,"reader_version":258,"card":259},"3464607","Fisher–Yates shuffle visualization","A visual explanation of Fisher–Yates shuffle","title","Show HN: A visual explanation of Fisher–Yates shuffle","http:\u002F\u002Fbost.ocks.org\u002Fmike\u002Fshuffle\u002F","bost.ocks.org","mbostock",1326560924,2012,176,37,100,1677,6,"notable","learning_science","algorithm visualization","web_app",[24,25,26,27],"fisher-yates shuffle","shuffle algorithm","visual explanation","d3.js","curious",0,{"positive":31,"neutral":32,"mixed":33,"critical":34},3,10,2,5,20,{"docs":37,"execution":39,"idea":41,"design":42,"performance":43},{"positive":29,"critical":38},4,{"positive":29,"critical":40},1,{"positive":29,"critical":29},{"positive":33,"critical":29},{"positive":40,"critical":29},[31,31,29,29,29,29,29,31,31,40,40,40,31,40,31,31,29,29,29,29,29,31,31,29,29,29,29,29,29,34,40,31,31,34,29,34,31],null,{"problem":45,"audience":45,"pricing":45,"motivation":45,"time_to_build":45,"stack":47,"openness":66,"stage":67,"team_size":66},[48,55],{"value":49,"source":50,"evidence":51},"JavaScript","maker",[52],{"id":53,"by":11,"text":54},"3465615","Point taken; I'll keep this in mind in future examples. I find it extremely tempting to write JavaScript as compact as possible, sometimes at the expense of readability. Writing…",{"value":27,"source":56,"evidence":57},"commenter",[58,62],{"id":59,"by":60,"text":61},"3465374","jnbiche","I love the d3.js data visualization framework, which is what Mike Bostock (the creator of d3, as it happens) used the create this page. Well done, Mike. Does anyone have…",{"id":63,"by":64,"text":65},"3465268","justincormack","It uses d3.js, which pretty much requires a modern browser with SVG. I suspect you will find it doesn't work on IE8.","unknown","launched",{"praise":69,"objections":92,"requests":98,"questions":107,"alternatives":118},[70,85],{"value":71,"source":56,"evidence":72},"Good educational visualization of shuffle methods",[73,77,81],{"id":74,"by":75,"text":76},"3465009","gerggerg","Beautiful. I love the visual demonstrations of the less efficient methods as well. This is a great learning tool for a super common programming problem. One general…",{"id":78,"by":79,"text":80},"3465085","barik","I agree, if the intent is for pedagogical purposes (as in this case), the use of pre-increment and post-increment operators should probably be avoided. A good rule of thumb is…",{"id":82,"by":83,"text":84},"3464902","substack","Thanks for posting this! I just updating my own silly shuffle module (https:\u002F\u002Fgithub.com\u002Fsubstack\u002Fnode-deck) to work using the last in-place algorithm for uniform shuffling and I…",{"value":86,"source":56,"evidence":87},"Works on iPhone",[88],{"id":89,"by":90,"text":91},"3465021","mef","Great post, and extra points for visualizations that work on the iPhone.",[93],{"value":94,"source":56,"evidence":95},"Code example uses pre\u002Fpost-increment operators that hinder readability",[96,97],{"id":74,"by":75,"text":76},{"id":78,"by":79,"text":80},[99],{"value":100,"source":56,"evidence":101},"Visualizations of other algorithms such as graph search or clustering",[102,103],{"id":59,"by":60,"text":61},{"id":104,"by":105,"text":106},"3465439","petercooper","Clustering can be visualized quite well and there are several families of algorithms that could be run over similar data, such as k-means clustering or DBSCAN.",[108],{"value":109,"source":56,"evidence":110},"Why are the cards criss-crossed in the shuffled deck",[111,115],{"id":112,"by":113,"text":114},"3464721","iamwil","I have a question. Why does the shuffled deck have the cards criss-crossed with its neighbors? I'm not sure what it's suppose to represent.",{"id":116,"by":11,"text":117},"3464746","The angle of the lines encodes the value of the card. The lowest-value cards lean left, and the highest-value cards lean right. The in-order deck, therefore, neatly fans from…",[],{"comments":33,"answered":33,"key":120},[121,122],{"id":53,"text":54},{"id":116,"text":117},{"commenters":124,"max_depth":34,"maker_replies":33,"first_comment_mins":125,"lifespan_hours":126},27,36,241,[128,130,131,135,137,140,143,145,149,152,156,159,162,165,167,171,175,178,180,182,184,185,188,191,195,198,200,202,204,207,209,211,214,216,219,221,224],[74,29,31,129,75,29],"project\u002Fmixed\u002Fdocs",[78,29,31,129,79,29],[132,29,29,133,134,29],"3465128","commenter\u002Fneutral\u002Fdocs","Jagat",[136,29,29,133,75,29],"3465221",[138,29,29,133,139,29],"3465762","Jare",[141,29,29,142,75,29],"3466694","commenter\u002Fneutral\u002Fnone",[53,29,29,144,11,40],"maker\u002Fneutral\u002Fdocs",[146,29,31,147,148,29],"3466087","project\u002Fneutral\u002Fdocs","nhebb",[150,29,31,147,151,29],"3493657","Timothee",[153,40,40,154,155,29],"3464908","project\u002Fcritical\u002Fdocs","benmathes",[157,40,40,154,158,29],"3464930","teej",[160,40,40,154,161,29],"3465103","philh",[163,40,31,147,164,29],"3465275","burgerbrain",[166,40,40,154,155,29],"3469114",[168,33,31,169,170,29],"3465281","project\u002Fneutral\u002Fexecution","josephmoniz",[172,33,31,173,174,29],"3465499","project\u002Fneutral\u002Fidea","psykotic",[176,33,29,142,177,29],"3473169","longlivedeath",[179,33,29,142,174,29],"3477649",[181,33,29,142,177,29],"3483817",[59,31,29,183,60,29],"other\u002Fneutral\u002Fnone",[104,31,29,183,105,29],[186,38,31,173,187,29],"3464802","lnanek",[189,34,31,173,190,29],"3464800","manifold",[192,34,29,193,194,29],"3464837","commenter\u002Fneutral\u002Fidea","skimbrel",[196,34,29,193,197,29],"3464989","klochner",[199,34,29,193,190,29],"3465060",[201,34,29,193,197,29],"3465080",[203,34,29,193,190,29],"3465108",[205,34,29,193,206,29],"3465708","tel",[89,18,34,208,90,29],"project\u002Fpositive\u002Fdesign",[63,18,40,210,64,29],"project\u002Fcritical\u002Fexecution",[112,212,31,213,113,29],7,"project\u002Fneutral\u002Fdesign",[215,212,31,213,113,29],"3464738",[217,212,34,208,218,29],"3464784","CountHackulus",[116,212,29,220,11,40],"maker\u002Fneutral\u002Fdesign",[82,222,34,223,83,29],8,"project\u002Fpositive\u002Fperformance",[225,226,31,169,227,29],"3506005",9,"joechapman",[],[230,235,240,245,249,253],{"id":231,"name":232,"points":233,"category":234},"3477081","HackPad",209,"productivity",{"id":236,"name":237,"points":238,"category":239},"3469347","CSSDeck",165,"dev_tools",{"id":241,"name":242,"points":243,"category":244},"3460224","Twostroke",75,"languages",{"id":246,"name":247,"points":243,"category":248},"3471405","DirtyShare","web_saas",{"id":250,"name":251,"points":252,"category":248},"3458214","Scrollsy",73,{"id":254,"name":255,"points":256,"category":248},"3473220","Hello Bar Stop SOPA\u002FPIPA notification bar",57,false,"v2",{"id":260,"name":5,"line":6,"ai":257,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":261,"maker":11,"domain":10,"tier":19,"attempts":29,"strip":262,"url":9,"mix":263,"praise":71,"objection":94,"sub":21},3464607,[24,25,26,27],"3300000331113133000003300000051335053",[31,32,33,34],1793990877943]