Loose planning
I like the notion of planning ahead and the general gtd mindset but I very much dislike strict deadlines and due dates as well as concrete schedules that span weeks.
I will attempt to implement a gtd workflow that fits my needs. This document is the architectural blueprint of said workflow. Ofcourse it's based on emacs and org-mode.
General goals
- standard scheduling supported (e.g. doctor's appointments, birthdays, …)
- leverage the org-agenda to present the user a plethora of preplanned tasks
GTD Pros & Cons
pros:
- never miss appointments
- get things done
- create habits
- do more with your time
cons:
- tight deadlines
- rigid scheduling induces anxiety
- doesn't accomodate for each day's impulsions
- actually limits impulsive actions by design
target workflow
org-mode specific:
- the org mode entries have a tree structure
- leafs of this tree should be actionable (except notes), if not they shouldn't be a leaf
- before a node can be marked as done, all the children must be marked as done as well
- <FILE>
- a group of <ENTRIES>
- <ENTRY>
- a todo, a project, a note
- <TODO>
- singular task with scheduling info
- <PROJECT>
- bigger task with subtasks without scheduling
- <NOTE>
- info, non actionable
- <TAG>
- used for general categories and to group <ENTRIES> from different <FILES> togheter
- catpure an <ENTRY>
- prompt for <FILE>
- prompt if it should be attached on another entry
- prompt for type of entry
- prompt for <TAG>
- add content
- agenda view
- leaf view
- scheduled entries for the week
- leaf nodes from actionable entries (todos and projects)
Example
Agenda
(use-package org-ql) (use-package org-super-agenda) (setq org-agenda-files '("~/blog/blog")) (setq org-agenda-custom-commands '(("t" "Test" ((agenda "" ((org-agenda-span 'day) (org-agenda-start-day nil) (org-super-agenda-groups '((:name "Scheduled" :time-grid t) (:name "All-day" :scheduled today) (:discard (:anything))))))))))
ql-search
(org-ql-search "~/blog/blog/loose_planning.org" '(and (or (todo "TODO") (todo "PROJECT")) (not (and (descendants (not (or (todo "NOTE") (todo "DONE")))) (descendants (todo))))) :title "The view" :super-groups '((;:auto-planning t :name "General" :scheduled t :time-grid t :order 1) (:auto-outline-path t :todo ("TODO") :order 2)))
ql-query
(org-ql-query ;; :select #'org-get-heading :select '(list (org-format-outline-path (org-get-outline-path) nil (org-get-title) " / " ) (org-get-heading)) :from "~/blog/blog/loose_planning.org" :where '( (or (todo "TODO") (todo "PROJECT")) (not (descendants (not (or (todo "NOTE") (todo "))
(org-ql-query ;; :select #'org-get-heading :select '(list (org-format-outline-path (org-get-outline-path) nil (org-get-title) " / " ) (org-get-heading) (if (org-get-scheduled-time nil) (format-time-string "%Y%m%d %H:%M" (org-get-scheduled-time nil)) nil) (format "In %d days" (org-time-stamp-to-now (format-time-string "<%Y-%m-%d %a %H:%M>" (org-get-scheduled-time nil)))) (if (org-get-deadline-time nil) (format-time-string "%Y%m%d %H:%M" (org-get-deadline-time nil)) nil) ) :from "~/blog/blog/loose_planning.org" :where '(and (or (todo "TODO") (todo "PROJECT")) (not (and (descendants (not (or (todo "NOTE") (todo "DONE")))) (descendants (todo))))))
The rest of the document is an example. It should be multiple files but I'll just add a comment to differentiate them
TODO file lawsuit now
TODO file lawsuit
TODO doctor's appointment
NOTE medicine
ask about different medicine options