Notxor tiene un blog

Defenestrando la vida

El mundo de las notas

Notxor
2022-08-24

Cuando digo el mundo de las notas... No, no me refiero a las calificaciones escolares. Me estoy refiriendo a lo complicado que es tener un sistema coherente para tomar notas y apuntes con un ordenador por medio. Llevo tanto tiempo intentando encontrar un sistema de notas que satisfaga todas mis necesidades que ya he desesperado. Me he planteado que voy a tener que hacerlo yo, pero antes os quiero presentar el que estoy utilizando en estos momentos: zetteldeft.

Para ponernos en antecedentes, en el ejercicio de la psicología clínica tengo que tomar muchas notas y, también, en algunos casos generar documentos a partir de ellas. No hay un formato homogéneo, algunas de las anotaciones tienen forma de texto, otras de tabla (registros de conducta, índice de anotaciones, resultados de tests psicológicos etc.), otras de gráfico (perfiles psicológicos, familiogramas), aunque la mayoría de las anotaciones son de texto. Pero el decir que son de texto es también resumir mucho, dentro de estas también las hay de muchos tipos: objetivos, tareas, resumen de sesión, etc. Además algunas de las anotaciones me gustaría que estuvieran cifradas. Como digo, he probado varios sistemas, sobre los mejores candidatos ya he hablado: sobre org-roam una y dos veces y sobre TiddlyWiki una y dos veces también. En este artículo, vuelvo a hablar de Zettelkasten y cómo funciona... aunque con otro paquete de toma de notas sobre Emacs: zetteldeft.

Quizá primero deba explicar un poco más por qué no terminan de convencerme las dos herramientas que he mencionado y anticipar que, la que presento hoy por primera vez en el blog, tampoco termina de ajustarse a lo que quiero, pero es más sencilla. Y... si no me sirve (del todo) tampoco ¿por qué la comento?1 Muy sencillo, la herramienta no se ajusta a todo lo que yo necesito, pero a otro usuario con otras necesidades le puede servir. Quizá, también debería explicar un poco más qué hago yo con las notas y cuál es mi proceso:

  1. Las notas de una sesión o de una conferencia o de lo que sea, las tomo siempre a mano con un buen cuaderno y un buen bolígrafo. Si lo hago con el ordenador por medio, seguro que me pierdo algo mientras pienso qué pulsación de teclas debo utilizar, qué programa lanzar, etc. Para mí, es un distractor más que una herramienta.
  2. La mayoría de las notas, en multitud de ocasiones, se pueden quedar en el cuaderno, porque son cosas ya sabidas, o que no me aportan nada, o fáciles de encontrar con una mínima búsqueda.
  3. Las que pasan al sistema de notas suelen escribirse una vez. Es muy raro que haya que editarlas. Por lo tanto, se leen muchas más veces de lo que se escriben y por tanto tiene que ser fácil leerlas: para eso hay que encontrarlas primero, así que el sistema de búsqueda también es importante.
  4. Alguna información de esas notas, porque atañen a datos personales o estados de salud de personas reales, debe guardarse cifrada. Hasta ahora puedo cifrar archivos completos, pero así pierdo la capacidad de que unas notas se relacionen con otras notas con las que debería mantener enlace. Necesitaría que se pudiera fácilmente cifrar el contenido de la nota y mantener abiertos los enlaces y etiquetas para que entre en las búsquedas.
  5. Algunas anotaciones son una tabla y/o un gráfico. Hasta ahora me estoy apañado bien con las tablas de org-mode y muchos gráficos los puedo gestionar en svg.

Mis conclusiones hasta ahora, que ya he tardado, es que he comprendido que el sistema Zettelkasten es un método magnífico para tomar notas en un ámbito académico o de investigación, con el objeto de relacionar ideas y generar así conocimiento. Yo lo uso para otro fin, y ya sé que no es el objeto para el que fue creado, pero lo estoy usando para investigar, si lo queréis llamar así, cómo piensa y cómo actúa una persona, con el objetivo de comprenderla y poder ayudarla.

Las aplicaciones como org-roam y otras similares basan su fuerza en una representación gráfica de las relaciones entre notas, que queda muy molona, pero que a mí no me aporta nada y establece dependencias a bases de datos y javascript que no necesito.

No tiene que ser tan complicado: el sistema básico funcionaba con hojas de papel con un procedimiento de numeración que las enlazaba. Si ves una nota marcada con el número 11b2 puedes estar seguro que hay una tarjeta 11b, con la que está enlazada y también una tarjeta 11, con la que estaría enlazada la 11b. No es necesario mencionar la numeración backlink, va implícita en el modo de numerar. Este sistema de numeración es lógica humana, no computacional. En un ordenador hay que forzar dicho enlace. Por otro lado, el sistema tiene otras tarjetas cuyo único fin es contener un listado de referencias a otras notas sobre algún determinado aspecto. Esto se puede suplir, y se ha suplido, en los sistemas informáticos implementando los tags.

Pero me estoy enrollando mucho, vamos al lío.

El sistema de notas deft

El paquete deft gestiona notas en un directorio. Puede utilizar tres formatos de fichero markdown, txt y org. Al utilizarlo llamando a deft muestra un buffer con una lista de las notas que tenemos en el sistema, es decir, cualquier archivo con esas extensiones que se encuentren en el directorio configurado2.

Captura_deft.png

Podemos filtrar las entradas escribiendo un filtro, valga la rebuznancia:

Captura_deft-filtro.png

Hay distintas funciones de búsqueda y configuraciones para ajustarlo a tus necesidades, como seleccionar el formato del título o del fichero cuando se crea una nota nueva, etc. Pero eso lo dejo a tu discreción, en la web encontrarás mucha más información y siempre te puedes ayudar con apropos y las opciones que se pueden configurar para averiguar qué hace cada variable.

Para instalarlo y configurarlo, en mi init.el tengo el siguiente código:

(use-package deft
:ensure t
:bind ("<f5>" . deft)
:commands (deft)
:config (setq deft-directory "~/Nextcloud/Notes"
              deft-extensions '("org" "md" "txt")
              deft-default-extension "org"
              deft-use-filename-as-title t))

Lo llamo pulsando F5. La configuración además utiliza el directorio de notas con un directorio sincronizado por Nextcloud. Después se establecen las extensiones de los ficheros de notas que debe leer de dicho directorio. También se establece la extensión por defecto, cuando se crea una nueva nota. deft reconocerá como notas todos los archivos con esas extensiones que se encuentre en el directorio establecido3. La última opción es utilizar como título el nombre del fichero. Otra opción es dejarlo a nil y obligar a deft a leer la primera línea del archivo, que será tomada como el título para la lista de notas.

Hay, como digo, muchas más opciones para la herramienta. Sin embargo, en nuestro caso, no vamos a profundizar mucho más sobre él, es sencillo de comprender y muy fácil de configurar usar. En su lugar voy a comentar un problema, que me encontré, por mis propias manías, y cómo lo solucioné, por si a alguien más le es útil.

El problema que se me plantaba es que soy de tener varios directorios con notas. Tengo la tendencia, o costumbre, de poner en mis proyectos un directorio de notas y claro, esta herramienta sólo trabaja sobre un directorio, uno en toda su unicidad. Lo que está bien si sólo tienes un cajón de notas en lugar de decenas como tengo yo. Por ello, al final me hice la siguiente función que me facilita cambiar de directorio de notas sobre la marcha. La pongo aquí, por si os sirve de algo:

(defun cambio-deft-dir (dir)
  "Cambiar de directorio Deft."
  (interactive "D")

  (message (format "Se cambia def-directory a: %s" dir))
  (setq deft-directory (format "%s" dir))
  (deft-refresh))

Es una función muy sencilla: pregunta por un directorio, se lo facilitamos y establece la variable haciendo un refrescado después por si hay algún buffer de deft abierto, para que se actualice y cambie al compendio nuevo de notas. Ten en cuenta que el refresco, si cambias a un directorio con muchas —pero que muchas— notas, puede tardar un rato, apenas unos segundos, pero hay que tener paciencia.

El paquete zetteldeft

El paquete zetteldeft lo que hace es añadir a deft las características fundamentales del método Zettelkasten4. Ya las comenté más arriba, pero para centrarnos, concretamente los conceptos clave que se han tenido en cuenta son:

  1. Una idea en cada nota.
  2. Conectar diferentes ideas en diferentes notas.
  3. O mantener un conjunto de enlaces a otras notas.

Con ese resumen de tres puntos se monta todo el sistema sobre tarjetas en papel, así que no hace falta meterle más rollos al chismático. Y esos son los tres puntos que le añade el paquete zetteldeft a deft. Este paquete es lo más sencillo y completo que he encontrado hasta ahora.

Instalación

Como siempre, lo primero va antes. La instalación es sencilla:

(use-package zetteldeft
  :ensure t
  :after deft
  :config (zetteldeft-set-classic-keybindings))

Creo que el código es bastante claro y fácil de entender, así que no le daré demasiadas vueltas. Sólo recordar que deft debe instalarse antes y tiene que estar instalado cuando se instale el paquete.

Se puede dejar todo como viene por defecto, pero en mi caso, también he añadido un sufijo a la cabecera cuando se crea una nota nueva, para recordarme que también puedo utilizar etiquetas y he añadido la siguiente línea en el init.el, justo después del código de instalación.

(setq zetteldeft-title-suffix "\n# Tags #")

Al utilizar la configuración clásica de teclas, se activan los siguientes comandos. No pongo todos, pero sí los que más utilizo. La combinación básica es C-c d.

tecla comando Acción
n zetteldeft-new-file Crear una nota nueva
N zetteldeft-new-file-and-link Crea una nota nueva e inserta enlace
B zetteldeft-new-file-and-backlink Crea nota nueva e inserta enlace a la actual
b zetteldeft-backlink-add Inserta un backlink en la nota
i zetteldeft-find-file-id-insert Inserta enlace
I zetteldeft-find-file-full-title-insert Inserta enlace con título completo
f zetteldeft-follow-link Abre la nota enlazada
o zetteldeft-find-file Abrir una nota5
T zetteldeft-tag-buffer Abre un buffer con una lista de etiquetas
t zetteldeft-avy-tag-search Busca notas con una etiqueta
# zetteldeft-tag-insert Inserta una etiqueta
r zetteldeft-file-rename Renombra el fichero de una nota

Cuando queremos crear un archivo de nota nuevo, utilizando la combinación C-c d n nos pregunta por un título de la nota. Al pulsar <RET> generará un archivo con la fecha y hora en formato %Y-%m-%d-%H%M y el título que le hayamos facilitado. Cuando insertemos un enlace, por defecto, utilizará ese formato de fecha para referirse a la nota y mostrará algo parecido a §2020-04-17-161, siempre precedido, como se puede observar de un carácter §. Dicho carácter es configurable y se puede cambiar por cualquier otro, pero no me desagrada y lo he dejado tal cual. He leído por la web que algunos usuario lo cambian por otro carácter que puedan escribir ellos fácilmente. A mí no me parece difícil pulsar AltGr-W6.

Como decía, el sistema desarrollado y utilizado por Niklas Luhmann durante toda su carrera no tiene ningún método gráfico al uso, a no ser que te pongas a dibujar en un papel, tarjeta a tarjeta uniéndolas con líneas. Pero la informática nos permite hacerlo de manera automágica, y sí, con este sistema también se puede obtener una visualización gráfica del mismo, pero de forma indirecta. Si tienes instalado graphviz puedes llamar al comando zetteldeft-org-graph-search. Dicho comando pide una nota desde la que se comenzará el dibujo y creará un bloque de código tal que:

#+begin_src dot :file ./graph.pdf :cmdline -Kfdp -Tpdf
  graph {
    ...
  }
#+end_src

una vez que lo genera tienes la oportunidad de modificarlo y ponerlo bonito. Cuando lo he usado he cambiado algunos parámetros, como la salida, que prefiero que sea a svg. Pero eso es una cuestión de gustos. No suelo hacer mucho caso de las gráficas de ese estilo, ni siquiera a los mapas mentales que me hacía hace un tiempo... al final no me aportan nada y tengo la tendencia a ver relaciones que no hay cuando algo está dibujado cerca de otra cosa. Muchas veces hay cosas juntas que se acomodan por razones gráficas, no conceptuales y eso me distrae, prefiero tener el mapa en la cabeza y no en papel, a no ser que lo que represente el papel esté a escala del espacio real, pero del espacio real, no del espacio conceptual.

Etiquetas

Hasta ahora he hablado de los dos primeros pilares del método Zettelkasten: las notas atómicas de sólo un tema por tarjeta y la interrelación entre las tarjetas. Sólo nos falta conseguir nuestras listas índices de tarjetas relacionadas por algún motivo. Para esto el sistema provee las etiquetas o tags. Una etiqueta comienza por un carácter #. Al escribir tags en nuestras notas podemos agruparlas, pero no tengáis prisa por poner etiquetas. Poner una etiqueta es un arma de doble filo. Las etiquetas sirven para agrupar cosas semejantes, pero son el origen también de los prejuicios y dificultan que pienses sin esos prejuicios sobre cualquier tema. En tu mente, cualquier cosa se convierte en su etiqueta.

Sin más elucubraciones, si utilizamos la combinación C-c d T o el comando zetteldeft-tag-buffer, nos abre el siguiente buffer:

Captura_lista-etiquetas.png

Hay que tener mucho cuidado con la combinación de teclas C-c d, porque C-c C-d en deft se utiliza para borrar una nota, así que si estás en el buffer deft, ten cuidado con lo que pulsas. Afortunadamente, pregunta si realmente queremos borrarlo y podemos reaccionar. El que avisa no es traidor, es avisador.

Para seleccionar una etiqueta podemos utilizar la combinación C-c d t o el comando zetteldeft-avy-tag-search, que utiliza el modo avy para saltar directamente mediante letras marcadas por etiquetas en rojo:

Captura_lista-salto.png

Si lo que estamos buscando es la etiqueta #customize, sólo tenemos que pulsar la tecla a para abrir una lista de notas con dicha etiqueta.

Captura_filtro-etiqueta.png

Otra opción es abrir deft y teclear la palabra que estemos buscando. Por ejemplo:

Captura_buscar-sin-etiqueta.png

para conseguir la vista anterior, he tecleado custom en el buffer deft. Al ir sin el símbolo # encuentra no sólo aquellas notas que tengan la etiqueta customize, sino también todas aquellas donde dicha cadena esté presente. Como podéis suponer, el utilizar etiquetas con otros caracteres especiales que no sea # pueden también buscarse con este método y nos abre el abanico de tener diferentes tipos de etiquetas.

Conclusiones

El sistema de tomar notas Zettelkasten es sencillo y simple. Pero para funcionar necesita constancia. Su autor dedicaba varias horas de su trabajo, diariamente, para mantenerlo: hacer anotaciones, enlazar unas notas con otras, hacer listas de notas relacionadas, almacenarlas, ordenarlas... Cuando escribía algún artículo o libro las consultaba, seguía sus enlaces, sus referencias y le eran de utilidad. Pero es un trabajo arduo. Claro, que su sistema estaba montado en papel y los ordenadores nos sirven de ayuda... pero veo muchas pajas mentales en sistemas que pretenden implementarlo, más preocupados de la vistosidad que de la utilidad.

Para mí zetteldeft es la implementación completa y sencilla de un método sencillo y completo para tomar notas, y que funciona perfectamente y sin aspavientos. Me permite tener mis anotaciones y además, como soy así de especial, mis anotaciones por proyecto, gracias a la función que puse más arriba. Antes he utilizado otros sistemas, como el propio deft u org-roam, en algunos casos he convertido las notas para adaptarlas a zetteldeft, en otros me he dejado llevar por la holgazanería y las he dejado como estaban... sobre todo si no las necesito para el trabajo diario.

Footnotes:

1

Seguro que alguno ya se lo estará preguntando.

2

Por defecto es ~/.deft

3

También se le puede decir que recorra recursivamente subdirectorios, si las tenemos separadas de tal manera.

4

Ya he hablado sobre el método en cuestión y hay mucha información mucho más completa y mejor explicado de lo que lo puedo hacer yo.

5

Funciona como el comando find-file, pero sólo busca en el directorio de notas.

6

¡Ojo! AltGr-W que es §, no AltGr-w, que es ſ.

Categoría: zettelkasten emacs deft zetteldeft

Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, he decidido no proporcionar dicha opción en el Blog. Si alguien quiere comentar algo, me puede encontrar en esta cuenta de Mastodon, también en esta otra cuenta de Mastodon y en Diaspora con el nick de Notxor.

Si usas habitualmente XMPP (si no, te recomiendo que lo hagas), puedes encontrar también un pequeño grupo en el siguiente enlace: notxor-tiene-un-blog@salas.suchat.org

Disculpen las molestias.