[{"data":1,"prerenderedAt":434},["ShallowReactive",2],{"project-15950325":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":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":44,"post_text":45,"what":46,"said":94,"maker_in_thread":235,"shape":245,"grid":248,"attempts":395,"same_week":396,"maker_shows":38,"maker_hidden":426,"reader_version":427,"card":428},"15950325","pm-as-code","Project Management as Code with Graphviz","title","Show HN: Project Management as Code with Graphviz","https:\u002F\u002Fzwischenzugs.com\u002F2017\u002F12\u002F18\u002Fproject-management-as-code-with-graphviz\u002F","zwischenzugs.com","zwischenzug",1513586768,2017,122,64,345,2242,16,"notable","productivity","project management","library",[24,21,25,26],"graphviz","dependency graph","task planning","mixed",0.313,{"positive":30,"neutral":31,"mixed":32,"critical":33},14,7,0,5,26,{"idea":36,"design":39,"docs":40,"execution":42},{"positive":37,"critical":38},9,2,{"positive":32,"critical":38},{"positive":41,"critical":32},3,{"positive":32,"critical":43},1,[32,32,33,33,41,32,41,33,33,43,33,33,32,32,32,33,41,41,41,43,32,32,32,32,41,33,32,33,41,33,32,33,43,33,41,32,33,43,32,32],null,{"problem":47,"audience":62,"pricing":45,"motivation":73,"time_to_build":45,"stack":81,"openness":92,"stage":93,"team_size":93},{"value":48,"source":49,"evidence":50},"Visualising complex task and project dependencies in a version-controlled, code-based form.","inferred",[51,55,59],{"id":52,"by":53,"text":54},"15960562","lostapathy","Glad to see somebody else trying something like this. I was manually maintaining some charts like this for a while at a prior job and was toying with productizing it, it's super…",{"id":56,"by":57,"text":58},"15959492","partycoder","I am not sure a GraphViz digraph is the way to go. If you want to keep track of what is done and what is remaining eventually you will need to update that file. This will quickly…",{"id":60,"by":11,"text":61},"15960490","I think version control conflicts are good in this case - they indicate the level to which there is conflict within the team around what the project consists of.",{"value":63,"source":49,"evidence":64},"Teams and individuals managing complex projects with many dependencies.",[65,66,70],{"id":52,"by":53,"text":54},{"id":67,"by":68,"text":69},"15961108","alexatkeplar","Great write-up! I tried something similar for modelling out the Snowplow release dependency chain (https:\u002F\u002Fgithub.com\u002Fsnowplow\u002F) - I gave up and started looking at SaaS…",{"id":71,"by":11,"text":72},"15960880","For simpler projects, yes. The more complex and shared the project the more value there is in documenting and sharing dependency relationships in code, as described in the article.",{"value":74,"source":75,"evidence":76},"Managing complex project dependencies better than lists allow; the maker found DOT graphs useful at work.","maker",[77,80],{"id":78,"by":11,"text":79},"15960662","We should talk. I was thinking size of node could == some kind of measure of size\u002Frisk\u002Fsignificance. There's lots of things one might want to visualise, so some collaborated…",{"id":71,"by":11,"text":72},[82],{"value":83,"source":75,"evidence":84},"Graphviz (DOT language)",[85,88],{"id":86,"by":11,"text":87},"15950331","Code here: https:\u002F\u002Fgithub.com\u002Fianmiell\u002Fpm-as-code I'm not a GV expert, so contributions\u002Fsuggestions\u002Fcritiques welcomed.",{"id":89,"by":90,"text":91},"15959072","IanCal","Nice stuff. You might want to look at ordering things left to right with ``` rankdir=LR; ``` You can also force particular groups to be on the same row\u002Fcolumn (rank). Also…","open_source","unknown",{"praise":95,"objections":128,"requests":154,"questions":187,"alternatives":195},[96,113],{"value":97,"source":98,"evidence":99},"Dependency graphs are a useful way to plan complex projects better than task lists.","commenter",[100,104,108,109],{"id":101,"by":102,"text":103},"15960332","jurasource","What a great idea. I really struggle to plan sprints and projects just using lists. Also MS Project etc are just far too complicated for my small projects. I actually resorted to…",{"id":105,"by":106,"text":107},"15961551","chrisbro","This is great, thanks for sharing. I stumbled across this idea myself since no todo manager really represented complex dependencies of tasks - the \"list\" format is just so…",{"id":67,"by":68,"text":69},{"id":110,"by":111,"text":112},"15962019","jk4930","Pragmatic approach, I like that and am willing to play with it. Combining it with https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCritical_path_method could yield interesting results.",{"value":114,"source":98,"evidence":115},"Well written and makes Graphviz approachable.",[116,120,124],{"id":117,"by":118,"text":119},"15958884","devnonymous","Thanks for writing the post. Although I've heard of graphviz (and dot) before, I didn't take the time to read up on them since the docs were so dense. Thanks for making this…",{"id":121,"by":122,"text":123},"15958910","realsneil","Really interesting and well written post. Certainly has started some cogs turning in my mind. Just a note, I think there is some text missing or leftover at the end of the…",{"id":125,"by":126,"text":127},"15953305","akras14","Cool post, really enjoyed it!",[129,140,147],{"value":130,"source":98,"evidence":131},"Overkill for simple projects; a checklist is enough.",[132,136],{"id":133,"by":134,"text":135},"15960746","FLUX-YOU","Most of these graphs don't seem to have too many connections. Wouldn't a checklist layout be much better?",{"id":137,"by":138,"text":139},"15959275","joshsyn","Seems really overkill",{"value":141,"source":98,"evidence":142},"Storing task status in a Graphviz file causes version control conflicts.",[143,144],{"id":56,"by":57,"text":58},{"id":145,"by":57,"text":146},"15961728","Version control conflicts in this case don't necessarily map to disagreement. Imagine 2 team members that are in agreement add leaf 2 nodes. That would trigger a version control…",{"value":148,"source":98,"evidence":149},"The toy example implies dependencies that do not exist.",[150],{"id":151,"by":152,"text":153},"15958936","xchaotic","Thank you, very interesting example, but I don't necessarily see the added value in the graph form, for this particular example - it implies dependencies where there are none -…",[155,163,176],{"value":156,"source":98,"evidence":157},"Support durations and critical path calculation.",[158,162],{"id":159,"by":160,"text":161},"15959279","gadders","This is just a PERT chart, right? [1] Only difference is you don't appear to have any durations on the tasks. If you added that you would be able to calculate your critical path.…",{"id":110,"by":111,"text":112},{"value":164,"source":98,"evidence":165},"Export to or from other formats such as OmniGraffle, Gantt or issue trackers.",[166,169,173],{"id":167,"by":11,"text":168},"15959435","Can I export it to code?",{"id":170,"by":171,"text":172},"15960298","doug1001","nice one. Dot (both the layout engine and the graph DSL) is used in OmniGraffle, so you can import the dot files like you made into OG and edit them further, either manually or…",{"id":174,"by":57,"text":175},"15959421","Gantt charts also represent dependencies among tasks. They add more information as well: time estimation, milestones, asignees, etc. Gantt charts receive some criticism since…",{"value":177,"source":98,"evidence":178},"A deeper Graphviz guide for casual users.",[179,183],{"id":180,"by":181,"text":182},"15959460","Shoothe","I'd be interested although I already know it, it would be handy to have an approachable guide for others to point to.",{"id":184,"by":185,"text":186},"15959632","jesse_m","I'd be interested in a graphviz post from the POV of the casual user. Great post by the way!",[188],{"value":189,"source":98,"evidence":190},"Can it export to code or other tools?",[191,194],{"id":192,"by":11,"text":193},"15959111","Can it export to code?",{"id":167,"by":11,"text":168},[196,207,211,222,229],{"value":197,"source":98,"evidence":198},"Taskwarrior with Graphviz (taskgv)",[199,203],{"id":200,"by":201,"text":202},"15965697","shushcat","Perhaps someone will find this old-ish project of mine[1] useful. It automatically generates graphs using Graphviz based on Taskwarrior queries, which makes it considerably…",{"id":204,"by":205,"text":206},"15960182","Izkata","This reminds me of an experiment I had going a year or so ago. Same basic idea, but far more automated: I'd been using taskwarrior for years, and had gotten into the habit of…",{"value":208,"source":98,"evidence":209},"DropTask",[210],{"id":105,"by":106,"text":107},{"value":212,"source":98,"evidence":213},"FreeMind \u002F Freeplane",[214,218],{"id":215,"by":216,"text":217},"15959092","tezza","a great gui editor for similar tree-node structures is freemind a lot quicker than code dsl -> git -> graphviz and freemind also has search, edit, history, links, export as HTML…",{"id":219,"by":220,"text":221},"15961837","maturz","A more active fork https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFreeplane",{"value":223,"source":98,"evidence":224},"PlantUML",[225],{"id":226,"by":227,"text":228},"15960121","DEADB17","plantuml is also text based and supports many types of diagrams: http:\u002F\u002Fplantuml.com\u002Fgantt-diagram",{"value":230,"source":98,"evidence":231},"Mermaid",[232],{"id":233,"by":11,"text":234},"15962662","Check out mermaid.",{"comments":236,"answered":33,"key":237},21,[238,241,242],{"id":239,"text":240},"15959417","Handy, thanks!",{"id":78,"text":79},{"id":243,"text":244},"15961395","I like it. Another one for part 2.",{"commenters":246,"max_depth":33,"maker_replies":236,"first_comment_mins":38,"lifespan_hours":247},38,98,[249,253,255,258,260,262,265,269,271,273,274,277,278,280,282,284,286,288,291,294,296,298,299,301,302,304,306,309,313,315,316,318,320,321,324,326,327,329,333,336,339,341,343,346,347,349,350,351,356,358,360,363,366,369,373,375,376,378,380,382,384,388,392,393],[250,32,32,251,252,32],"15959389","other\u002Fneutral\u002Fnone","chaz6",[239,32,32,254,11,43],"commenter\u002Fpositive\u002Fnone",[256,32,32,251,257,32],"15963445","terminlvelocity",[52,43,33,259,53,32],"project\u002Fpositive\u002Fidea",[78,43,32,261,11,43],"maker\u002Fpositive\u002Fidea",[263,43,33,264,53,32],"15961157","maker\u002Fpositive\u002Fnone",[266,43,41,267,268,32],"15961348","project\u002Fneutral\u002Fdesign","DenisM",[243,43,32,270,11,43],"commenter\u002Fpositive\u002Fdesign",[86,38,32,272,11,43],"project\u002Fneutral\u002Fexecution",[89,38,41,267,90,32],[275,38,32,276,11,43],"15959084","maker\u002Fneutral\u002Fdocs",[170,41,33,259,171,32],[279,41,32,264,11,43],"15960389",[101,281,33,259,102,32],4,[283,281,32,264,11,43],"15960384",[159,33,43,285,160,32],"project\u002Fcritical\u002Fidea",[105,287,33,259,106,32],6,[289,287,32,290,11,43],"15961825","maker\u002Fneutral\u002Fnone",[292,31,33,259,293,32],"15961437","qrv3w",[295,31,32,290,11,43],"15961828",[215,297,32,251,216,32],8,[192,297,32,290,11,43],[300,297,32,251,216,32],"15959134",[219,297,32,251,220,32],[121,37,33,303,122,32],"maker\u002Fpositive\u002Fdocs",[305,37,32,276,11,43],"15958932",[204,307,41,308,205,32],10,"project\u002Fneutral\u002Fidea",[310,311,41,267,312,32],"15962854",11,"sorokod",[174,314,41,308,57,32],12,[167,314,32,290,11,43],[56,314,43,317,57,32],"project\u002Fcritical\u002Fdesign",[60,314,32,319,11,43],"commenter\u002Fneutral\u002Fnone",[145,314,32,319,57,32],[322,314,32,319,323,32],"15959764","codingdave",[325,314,32,319,11,43],"15960059",[226,314,32,251,227,32],[200,328,32,251,201,32],13,[330,328,32,331,332,32],"15966067","other\u002Fpositive\u002Fnone","proginthebox",[334,30,41,308,335,32],"15959898","zitterbewegung",[337,30,32,251,338,32],"15960040","theodorewiles",[67,340,33,259,68,32],15,[342,340,32,290,11,43],"15961190",[344,340,32,251,345,32],"15961192","jaaames",[117,18,33,303,118,32],[348,18,32,276,11,43],"15958891",[180,18,41,276,181,32],[184,18,33,303,185,32],[352,353,32,354,355,32],"15959210",17,"other\u002Fneutral\u002Fidea","mattsouth",[357,353,32,285,11,43],"15959226",[359,353,33,261,355,32],"15960053",[361,353,32,251,362,32],"15959549","limmeau",[151,364,43,365,152,32],18,"project\u002Fcritical\u002Fexecution",[367,364,32,368,11,43],"15958978","maker\u002Fneutral\u002Fexecution",[370,371,33,259,372,32],"15959155",19,"cirowrc",[110,374,33,259,111,32],20,[133,236,43,317,134,32],[71,236,32,377,11,43],"maker\u002Fneutral\u002Fdesign",[125,379,33,264,126,32],22,[381,379,32,290,11,43],"15953463",[137,383,43,285,138,32],23,[385,383,32,386,387,32],"15960868","commenter\u002Fneutral\u002Fidea","aeorgnoieang",[389,390,32,251,391,32],"15960892",24,"yipopov",[233,390,32,251,11,43],[394,390,32,251,391,32],"15986431",[],[397,402,407,412,417,421],{"id":398,"name":399,"points":400,"category":401},"15945490","dumbcoin",412,"learning_science",{"id":403,"name":404,"points":405,"category":406},"15972402","Termipal",195,"dev_tools",{"id":408,"name":409,"points":410,"category":411},"15925736","Servers.lol",150,"web_saas",{"id":413,"name":414,"points":415,"category":416},"15919646","PyFunctional",129,"languages",{"id":418,"name":419,"points":420,"category":20},"15945658","Darkwire.io",118,{"id":422,"name":423,"points":424,"category":425},"15945808","word2vec-spam-filter",104,"ai",false,"v2",{"id":429,"name":5,"line":6,"ai":426,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":430,"top":18,"kw":431,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":432,"url":9,"mix":433,"praise":97,"objection":130,"sub":21},15950325,0.31,[24,21,25,26],"0055303551550005333100003505350515305100",[30,31,32,33],1793990967962]