[{"data":1,"prerenderedAt":285},["ShallowReactive",2],{"project-11064507":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":35,"aspects":36,"strip":41,"post_text":43,"what":44,"said":77,"maker_in_thread":158,"shape":166,"grid":169,"attempts":249,"same_week":250,"maker_shows":185,"maker_hidden":278,"reader_version":279,"card":280},"11064507","The Deadlock Empire","Slay dragons, master concurrency","title","Show HN: The Deadlock Empire – Slay dragons, master concurrency","https:\u002F\u002Fdeadlockempire.github.io","deadlockempire.github.io","prvak",1455015290,2016,269,30,83,2264,4,"legend","games","educational puzzle game","web_app",[24,25,26,27,28],"concurrency","deadlock","multithreading","programming game","learn threading","loved",0.5,{"positive":32,"neutral":18,"mixed":33,"critical":34},9,2,0,15,{"idea":37,"design":39,"docs":40},{"positive":38,"critical":34},3,{"positive":34,"critical":34},{"positive":34,"critical":34},[34,34,34,34,34,34,34,38,34,42,42,34,34,38,34,34,38,42,42,42,38,34,42,38,34,42,42,38,34,42],5,null,{"problem":45,"audience":57,"pricing":43,"motivation":65,"time_to_build":43,"stack":73,"openness":74,"stage":75,"team_size":76},{"value":46,"source":47,"evidence":48},"Teaches concurrency pitfalls and deadlocks through gameplay","inferred",[49,53],{"id":50,"by":51,"text":52},"11065354","BackwardSpy","Took me about an hour to beat it, I'm still fairly new to concurrent programming so this was pretty great for showing me the pitfalls you can come across.",{"id":54,"by":55,"text":56},"11070259","brobinson",">Seems like you have to trick the threads in the correct sequence in order to introduce deadlocks This manually \"trickery\" you are introducing is you intentionally replicating…",{"value":58,"source":47,"evidence":59},"Programmers learning concurrent programming",[60,61],{"id":50,"by":51,"text":52},{"id":62,"by":63,"text":64},"11067444","alex_g","This is really gonna help me study for my OS midterm tomorrow- thanks!",{"value":66,"source":67,"evidence":68},"Built at HackCambridge hackathon, won first prize","commenter",[69],{"id":70,"by":71,"text":72},"11065133","TimFogarty","Hey! This was built at HackCambridge (and it won first prize)! Great to see it here - it's such a cool project.",[],"unknown","launched","team",{"praise":78,"objections":92,"requests":107,"questions":123,"alternatives":128},[79,88],{"value":80,"source":67,"evidence":81},"Fun and educational way to learn concurrency pitfalls",[82,86,87],{"id":83,"by":84,"text":85},"11064758","nbaksalyar","This is awesome! I love this kind of games - they are very fun and educational at the same time. If you're like me, you might enjoy these as well: 1. Microcorruption -…",{"id":50,"by":51,"text":52},{"id":54,"by":55,"text":56},{"value":89,"source":67,"evidence":90},"Good for building paranoia about multithreaded code",[91],{"id":54,"by":55,"text":56},[93,100],{"value":94,"source":67,"evidence":95},"Models only linearizable memory, not reorderings",[96],{"id":97,"by":98,"text":99},"11065315","ziedaniel1","This is really cool! However, I was somewhat disappointed that it only models a linearizable memory (each low-level operation atomically acts on the same global state). It would…",{"value":101,"source":67,"evidence":102},"Unclear overall context and goal of the game",[103],{"id":104,"by":105,"text":106},"11069828","rajangdavis","What language is this in? Never really tried anything like this before, but just went through the entire game and beat it. Seems like you have to trick the threads in the correct…",[108,116],{"value":109,"source":67,"evidence":110},"Add memory model and reordering support, e.g. write buffers and barriers",[111,112],{"id":97,"by":98,"text":99},{"id":113,"by":114,"text":115},"11066425","JoshTriplett","You could add a CPU write buffer or cache lines as an intermediate step between the code and memory, and allow the player to choose when those get flushed to memory, constrained…",{"value":117,"source":67,"evidence":118},"Show fixed code after solving each bug",[119],{"id":120,"by":121,"text":122},"11066268","jader201","This is pretty nice, well done! One suggestion: it would be nice if you somehow integrated the fix for each bug into the game somehow. At the very least, in the congratulations…",[124],{"value":125,"source":67,"evidence":126},"What language is the game written in",[127],{"id":104,"by":105,"text":106},[129,133,140,144,151],{"value":130,"source":67,"evidence":131},"Microcorruption",[132],{"id":83,"by":84,"text":85},{"value":134,"source":67,"evidence":135},"Ruby Warrior",[136],{"id":137,"by":138,"text":139},"11064870","WillAbides","Ruby Warrior is another great one. I had a lot of fun with it when I needed to learn Ruby for work. https:\u002F\u002Fwww.bloc.io\u002Fruby-warrior",{"value":141,"source":67,"evidence":142},"Over the Wire",[143],{"id":83,"by":84,"text":85},{"value":145,"source":67,"evidence":146},"Scalatron",[147],{"id":148,"by":149,"text":150},"11065726","moondowner","Scalatron is another great one https:\u002F\u002Fscalatron.github.io\u002F \"a free, open-source programming game in which bots, written in Scala, compete in a virtual arena for energy and…",{"value":152,"source":67,"evidence":153},"Untrusted",[154],{"id":155,"by":156,"text":157},"11066080","cmpb","Continuing the theme of replying to this post with good examples of these kinds of game: https:\u002F\u002Falexnisnevich.github.io\u002Funtrusted\u002F (\"a user javascript adventure game\")",{"comments":33,"answered":34,"key":159},[160,163],{"id":161,"text":162},"11065484","Thanks! We agree, memory models\u002Finstruction reordering is where it gets really fun and educational. The complexity scared us and we wanted to make the game usable as soon as we…",{"id":164,"text":165},"11066072","Yep. My creative process: \"Need quick & nice fantasy-styled logo\" => \"Hey, I remember Wales has a dragon on its flag\" => \"Ooh, and Wiki Commons even has a CC0 SVG! Done.\"",{"commenters":167,"max_depth":18,"maker_replies":33,"first_comment_mins":168,"lifespan_hours":35},25,69,[170,172,173,177,179,182,183,184,187,189,191,194,198,200,204,208,210,211,213,217,221,224,226,230,234,237,238,241,244,247],[83,34,34,171,84,34],"other\u002Fneutral\u002Fnone",[137,34,34,171,138,34],[174,34,34,175,176,34],"11065317","other\u002Fcritical\u002Fnone","hobs",[178,34,34,171,138,34],"11066113",[180,34,34,171,181,34],"11065087","richardwigley",[148,34,34,171,149,34],[155,34,34,171,156,34],[97,185,38,186,98,34],1,"project\u002Fmixed\u002Fidea",[161,185,34,188,11,185],"maker\u002Fneutral\u002Fidea",[113,185,42,190,114,34],"project\u002Fpositive\u002Fidea",[192,33,42,190,193,34],"11067252","agentgt",[195,33,34,196,197,34],"11067558","commenter\u002Fneutral\u002Fnone","Chlorus",[199,33,34,196,193,34],"11067964",[201,38,38,202,203,34],"11065121","project\u002Fneutral\u002Fdesign","kasbah",[205,38,34,206,207,34],"11065793","other\u002Fneutral\u002Fdesign","m-app",[164,38,34,209,11,185],"maker\u002Fneutral\u002Fdesign",[120,18,38,186,121,34],[70,42,42,212,71,34],"maker\u002Fpositive\u002Fnone",[214,42,42,215,216,34],"11065714","project\u002Fpositive\u002Fnone","refrigerator",[218,219,42,190,220,34],"11064857",6,"geonnave",[104,222,38,223,105,34],7,"project\u002Fneutral\u002Fdocs",[54,222,34,225,55,34],"commenter\u002Fpositive\u002Fidea",[227,228,42,215,229,34],"11064719",8,"Zekio",[231,228,38,232,233,34],"11065071","project\u002Fneutral\u002Fnone","th0br0",[235,228,34,196,236,34],"11067015","JustSomeNobody",[50,32,42,215,51,34],[239,240,42,215,138,34],"11064846",10,[242,240,38,232,243,34],"11065205","pc86",[245,240,34,246,138,34],"11066125","commenter\u002Fpositive\u002Fnone",[62,248,42,215,63,34],11,[],[251,256,261,265,269,273],{"id":252,"name":253,"points":254,"category":255},"11068902","TIL",819,"productivity",{"id":257,"name":258,"points":259,"category":260},"11071916","Deepstream.io",301,"infrastructure",{"id":262,"name":263,"points":264,"category":260},"11072359","SocketCluster.io",217,{"id":266,"name":267,"points":268,"category":260},"11074537","LogDNA",196,{"id":270,"name":271,"points":272,"category":255},"11043502","Twtxt",154,{"id":274,"name":275,"points":276,"category":277},"11064270","BitBar",149,"dev_tools",false,"v2",{"id":281,"name":5,"line":6,"ai":278,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":282,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":283,"url":9,"mix":284,"praise":80,"objection":94,"sub":21},11064507,[24,25,26,27,28],"000000030550030035553053055305",[32,18,33,34],1794036540793]