[{"data":1,"prerenderedAt":354},["ShallowReactive",2],{"project-26673221":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":43,"post_text":44,"what":45,"said":86,"maker_in_thread":193,"shape":203,"grid":208,"attempts":316,"same_week":317,"maker_shows":34,"maker_hidden":346,"reader_version":347,"card":348},"26673221","Grit","a multitree-based personal task manager","title","Show HN: Grit – a multitree-based personal task manager","https:\u002F\u002Fgithub.com\u002Fclimech\u002Fgrit","github.com","climech",1617382497,2021,255,45,145,2533,6,"legend","productivity","task manager","cli",[21,24,25,26,27],"multitree","todo list","command line","dag","curious",0.121,{"positive":31,"neutral":32,"mixed":33,"critical":34},5,19,2,1,27,{"idea":37,"pricing":40,"design":41,"execution":42},{"positive":38,"critical":39},3,0,{"positive":34,"critical":39},{"positive":39,"critical":39},{"positive":39,"critical":34},[38,39,38,38,39,38,39,31,39,38,38,31,39,38,31,38,39,38,38,34,39,38,38,31,39,38,38,38,39,38,38,39,39,39,39,39,38,38,39,31],null,{"problem":46,"audience":44,"pricing":44,"motivation":62,"time_to_build":44,"stack":69,"openness":83,"stage":84,"team_size":85},{"value":47,"source":48,"evidence":49},"Organizing and tracking personal tasks as nested, linked structures","inferred",[50,54,58],{"id":51,"by":52,"text":53},"26677885","loloquwowndueo","I really like trying out tools that allow me to organize and track tasks, as they help me keep focused and more motivated if I know where I am, what I have done and what I need…",{"id":55,"by":56,"text":57},"26674606","tunesmith","What's the difference between a dag and a multitree? The wikipedia article was confusing - it seems that it prevents diamond shapes? Like where 1 leads to both 2 and 3, and where…",{"id":59,"by":60,"text":61},"26680426","JensRantil","Looks like a CLI version of Workflowy (https:\u002F\u002Fworkflowy.com) to me.",{"value":63,"source":64,"evidence":65},"Multitrees seemed to fit needs better than DAGs for task structure","maker",[66],{"id":67,"by":11,"text":68},"26674737",">prevents diamond shapes Pretty much this, unless I'm missing something. An earlier version of the program actually used DAGs, but I found it a little underconstrained. I got…",[70,77],{"value":71,"source":48,"evidence":72},"Go",[73],{"id":74,"by":75,"text":76},"26675437","Flockster","Wow a very cool idea. The idea of many root nodes for different views seems interesting. Unfortunatly it does not build on my pc, it seems to import an absolute path in the go…",{"value":78,"source":64,"evidence":79},"SQLite",[80],{"id":81,"by":11,"text":82},"26674671","Just SQLite - two tables, one for the nodes, one for edges + some fancy constraints and queries. I was tempted to make a custom binary format, but that's a big task, and it seems…","open_source","beta","unknown",{"praise":87,"objections":110,"requests":127,"questions":161,"alternatives":177},[88,103],{"value":89,"source":90,"evidence":91},"Clever multitree structure for tasks","commenter",[92,96,100],{"id":93,"by":94,"text":95},"26674893","slaymaker1907","TiddlyWiki uses a similar data model for table of contents by default and I love it! I think the multitree constraint is a good idea over a general DAG.",{"id":97,"by":98,"text":99},"26676814","rochak","Looks and works fantastically. Great job!",{"id":101,"by":56,"text":102},"26674967","Oh, so you can only crosslink from different root nodes. That makes sense. There are so many ways to structure todos. In this case, it appears to be using subtasks specifically…",{"value":104,"source":90,"evidence":105},"Alternative to expensive Workflowy",[106],{"id":107,"by":108,"text":109},"26683985","xavierlint","Workflowy is good but it's really expensive for what it does, I'm glad we have grit as an alternative.",[111,115,123],{"value":112,"source":90,"evidence":113},"Name is confusingly similar to git",[114],{"id":51,"by":52,"text":53},{"value":116,"source":90,"evidence":117},"No sync across devices yet",[118,119],{"id":51,"by":52,"text":53},{"id":120,"by":121,"text":122},"26674423","fluidcruft","This looks pretty interesting! How is the data stored? Would it be difficult to sync among different machines?",{"value":124,"source":90,"evidence":125},"Failed to build on Linux due to absolute import path in Makefile",[126],{"id":74,"by":75,"text":76},[128,144,151],{"value":129,"source":90,"evidence":130},"Sync across devices",[131,135,139,140],{"id":132,"by":133,"text":134},"26677290","encryptluks2","I've seen similar task management that syncs to CalDav: https:\u002F\u002Ff-droid.org\u002Fen\u002Fpackages\u002Forg.dmfs.tasks\u002F Is this something you're thinking about adding?",{"id":136,"by":137,"text":138},"26680976","vbsteven","I’m going to play with this as well since I’m learning about the whole tasks\u002Fnotes space. Do you have plans to support any form of sync? Like CalDAV or some API on top of which…",{"id":120,"by":121,"text":122},{"id":141,"by":142,"text":143},"26677335","smitty1e","Some sort of UUID for task identifiers so that you can beam them around without collisions.",{"value":145,"source":90,"evidence":146},"GUI version",[147],{"id":148,"by":149,"text":150},"26684002","r-w","I would kill for a GUI app like Workflowy with multitrees. I really do need a graphical representation in order to best visualize what's going on.",{"value":152,"source":90,"evidence":153},"Storage in git or a sync-friendly backend",[154,158],{"id":155,"by":156,"text":157},"26677834","woofie11","git. The right storage backend is either git, or a git-like Merkle tree. This is small data. Individual files for objects are fine. Compacting is better, but not critical. You…",{"id":159,"by":156,"text":160},"26679433","I guess I'd be okay with a Merkle tree stored in SQLite, although looking over the Fossil documentation, it seems like the developers didn't get git, and what made the git data…",[162,170],{"value":163,"source":90,"evidence":164},"Difference between a DAG and a multitree",[165,166],{"id":55,"by":56,"text":57},{"id":167,"by":168,"text":169},"26674788","ssivark","Precisely; a multi-tree has a unique path between two nodes. On the same note, I wonder what is the relation between dags\u002Fmultitrees and semilattices. They seem to be very…",{"value":171,"source":90,"evidence":172},"How ordering of tasks works",[173],{"id":174,"by":175,"text":176},"26675368","kbd","How do you handle ordering? I noticed: ``` $ grit add -p 5 Bread (5) -> (6) $ grit add -p 5 Milk (5) -> (7) $ grit add -p 5 Eggs (5) -> (8) ``` led to: ``` ├──[ ] Get groceries…",[178,182,189],{"value":179,"source":90,"evidence":180},"Workflowy",[181],{"id":59,"by":60,"text":61},{"value":183,"source":90,"evidence":184},"Taskwarrior",[185],{"id":186,"by":187,"text":188},"26678934","riedel","I just started migrating to taskwarrior which great due to the many clients. Actually its integration with vimwiki via the taskwiki plugin [1] is quite powerfull allowing…",{"value":190,"source":90,"evidence":191},"TiddlyWiki",[192],{"id":93,"by":94,"text":95},{"comments":31,"answered":194,"key":195},4,[196,197,200],{"id":67,"text":68},{"id":198,"text":199},"26674957","Without it, the structure allowed the user to create a graph like this: ``` [x] Task ├──[x] Sub-task (1) │ ├──[x] Sub-sub-task (2) │ └──[x] Sub-sub-task ├──[x] Sub-task (3) │…",{"id":201,"text":202},"26675473","Yes, it's sorted by name in natural order. I haven't decided yet which would work best as default (this vs insertion order) -- feedback is welcome. This works well for numbered…",{"commenters":204,"max_depth":205,"maker_replies":31,"first_comment_mins":206,"lifespan_hours":207},33,9,103,157,[209,211,215,219,220,221,224,225,226,228,232,235,236,237,240,241,243,245,247,248,251,253,256,259,260,262,266,269,273,277,280,283,284,285,287,291,292,294,296,298,300,302,306,309,312],[51,39,38,210,52,39],"project\u002Fmixed\u002Fidea",[212,39,39,213,214,39],"26679044","commenter\u002Fneutral\u002Fnone","houzi",[216,34,38,217,218,39],"26678983","project\u002Fneutral\u002Fidea","rtpg",[55,33,38,217,56,39],[67,33,39,217,11,34],[222,33,38,217,223,39],"26674833","gradys",[198,33,39,217,11,34],[167,33,38,217,168,39],[101,33,31,227,56,39],"project\u002Fpositive\u002Fidea",[229,38,39,230,231,39],"26676656","other\u002Fneutral\u002Fnone","renewiltord",[233,38,38,217,234,39],"26676735","frutiger",[186,194,38,217,187,39],[93,31,31,227,94,39],[238,31,39,230,239,39],"26675821","stilisstuk",[59,18,38,217,60,39],[107,18,31,242,108,39],"project\u002Fpositive\u002Fpricing",[148,18,38,244,149,39],"project\u002Fneutral\u002Fdesign",[174,246,38,244,175,39],7,[201,246,39,244,11,34],[249,246,38,217,250,39],"26676822","hirundo",[252,246,38,217,214,39],"26679507",[74,254,34,255,75,39],8,"project\u002Fcritical\u002Fexecution",[257,254,39,258,11,34],"26675614","maker\u002Fneutral\u002Fnone",[132,205,38,217,133,39],[136,261,38,217,137,39],10,[263,264,31,227,265,39],"26676802",11,"nojvek",[267,264,39,230,268,39],"26678382","cadbox1",[270,271,39,230,272,39],"26678156",12,"mekster",[274,275,38,217,276,39],"26677113",13,"xn",[120,278,38,279,121,39],14,"project\u002Fneutral\u002Fexecution",[281,278,38,279,282,39],"26674635","morsch",[81,278,39,279,11,34],[141,278,38,279,142,39],[155,278,38,286,156,39],"project\u002Fmixed\u002Fexecution",[288,278,39,289,290,39],"26678378","commenter\u002Fneutral\u002Fexecution","zie",[159,278,39,289,156,39],[293,278,39,213,290,39],"26681068",[295,278,39,213,156,39],"26684015",[297,278,39,213,290,39],"26686524",[299,278,39,213,156,39],"26692094",[301,278,38,279,290,39],"26678369",[303,304,38,244,305,39],"26676642",15,"tingletech",[307,304,39,213,308,39],"26747143","mikewarot",[97,310,31,311,98,39],16,"project\u002Fpositive\u002Fnone",[313,314,39,230,315,39],"26677353",17,"sreeramb93",[],[318,323,327,332,337,342],{"id":319,"name":320,"points":321,"category":322},"26691626","pdf (paged.js PDF guide)",742,"dev_tools",{"id":324,"name":325,"points":326,"category":20},"26700770","aava.sh",425,{"id":328,"name":329,"points":330,"category":331},"26659553","Mail Studio",395,"creative",{"id":333,"name":334,"points":335,"category":336},"26661223","Simplenetes",296,"infrastructure",{"id":338,"name":339,"points":340,"category":341},"26719105","DragonRuby",234,"languages",{"id":343,"name":344,"points":345,"category":331},"26659860","attejuvonen.fi",229,false,"v2",{"id":349,"name":5,"line":6,"ai":346,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":350,"top":18,"kw":351,"maker":11,"domain":10,"tier":19,"attempts":39,"strip":352,"url":9,"mix":353,"praise":89,"objection":112,"sub":21},26673221,0.12,[21,24,25,26,27],"3033030503350353033103350333033000003305",[31,32,33,34],1794036605242]