Archivo de la etiqueta: organización

Mi entorno de trabajo

Me han preguntado bastantes veces cómo me organizo y, aunque hace un tiempo hablé un poco sobre mi entorno de trabajo en Emacs, desde entonces he introducido algunas mejoras así que voy a hablar de mi entorno de trabajo en general. Aprovecho para enlazar otras entradas del blog en las que hablé en concreto de las herramientas que cito para que se note que las uso de verdad y no es (solo) postureo.

La base: acta en Org

La base de mi metodología es un archivo de Org que utilizo como acta y lista de tareas. Org tiene la ventaja de que me permite añadir imágenes, código y enlaces a diferentes documentos y, además, puedo exportar la parte del acta en diferentes formatos según las manías del receptor.

Este archivo se abre directamente cuando abro Emacs por las mañanas para que pueda ver qué me queda por hacer y acceder directamente a los documentos o al código en los que estoy trabajando desde él, que se abrirán o no en el propio Emacs según su formato. Para que esto ocurra he añadido la siguiente líneas a mi archivos de configuración:

; Abrir archivos con programa que corresponda
; Lo privativo!
(add-hook 'org-mode-hook
           '(lambda ()
          (add-to-list 'org-file-apps
               '("\\.m\\'" . default)    ;; Matlab
               '("\\.fig\\'" . default)  ;; Matlab
               '("\\.xlsx\\'" . default) ;; Excel
               )))

; Abrir acta al iniciar Emacs
(find-file (expand-file-name "acta/acta.org" default-directory))

Como toda mi labor investigadora se basa en este archivo tengo, evidentemente, una copia de seguridad.

El soporte auxiliar: diario de Emacs

Aparte de tener apuntadas mis tareas por temática, llevo un diario en el que apunto qué he hecho cada día. Esto tiene una doble función: por una parte, cuando me desmoralizo y creo que no avanzo, tengo evidencia empírica de que no es así; por otra, me sirve para seguir mi proceso mental y recordar qué estaba haciendo antes de irme de vacaciones, por ejemplo. Esto me resulta crucial porque me permite tanto desconectar en cuanto levanto el culo de la silla del trabajo como tener mis ideas hiladas en un lugar que no es mi (variable) cabeza.

Para ello uso el diario de Emacs de manera poco ortodoxa, que es como me gusta a mí usar las cosas. Tengo una copia de seguridad también del diario, claro.

El producto: texto plano y control de versiones

El tercer pilar de mi organización es que todo lo que produzco (los documentos, la bibliografía, las imágenes, el código …) es texto plano. Aparte de que de esta manera podré seguir accediendo a mi información dentro de treinta años1, así puedo tener todo bajo control de versiones. Para el control de versiones uso Magit en Emacs y git en la terminal por la vieja costumbre.

Os detallo un poco más cómo funciono:

  • Documentos: escribo en Org o en LaTeX tanto los artículos como los informes y las presentaciones para clase. Para LaTeX uso el modo AUCTeX con RefTeX para las referencias bibliográficas, CDLaTeX para las ecuaciones y Company para el autocompletado.

  • Bibliografía: la manejo con Jabref y, últimamente, con Helm-bibtex desde el propio Emacs. En este último caso, uso las variables locales para seleccionar el archivo de bibliografía correspondiente a cada documento así como la carpeta donde viven los pdfs.

%%% Local Variables:
%%% eval:(setq bibtex-completion-bibliography '("ruta_a_bib"))
%%% eval:(setq bibtex-completion-library-path '("ruta_a_pdf"))
%%% End:
  • Imágenes: trabajo generalmente con svg en Inkscape, o exporto a eps o svg desde el resto de programas. El motivo es que ambos son formatos vectoriales y eps el favorito de las revistas científicas. Para las gráficas científicas, tengo el código para producir la imagen bajo control de versiones y una función que le da un estilo uniforme a todas las imágenes que exporto.

  • Código: programo en Matlab por obligación y en Julia y últimamente algo en Python por vicio. Con Matlab hago más que suficiente con no caer en las malas prácticas que fomenta. Para programar en los otros dos uso los modos específicos de Emacs y también Org para programación literaria.

Un día en mi vida

Dicho esto, uno de mis días laborales suele tener esta estructura:

  1. Abro Emacs.
  2. Leo en la lista de tareas qué me queda por hacer y en el diario qué hice el día anterior.
  3. Decido qué voy a hacer. Si hay un archivo relacionado, estará enlazado en la propia lista de tareas y se me abrirá en Emacs o en el programa externo correspondiente.
  4. Trabajo. Escribo, programo, busco papers … abro ramas y envío actualizaciones al repo según corresponda con Magit o desde la terminal.
  5. Actualizo la lista de tareas y el diario con lo que vaya terminando y las conclusiones sacadas.
  6. Cierro Emacs.

Esta rutina laboral se irá modificando según vaya aprendiendo cosas nuevas, cuando eso ya os contaré. ¡De momento contadme vosotros qué hacéis!


  1. Dudo que vaya a querer, pero podré

Lo que he aprendido: organizándose en la terminal con Yokadi

El otro día el señor victorhck nos enseñaba en su blog una herramienta para crear listas de tareas directamente en la terminal pero ¡no nos decía cómo se utilizaba!

Así que aquí esta una servidora, friki de la terminal y de las listas, jugando con el cacharro y mostrándolo aquí. Espero que os sea útil 🙂


Tal y como dice en su README

Yokadi es una herramienta basada en SQLite que sirve para crear listas de tareas desde la terminal.

¡Interesante!

Como la versión de los repositorios era vieja, lo instalé Yokadi con pip3 (es necesario Python 3):

pip3 install yokadi

Al ejecutarlo aparecerá un command prompt para que escribamos cosas:

ondiz@slimbook101:~$ yokadi
yokadi>

Ahora crearemos un proyecto que a su vez tendrá dentro tareas. Cada tarea tiene que tener un nombre y opcionalmente se le pueden añadir una descripción, unas palabras clave, una fecha y un nivel de urgencia.

La sintaxis para crear una tarea dentro de un proyecto es la siguiente

yokadi > t_add Proyecto Tarea

Por ejemplo:

yokadi> t_add Domination Rule the world
Project 'Domination' does not exist, create it (y/n)? y
Added project 'Domination'
Added task 'Rule the world' (id=1)

Podemos ver los proyectos y sus respectivas tareas con t_list:

yokadi> t_list
                Domination               
ID│Title         │U  │S│Age     │Due date
──┼──────────────┼───┼─┼────────┼────────
1 │Rule the world│0  │N│0m      │           

Esta tabla nos dice la urgencia de la tarea (U), si está hecha o no (N: not done, D: done), hace cuánto que la creamos y para la fecha en la debe estar terminada.

El numerito que tiene cada tarea a la izquierda nos sirve para acceder a ella. Por ejemplo, para marcarla cuando ya la hayamos terminado haríamos:

yokadi> t_mark_done 1
Task 'Rule the world' marked as done

También podemos añadirle una fecha, tanto relativa como global, con t_due:

yokadi> t_due 1 +3d # para dentro de 3 días
yokadi> t_due 1 15/01 9:00 # con fecha y hora

Si hacemos t_list ahora nos pondrá el tiempo que queda hasta la fecha límite:

yokadi> t_list --all
                Domination               
ID│Title         │U  │S│Age     │Due date
──┼──────────────┼───┼─┼────────┼────────
1 │Rule the world│0  │N│14m     │3d 

Podemos modificar añadirle más información a la tarea en t_describe, que nos abrirá el editor que tengamos asignado en la variable $EDITOR o, si no, vi. La descripción que hemos escrito así la podemos ver con t_show en el apartado Keywords.

Os he grabado un cast con asciinema a sugerencia de victorhck, haciendo más o menos lo que os cuento pero digamos que con un toque friki (es la primera vez que grabo y parezco monguer):

Poca cosa más, a partir de ahí todo es jugar y leer la docu. Ya me diréis 😀

Referencias

Docu de Yokadi