[{"data":1,"prerenderedAt":302},["ShallowReactive",2],{"project-24517925":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":39,"post_text":41,"what":42,"said":79,"maker_in_thread":176,"shape":183,"grid":188,"attempts":264,"same_week":265,"maker_shows":185,"maker_hidden":295,"reader_version":296,"card":297},"24517925","ugit","Learn Git Internals by Building Git in Python","title","Show HN: ugit – Learn Git Internals by Building Git in Python","https:\u002F\u002Fwww.leshenko.net\u002Fp\u002Fugit\u002F","leshenko.net","nikital",1600442541,2020,309,30,130,3028,5,"legend","learning_science","programming tutorial","web_app",[24,25,26,27],"git internals","learn git","python git","git tutorial","loved",0.49,{"positive":31,"neutral":18,"mixed":32,"critical":33},11,1,0,17,{"execution":36,"idea":37,"design":38},{"positive":33,"critical":33},{"positive":18,"critical":33},{"positive":18,"critical":33},[40,33,33,40,33,18,40,18,33,18,33,18,18,18,33,33,40,33,18,18,33,33,40,33,33,40,33,18,18,18],3,null,{"problem":43,"audience":51,"pricing":41,"motivation":62,"time_to_build":41,"stack":70,"openness":76,"stage":77,"team_size":78},{"value":44,"source":45,"evidence":46},"Git's real code is too complex for learning basic concepts","commenter",[47],{"id":48,"by":49,"text":50},"24524137","gumby","> The real Git code is too complicated to be useful for learning basic concepts with ease. ... It deals with a lot of edge cases that we don't care about for learning. Good…",{"value":52,"source":53,"evidence":54},"Developers learning how Git works internally","inferred",[55,59],{"id":56,"by":57,"text":58},"24523746","parksy","This is great, I appreciate the effort that has gone into it. I have used git now for about 10 years, always via cli so I am pretty fluent with it and understand intuitively what…",{"id":60,"by":11,"text":61},"24520597","Thanks! Note that ugit isn't supposed to be a custom compatible Git implementation, but rather a simplified Git-like implementation for teaching Git concepts. So even if ugit…",{"value":63,"source":64,"evidence":65},"Teaching Git concepts through code; experimenting with code-based teaching","maker",[66,67],{"id":60,"by":11,"text":61},{"id":68,"by":11,"text":69},"24526906","I've seen people's Git skills improve after I taught them Git internals, but I taught them in a standard lecture format. I didn't try teaching Git internals using code before,…",[71],{"value":72,"source":64,"evidence":73},"Python",[74],{"id":75},"post","open_source","launched","unknown",{"praise":80,"objections":113,"requests":121,"questions":144,"alternatives":153},[81,104],{"value":82,"source":45,"evidence":83},"Polished, intuitive tutorial interface",[84,88,92,96,100],{"id":85,"by":86,"text":87},"24521441","ravenide","Is this tutorial interface (navigation, diffs, files\u002Fdownloads at each step) custom made? It's pretty nice for this kind of format.",{"id":89,"by":90,"text":91},"24522551","travmatt","I was wondering the same, this format feels extremely intuitive for the material it explores. Looking at the HTML and the CSS class names I'd assume it was handmade, but it seems…",{"id":93,"by":94,"text":95},"24525559","howon92","I logged in just to upvote and comment how nice this is! Well done :)",{"id":97,"by":98,"text":99},"24526109","sorokod","Such a well thought out interface, congrats!",{"id":101,"by":102,"text":103},"24519670","at_a_remove","Maybe this is what I need to like git.",{"value":105,"source":45,"evidence":106},"Good approach to learning Git from first principles",[107,108,112],{"id":48,"by":49,"text":50},{"id":109,"by":110,"text":111},"24519419","dimator","Polished presentation! I like to learn from first principles, so this is perfect. There is also write you a git: https:\u002F\u002Fwyag.thb.lt\u002F",{"id":56,"by":57,"text":58},[114],{"value":115,"source":45,"evidence":116},"Unclear whether teaching approach is effective",[117],{"id":118,"by":119,"text":120},"24526463","necovek","I believe this is a wonderful way for someone to learn a piece of technology in depth. But I have to wonder if you actually had anyone (else!) successfully _use_ this to further…",[122,136],{"value":123,"source":45,"evidence":124},"Release the tutorial interface code",[125,128,132],{"id":126,"by":11,"text":127},"24525537","It was custom made for the tutorial. I didn't release it yet because I mostly focused on polishing the tutorial itself and not the code for the interface. Do you think people…",{"id":129,"by":130,"text":131},"24526414","burroisolator","I would certainly take a look. It would be amusing if you released it using the interface itself.",{"id":133,"by":134,"text":135},"24608247","rchoudhury","Yes, 100%. The tutorial on git is super cool, but for me the thought of constructing my own tutorials using a framework that got you here is even cooler.",{"value":137,"source":45,"evidence":138},"More tutorials in other languages",[139,140],{"id":56,"by":57,"text":58},{"id":141,"by":142,"text":143},"24519389","numbers","Looks great! I'm wondering if there are other tutorials like this but for Ruby?",[145,149],{"value":146,"source":45,"evidence":147},"Is the interface custom made?",[148],{"id":85,"by":86,"text":87},{"value":150,"source":45,"evidence":151},"Is the tutorial available on GitHub?",[152],{"id":56,"by":57,"text":58},[154,165,169],{"value":155,"source":45,"evidence":156},"Building Git by James Coglan",[157,161],{"id":158,"by":159,"text":160},"24520351","Conlectus","Looks neat! This reminds me heavily of the excellent Building Git by James Coglan[1]. From a cursory glance though, it doesn't seem to support reading packfiles. This was the big…",{"id":162,"by":163,"text":164},"24519841","pokstad","The defacto version was in Ruby: https:\u002F\u002Fshop.jcoglan.com\u002Fbuilding-git\u002F",{"value":166,"source":45,"evidence":167},"Write you a git (wyag)",[168],{"id":109,"by":110,"text":111},{"value":170,"source":45,"evidence":171},"codecrafters challenges",[172],{"id":173,"by":174,"text":175},"24519598","SomaticPirate","Reminds me of https:\u002F\u002Fcodecrafters.io\u002Fchallenges",{"comments":18,"answered":40,"key":177},[178,179,180],{"id":60,"text":61},{"id":126,"text":127},{"id":181,"text":182},"24525564","> stripped of factors that obscure the lesson Yes! I'm going to adopt that wording. Originally I tried to do a screencast about guided Git source code exploration but it didn't…",{"commenters":184,"max_depth":185,"maker_replies":18,"first_comment_mins":186,"lifespan_hours":187},24,4,117,218,[189,191,193,197,201,205,208,210,212,214,216,218,221,222,223,224,227,230,231,234,236,239,241,244,245,249,253,258,260,262],[158,33,40,190,159,33],"project\u002Fneutral\u002Fexecution",[60,33,33,192,11,32],"maker\u002Fneutral\u002Fidea",[194,33,33,195,196,33],"24520790","other\u002Fneutral\u002Fnone","microtherion",[198,32,40,199,200,33],"24520271","project\u002Fmixed\u002Fidea","codesections",[202,32,33,203,204,33],"24522712","commenter\u002Fneutral\u002Fnone","wrycoder",[109,206,18,207,110,33],2,"project\u002Fpositive\u002Fidea",[85,40,40,209,86,33],"project\u002Fneutral\u002Fdesign",[89,40,18,211,90,33],"project\u002Fpositive\u002Fdesign",[126,40,33,213,11,32],"maker\u002Fneutral\u002Fdesign",[129,40,18,215,130,33],"maker\u002Fpositive\u002Fdesign",[217,40,33,203,119,33],"24526438",[219,40,18,211,220,33],"24526965","ponytech",[133,40,18,207,134,33],[48,185,18,207,49,33],[181,185,33,192,11,32],[225,18,33,195,226,33],"24526004","spapas82",[118,228,40,229,119,33],6,"project\u002Fneutral\u002Fidea",[68,228,33,192,11,32],[232,228,18,233,119,33],"24527929","maker\u002Fpositive\u002Fnone",[56,235,18,207,57,33],7,[237,235,33,238,11,32],"24525520","maker\u002Fneutral\u002Fdocs",[173,240,33,195,174,33],8,[141,242,40,243,142,33],9,"project\u002Fneutral\u002Fnone",[162,242,33,195,163,33],[246,247,33,195,248,33],"24522390",10,"srathi",[250,31,40,251,252,33],"24532183","maker\u002Fneutral\u002Fexecution","mraza007",[254,255,33,256,257,33],"24519551",12,"other\u002Fneutral\u002Fidea","narwally",[101,259,18,207,102,33],13,[93,261,18,211,94,33],14,[97,263,18,211,98,33],15,[],[266,271,276,281,285,290],{"id":267,"name":268,"points":269,"category":270},"24564684","Mono Icons",333,"creative",{"id":272,"name":273,"points":274,"category":275},"24528479","chromecast_mpris",222,"dev_tools",{"id":277,"name":278,"points":279,"category":280},"24572449","Open-Source Memex",188,"productivity",{"id":282,"name":283,"points":284,"category":280},"24544183","Annotate.tv",154,{"id":286,"name":287,"points":288,"category":289},"24538977","rubyspeed",153,"languages",{"id":291,"name":292,"points":293,"category":294},"24525995","Visual Mind",111,"ai",false,"v2",{"id":298,"name":5,"line":6,"ai":295,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":299,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":300,"url":9,"mix":301,"praise":82,"objection":115,"sub":21},24517925,[24,25,26,27],"300305350505550030550030030555",[31,18,32,33],1794036596103]