Skip to content

Instantly share code, notes, and snippets.

@abul4fia
Last active April 18, 2023 00:24
Show Gist options
  • Save abul4fia/de90c189c8e2c097b70f43dfde9608df to your computer and use it in GitHub Desktop.
Save abul4fia/de90c189c8e2c097b70f43dfde9608df to your computer and use it in GitHub Desktop.
Planificación tipo GTD con logseq
  • Basado en [[GTD]] y en un video de Youtube de OneStutteringMind, pero ligeramente adaptado por mi.
  • Flujo de trabajo

    • Fase de captura de información

      • Añadir directamente en la agenda las cosas que tenga en la cabeza y no quiera olvidar, con el tag #inbox
      • También se pueden añadir desde el móvil enviando un mensaje a Telegram y usando mi script para descargarlo
    • Fase de análisis (clarify)

      • Se revisan los elementos de la etiqueta #inbox y se mira en qué caso se está:
        • Requiere acción (yo, o alguien, debe hacer algo acerca de este tema, para que cierto proyecto avance)
        • No requiere acción (es material de lectura o aficiones)
    • Fase de Organización

      Según la clasificación que se haya hecho en el análisis, llega el momento de usar las primitivas apropiadas que nos da logseq
      • Requiere acción
        • La acción ha de ser en un día concreto collapsed:: true Básicamente son eventos de calendario. Añadirle mediante ==/date== un enlace a la fecha en que debe hacerse (opcionalmente anotar en otro calendario externo como Google Calendar si es importante que no se olvide, como una cita médica, etc.)
        • La acción decido retrasarla a otro día collapsed:: true Añadir con ==SCHEDULED== la fecha en la que quiero que resurja mediante. Opcionalmente puede tener también un DEADLINE
        • Hacer lo antes posible collapsed:: true Crear una tarea ==TODO== y si es posible ponerle un ==DEADLINE==
        • Delegar collapsed:: true Marcarla como ==WAITING== (se le puede poner también deadline o scheduled)
      • No requiere acción
        • Material de referencia collapsed:: true Crear una página para él. Usar las etiquetas apropiadas, o properties, para que sea fácil encontrar de nuevo esta información. El uso de templates ayuda aquí
        • Someday/Maybe Etiquetar como #maybe. Opcionalmente ponerle #card para que a través de las flashcards nos recuerde esos temas y no queden para siempre enterrados
        • Recordatorio collapsed:: true Etiquetar con la jerarquía #para/ (ej: #para/leer) y opcionalmente ponerle #card
        • Basura collapsed:: true Si al procesar el elemento de #inbox decides que al final no era útil, simplemente bórralo. No almacenes basura.
  • Revisión y trabajo

    Todo lo almacenado con este método se revisa básicamente de dos formas
    • Lo que requiere acción. Mediante queries avanzadas en la página [[Planificador]]
      • Hoy La tarea para hacer hoy está clasificada "por urgencia" en cuatro grandes bloques
        • Tareas ya vencidas Tienen deadline en el pasado y aún están en estado pendiente. Son por tanto cosas urgentes en las que habría que ponerse a trabajar cuanto antes
        • Tareas que vencen hoy Tienen deadline para hoy
        • Tareas de hoy Son tareas "de calendario" para hoy (provienen de bloques que han enlazado al día de hoy), o bien tareas scheduled para comenzar hoy.
        • Continuar con... Son tareas que estaban scheduled para días atrás. Por tanto seguramente se ha comenzado a trabajar ya en ellas, pero aún no se han terminado. Pueden tener deadlines, pero éstos pueden estar aún en el futuro, por lo que no son tan urgentes (si el deadline fuese hoy aparecería también en "Tareas que vencen hoy")
      • Mañana Son tareas que tienen una fecha de scheduled o deadline o enlace al diario de mañana.
      • Resto de la semana Son tareas que tienen una fecha de scheduled o deadline o enlace al diario para una fecha posterior a mañana y anterior a 8 días en el futuro.
      • Sin día Son cualquier tarea pendiente (estado to-do) para la que no se ha fijado deadline ni fecha de comienzo con scheduled. No debería haber muchas tareas aquí, lo mejor es revisarlas y ponerles alguna fecha.
      • Esperando Son todas las tareas con estado "waiting"
    • Tras revisar el [[Planificador]], se elige una tarea sobre la que comenzar a trabajar y se cambia su estado a "doing".
      • Eso la hará desaparecer de su categoría y aparecer en cambio al principio del [[Planificador]] en la sección 🔨 Now (haciendo)
      • Cuando se deje de trabajar en esa tarea se pasa de nuevo al estado "to-do", o bien "done" si se ha terminado. Logseq muestra el tiempo total en que estuvo en el estado "doing".
    • Lo que no requiere acción
      • Se puede consultar la etiqueta #para para encontrar cosas pendientes de mirar
      • En la etiqueta #maybe hay cosas que alguna vez nos interesaron y dejamos "en la incubadora"
  • Véase [[Flujo de trabajo]]

  • query-table:: false

    🔨 Now (haciendo) {{query (todo doing)}}

  • ⏰ Hoy

    query-table:: false

    • 🔥 Tareas ==vencidas==

      query-table:: false collapsed:: true Deadline en el pasado y no están finalizadas #+BEGIN_QUERY { :query [ :find (pull ?block [*]) :in $ ?today :where [?block :block/marker ?m] [(contains? #{"TODO"} ?m)] [?block :block/deadline ?d] [(< ?d ?today)] ] :result-transform (fn [result] (sort-by (fn [d] (get d :block/deadline) ) result)) :inputs [:today] :breadcrumb-show? false :collapsed? false } #+END_QUERY
    • 🔥 Vencen hoy

      query-table:: false collapsed:: true Deadline hoy #+BEGIN_QUERY { :query [ :find (pull ?block [*]) :in $ ?today :where [?block :block/marker ?m] [(contains? #{"TODO"} ?m)] [?block :block/deadline ?d] [(= ?d ?today)] ] :result-transform (fn [result] (sort-by (fn [d] (get d :block/deadline) ) result)) :inputs [:today] :breadcrumb-show? false :collapsed? false } #+END_QUERY
    • 🌞 Para hoy

      collapsed:: true Scheduled para hoy o mencionan la fecha de hoy #+BEGIN_QUERY { :query [ :find (pull ?block [* {:block/refs [:block/journal-day]}]) :in $ ?today :where (or-join [?block ?today] (and [?block :block/marker ?m] [(contains? #{"TODO"} ?m)] [?block :block/scheduled ?d] [(= ?d ?today)] ) (and [?block :block/refs ?p] [?p :block/journal? true] [?p :block/journal-day ?d] [(= ?d ?today)] ) ) ] :result-transform (fn [result] (sort-by (fn [d] (or (get (get d :block/ref-pages) :page/journal-day) (get d :block/scheduled) (get d :block/deadline) )) result)) :inputs [:today] :breadcrumb-show? false :collapsed? false } #+END_QUERY
    • ⛅ Continuar con...

      collapsed:: true Scheduled en el pasado y aún no finalizadas #+BEGIN_QUERY { :query [ :find (pull ?block [*]) :in $ ?today :where [?block :block/marker ?m] [(contains? #{"TODO"} ?m)] [?block :block/scheduled ?d] [(< ?d ?today)] ] :result-transform (fn [result] (sort-by (fn [d] (or (get (get d :block/ref-pages) :page/journal-day) (get d :block/scheduled) (get d :block/deadline) )) result)) :inputs [:today] :breadcrumb-show? false :collapsed? false } #+END_QUERY
  • 📆 Mañana

    query-table:: false collapsed:: true Planificadas, deadlines o mencionadas #+BEGIN_QUERY { :query [ :find (pull ?block [* {:block/refs [:block/journal-day]}]) :in $ ?tomorrow :where (or-join [?block ?tomorrow] (and [?block :block/marker ?m] [(contains? #{"TODO"} ?m)] (or [?block :block/scheduled ?d] [?block :block/deadline ?d]) [(= ?d ?tomorrow)] ) ;; 2nd case: the date linked from the block is in the 7day window (and [?block :block/refs ?p] [?p :block/journal? true] [?p :block/journal-day ?d] [(= ?d ?tomorrow)] ) ) ] :result-transform (fn [result] (sort-by (fn [d] (or (get (get d :block/ref-pages) :page/journal-day) (get d :block/scheduled) (get d :block/deadline) )) result)) :inputs [:tomorrow] :breadcrumb-show? false :collapsed? false } #+END_QUERY

  • 📅 Resto de la semana

    query-table:: false collapsed:: true Con deadline, scheduled o fecha mencionada en los próximos 7 diás a partir de mañana #+BEGIN_QUERY { :query [ :find (pull ?block [* {:block/refs [:block/journal-day]}]) :in $ ?start ?next :where (or-join [?block ?start ?next] (and [?block :block/marker ?m] [(contains? #{"TODO"} ?m)] (or [?block :block/scheduled ?d] [?block :block/deadline ?d]) [(>= ?d ?start)] [(<= ?d ?next)] ) ;; 2nd case: the date linked from the block is in the time window (and [?block :block/refs ?p] [?p :block/journal? true] [?p :block/journal-day ?d] [(>= ?d ?start)] [(<= ?d ?next)] ) ) ] :result-transform (fn [result] (sort-by (fn [d] (get d :block/deadline (get d :block/scheduled (get (last (get d :block/refs)) :block/journal-day 99999999999))) ) result)) :inputs [:2d-after :7d-after] ;; :view (fn [result] (for [r result] [:pre (pr-str r)])) :breadcrumb-show? false :collapsed? false } #+END_QUERY

  • 🌗 Tareas "sin día"

    query-table:: false collapsed:: true Items marcados "to-do" sin deadline ni scheduled #+BEGIN_QUERY { :query [ :find (pull ?block [* {:block/refs [:block/journal-day]}]) :where [?block :block/marker ?m] [(contains? #{"TODO"} ?m)] (not [?block :block/scheduled ?d]) (not [?block :block/deadline ?d]) ] :result-transform (fn [result] (sort-by (fn [d] (get (last (get d :block/refs)) :block/journal-day 99999999)) result))
    :breadcrumb-show? true :collapsed? false } #+END_QUERY

  • ⏳ Esperando...

    query-table:: true query-properties:: [:Date? :block] collapsed:: true Items marcados con "waiting", mera lista de items, ordenados por la fecha en que se crearon (más recientes primero) #+BEGIN_QUERY {:query [ :find (pull ?b [* {:block/refs [:block/journal-day]}]) :where [?b :block/marker ?m] [(contains? #{"WAITING"} ?m)] ] :result-transform (fn [result] (defn get-date [d] (-> d :block/page :block/journal-day)) (defn add_date [block] (update block :block/properties (fn [prop] (assoc prop :Date? (get-date block)))) ) (reverse (sort-by get-date (map add_date result))) ) :breadcrumb-show? false ; :view (fn [result] (for [r result] [:pre (pr-str r)])) :collapsed? false } #+END_QUERY

@Felipe713
Copy link

Muchas gracias por tu trabajo, me sirvió mucho!!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment