orgzly-integrations
Table of Contents
- 1. Integraciones con orgzly project
- 1.1. Arreglos orgzly-integrations project someday_20230330
- 1.1.1. Actualizar el README.md y mergear dev con master
- 1.1.2. Notificar sólo cuando recupera conexión
- 1.1.3. Evitar que se quede parado git-sync
- 1.1.4. Cuando haya un commit de borrado, lanzar el intent de borrado en orgzly
- 1.1.5. Hacer un botón para crear una nueva nota
- 1.1.6. Hacer un botón para abrir el diario de ese día
- 1.1.7. Arreglar push que necesita un pull
- 1.1.8. Mejorar la concurrencia de git-sync
- 1.1.9. Poner en un .env los dispositivos
- 1.1.10. Poner en un archivo el modo de gasto de batería
- 1.1.11. Ir moviendo el estado de los TODOs en secuencia TODO→NEXT→HOLD→SOMEDAY manualmente
- 1.1.12. Automatizar el sistema de poner las tareas del día en la nota del día
- 1.1.13. DONE Exportar con resaltado de sintaxis en batch ARCHIVE
- 1.1.14. Ir moviendo el estado de los TODOs en secuencia TODO→NEXT→HOLD→SOMEDAY automáticamente
- 1.1.15. Exportar estado de las tareas en base a última fecha de modificación de LectureNotes/git/…?
- 1.1.16. Añadir logging a export.py
- 1.1.17. Hacer que el export.py no se atasque
- 1.1.18. Meterle Control Sockets
- 1.1.19. Investigar links a nodos específicos desde la pantalla de inicio
- 1.1.20. Investigar variables de entorno específicas a servicios de systemd
- 1.1.21. Hacer un servicio de systemd para export.py
- 1.1.22. Sacar las funciones a alto nivel
- 1.1.23. Time tracking en orgzly
[3/3]
project someday_20230330 someday_20230330- 1.1.23.1. Arreglar las actualizaciones en una misma nota project someday_20230330 defined_20230330
- 1.1.23.2. Arreglar comportamiento errático, deja de funcionar project someday_20230330 defined_20230330
- 1.1.23.3. Cambiarlo a una notificación persistante con la tarea actual y goto project someday_20230330 defined_20230330
- 1.1.23.4. Si hay varios timestamps activos, añadir una opción para saltar a cada una de las notas project someday_20230330 defined_20230330
- 1.1.23.5. DONE Esperar a que terminen la PR de timetracking en orgzly
- 1.1.23.6. DONE Crear el diario automáticamente en la rpi a las 00:00
- 1.1.23.7. DONE Notificación que saque tarea en curso
- 1.1.24. Optimizar consumo de batería en orgzly-integrations someday_20230330 project someday_20230330
- 1.2. Misc Someday orgzly-integrations project someday_20230330
- 1.2.1. Actualizar 0.org cuando se cree o borre un archivo .org
- 1.2.2. Que el servicio no se relance todo el rato
- 1.2.3. Poner links a los alias de roam en 0.org
- 1.2.4. Arreglar make_index.py
- 1.2.5. Mover presupuesto a orgzly
- 1.2.6. Notificaciones para poner alarmas
- 1.2.7. Probar si poniendo el path custom me funcionan los links por file
- 1.2.8. Hacer un script que avise de si hay duplicados de id en archivos .org en toda la carpeta org/ excluyendo Documents y code
- 1.2.9. Tests de los links
- 1.2.10. Meteorological time
- 1.2.11. GPS Time
- 1.3. Mejorar el script de LectureNotes.py para que sea genérico project someday_20230330
- 1.4. Misc Maybe orgzly-integrations project maybe_20230330
- 1.5. orgzly-android
- 1.6. Bugs orgzly
- 1.7. Automatizar todas las acciones posibles en orgzly integrations/link_translation.py idea
- 1.8. NFC
- 1.9. Paralelizar a nivel de archivo las sustituciones idea
- 1.10. Paralelizar los commits en git-sync idea
- 1.11. Poner tareas con id fijo idea
- 1.12. https://github.com/cashTangoTangoCash/orgFixLinks
- 1.13.
Quitar la recursividad en link_translation por orden secuencial - 1.14. Estrategia y diseño de archivar el repo ~/org
- 1.15. Cuando tengo un error de sync con pdfs, hacer el diff de las anotaciones idea
- 1.16. Meter links a versiones específicas de mis notas para hacer una cápsula del tiempo? idea
- 1.17. Hacerlo con crontab o con intervalo en el propio script? ARCHIVE
- 1.1. Arreglos orgzly-integrations project someday_20230330
1. Integraciones con orgzly project
1.1. Arreglos orgzly-integrations project someday_20230330
1.1.1. Actualizar el README.md y mergear dev con master
1.1.2. Notificar sólo cuando recupera conexión
Después de X veces que notifica que no tiene conexión, que notifique sólamente cuando vuelve la conexión
Lo dejo en la rama feature/reduce_notifications
También no notificar siempre que pierde conexión, sino cuando ya pierde conexión varias veces
Intente utilizar Dunst, pero no tiene un modo bueno de hacerlo
Quizás utilizar Dunst con un botón para que diga si desactivo las notificaciones o no
Esto es complicado porque uso una variable $NOTIFY_LOST_CONNECTION
, habría que crear una nueva función y llamarla dentro de esto para que vaya bien, porque tengo que coger el valor que devuelve si se pulsa un botón y blablabla
También lo intenté con --action
pero tampoco consigo llegar a nada
En Arch me está matando el proceso por GDBus.Error:org.freedesktop.Notifications.Error.ExcessNotificationGeneration: Created too many similar notifications in quick succession
1.1.3. Evitar que se quede parado git-sync
- A veces deja de funcionar, no sincroniza ni con touch
- A veces se queda parado porque muere un proceso y .git/index.lock no se ha borrado bien
- A veces se soluciona, a veces no
- Esto tiene pinta de que deja de funcionar git-sync-polling?
- Si se lanza pero no hay cambios, no los detecta con inotifywait
- Hacer un servicio que si git-sync lleva mucho tiempo con archivos no comiteados, entonces reinicia el servicio. También puede ser simplemente porque ha perdido la conexión?
- Poner un touch ~/org/0.org en crontab para que no se queda parado git-sync
1.1.3.1. Caso Concreto #1
Cuando hago un push y me lo rechaza porque hay cosas subidas nuevas, curiosamente PUSH_RESULT está vacío (o al menos la primera línea)
PUSH_RESULT=
Tocando un archivo (que puede ser el 0.org) se resuelve, porque hace pull el bucle de inotifywait
También pasa a veces que se atasca en la rpi porque no se modifica nunca un archivo (en los demás sitios seguro que lo acabo modificando en algún momento)
1.1.4. Cuando haya un commit de borrado, lanzar el intent de borrado en orgzly
Creo que habría que detectarlo en base a la salida de git pull, grepeando
Sacar el nombre y borrar esa nota
1.1.5. Hacer un botón para crear una nueva nota
En roam/… project../ journal../ → Con el mismo formato que crea emacs
Idealmente que exista un intent de orgzly y lo conecte a través de una interfaz de termux
1.1.6. Hacer un botón para abrir el diario de ese día
Idealmente también se podría hacer una función para compartir lo que sea al diario del día? Alguna manera de preseleccionar el notebook por defecto al compartir a orgzly
1.1.7. Arreglar push que necesita un pull
Investigar: al hacer push habiendo cambios remotos, asume que sigue estando bien (no da error, hay que fijrse en el mensaje de push en vez de $?)
Este es un log de ejemplo de lo que pasa:
../../Documents/4archive/2022-11-21/txt/orgzly-integrations-1.txt ../Documents/4archive/2022-11-21/txt/orgzly-integrations-1.txt
1.1.8. Mejorar la concurrencia de git-sync
Modelarlo como una red de Petri:
Process Modeling 11: Modeling with Petri nets - YouTube
1.1.9. Poner en un .env los dispositivos
Así no tengo que andar detectando cosas y es más limpio
- Móvil → Tiene termux y orgzly instalado.
1.1.10. Poner en un archivo el modo de gasto de batería
En vez de que sea directamente por detectar si está corriendo Syncthing (dejarlo como opcional)
1.1.11. Ir moviendo el estado de los TODOs en secuencia TODO→NEXT→HOLD→SOMEDAY manualmente
Ir planeando de semana en semana
También tengo quizás demasiadas cosas en SOMEDAY/MAYBE y me estoy empezando a agobiaar
Quizás tiene más sentido hacer las queries en base a hace cuánto tiempo que lo moví a HOLD, u ordenar los HOLD por fecha en la que lo moví a HOLD. Esto me libera NEXT para usarlo bien
Se puede hacer en emacs con Bulk editing
https://orgmode.org/manual/Agenda-Commands.html#index-m
Incluso se puede definir una función custom para que rote cada estado de TODO a su correspondiente
1.1.11.1. https://www.reddit.com/r/gtd/comments/ljctac/comment/gnf0k33/?utm_source=share&utm_medium=web2x&context=3
Active, for things that I intend to move forward on in the next couple of weeks. These are the ones where the Next Actions appear on my lists.
Parked, for things I am committed to doing in the relatively near future but not right now for one reason or another. I’ve got an NA for each of these projects so when I activate it it’s ready to go (sometimes priorities change mid week after all). This also includes stuff that I can’t do till spring or after covid or whatever, as well as stuff that’s just lower priority than the things I chose for this week.
Someday, stuff I’m pretty sure I’ll actually do one day just not yet. This stuff often doesn’t have any planning or anything done (unless I shifted it out of Parked).
Maybe, blue skies stuff, things I may well never do but if I don’t write it down it’ll still take up space in my head.
1.1.12. Automatizar el sistema de poner las tareas del día en la nota del día
Cuando creo la nota de cada día:
- Añado todas las cosas que tengan scheduled o deadline para ese día, asegurándome de que si una tarea tiene las dos, no la incluyo dos veces
- Distinguir entre dos tipos de cosas:
- Pongo todas las tareas con scheduled para un mismo día. Eso se puede hacer automáticamente y puede ser un primer paso
- Pongo algunas tareas a mano, como por ejemplo los hábitos, que van scheduled en cada día para que me salga en org-habits, pero que luego tienen una hora concreta a la que lo hago ese día. Idealmente con org-edna cuando marco la instancia como hecha, me pone el hábito como hecho también
Aquí tendría que poner un heading que fuese Scheduled
- Pongo todas las tareas con scheduled para un mismo día. Eso se puede hacer automáticamente y puede ser un primer paso
1.1.13. DONE Exportar con resaltado de sintaxis en batch ARCHIVE
org-html-htmlize-output-type → contiene el mensaje de eror sobre lo que pasa
However, this will fail when using Emacs in batch mode for export, because
then no rich font definitions are in place. It will also not be good if
people with different Emacs setup contribute HTML files to a website,
because the fonts will represent the individual setups. In these cases,
it is much better to let Org/Htmlize assign classes only, and to use
a style file to define the look of these classes.
To get a start for your css file, start Emacs session and make sure that
all the faces you are interested in are defined, for example by loading files
in all modes you want. Then, use the command
M-x org-html-htmlize-generate-css to extract class definitions.
(setq-local org-html-htmlize-output-type 'css) (unless noninteractive (org-html-htmlize-generate-css) (with-current-buffer "*html*" (write-file css-file)) (format "#+html_head_extra: <link rel=\"stylesheet\" type=\"text/css\" href=\"%s\"/>" css-file))
https://emacs.stackexchange.com/questions/38437/org-mode-batch-export-missing-syntax-highlighting → este no me ha funcionado
https://stackoverflow.com/questions/3591337/emacs-htmlize-in-batch-mode
No consigo que me saque los css bien, así que puedo exportarlo en un ordenador, coger el css y aplicarlo. Depende del lenguaje, entonces a ver cómo se hace eso
src/readtheorg_theme/css/htmlize.css
→ este es el archivo que está cogiendo al final
1.1.14. Ir moviendo el estado de los TODOs en secuencia TODO→NEXT→HOLD→SOMEDAY automáticamente
Necesito de alguna manera guardar para todos estos el momento en el que entran en ese estado
Esto puede ser simplemente un crontab que haga un sed a una hora s/\* TODO/* NEXT/
Tengo que tener alguna manera de revisar estos cambios (con git) para ver cómo se van moviendo estas tareas
1.1.15. Exportar estado de las tareas en base a última fecha de modificación de LectureNotes/git/…?
Requeriría que todo lo que me pongo a aprender lo escribo en LectureNotes
Asi cuando vuelvo a abrir un Notebook (y más importante, escribo cosas en él) entonces pasa la tarea correspondiente a seguir estando en ONGOING o lo que sea
Tengo que ver cómo se haría para cosas que no son LectureNotes (para cosas de git se me ocurre sacar una cierta periodicidad de git)
Modificación de archivos, y puede que envío de mensajes es un buen proxy de actividad
1.1.16. Añadir logging a export.py
Cuando haya una actualización, escribir en un archivo csv el tiempo actual y el tamaño de la cola
1.1.17. Hacer que el export.py no se atasque
Que la cola no contenga duplicados de archivos (si le llega una nueva actualización mientras tiene pendiente otra de procesar, que no lo exporte 2 o más veces). Lo que no está claro es en qué orden quedaría (la última actualización de cada nota? La primera?)
El setear la cola tiene que ser atómico para evitar dirty writes (más sencillo) o tener en cuenta concurrencia
1.1.18. Meterle Control Sockets
Para cuando tienes que loguearte muchas veces por ssh, hace las conexiones más rápidas
https://jrs-s.net/2017/07/01/slow-ssh-logins/
1.1.19. Investigar links a nodos específicos desde la pantalla de inicio
Se me ocurre un widget de termux que lanza un intent con url específica, pero no sé exactamente qué url lanzar para que la pille bien orgzly
1.1.20. Investigar variables de entorno específicas a servicios de systemd
Puede ser interesante utilizar Variables de entorno específicas a servicios de systemd
[ ]
Hacer un script de inicio[ ]
Hacer un script para apagarlo al finalizar la sesión?? Puede que no sea necesario, sí que lo era con los scripts de autostart porque se volvía a lanzar al salir y volver a entrar en la sesión
1.1.21. Hacer un servicio de systemd para export.py
Primero he hecho una ñapa con bash, se puede mejorar si hiciese falta (spoiler: no hace falta), pero para aprender está bien
La idea es poder desactivarlo a unas horas y activarlo a otras para que:
- No se ponga a procesar cuando se modifican muchos archivos (caldav.sh, translate_links.py)
- Se limpie la cola cada día
Puede ser interesante utilizar Variables de entorno específicas a servicios de systemd
1.1.22. Sacar las funciones a alto nivel
Esto ya lo he ido haciendo más o menos
Intentar definir lo mínimo posible como funciones true/false para que valga en escritorio
Sacar la definición a la función de más alto nivel posible, definir orgzly_check_and_sync como true en vez de definir lo de dentro como true
El objetivo es poder correr el script para cargar las funciones sin ejecutarlo
1.1.23. Time tracking en orgzly [3/3]
project someday_20230330 someday_20230330
1.1.23.1. Arreglar las actualizaciones en una misma nota project someday_20230330 defined_20230330
Si estoy midiendo el tiempo en la misma nota (journal) y paso de contar una tarea a otra en ese mismo archivo, entonces da problemas
(lo de siempre de borrar antes de sincronizar y demás)
Parece que lo más sencillo es meter un sleep 60 después del inotifywait y ya
Se resolvería al
1.1.23.2. Arreglar comportamiento errático, deja de funcionar project someday_20230330 defined_20230330
A veces no me iba a ninguna nota, current estaba vacío, es posible que sea que no se espera hasta que está terminado de sincronizar
Se resolvería al
Aun así hay veces que se deja de actualizar porque sí (?), se queda atascado en el código de lanzar la notificación y no sale ni hace nada → se le puede poner un timeout a esa instrucción en particular que parece quedarse colgada
1.1.23.3. Cambiarlo a una notificación persistante con la tarea actual y goto project someday_20230330 defined_20230330
1.1.23.4. Si hay varios timestamps activos, añadir una opción para saltar a cada una de las notas project someday_20230330 defined_20230330
Esto lo hacía a mano
1.1.23.5. DONE Esperar a que terminen la PR de timetracking en orgzly
https://github.com/orgzly/orgzly-android/pull/691#pullrequestreview-560515187
Parece que está ya bastante avanzada, si lo mergean entoces daría igual todo lo demás y ya lo tendría implementado
1.1.23.6. DONE Crear el diario automáticamente en la rpi a las 00:00
La nota diaria pasa a ser lo que hago en ese día
El objetivo más global es irme moviendo a notas diarias
1.1.23.7. DONE Notificación que saque tarea en curso
Hacer un script bash que usa ripgrep para sacar la nota que está actualmente clocking
Que saque una notificación si matchea y entonces que meta una acción para abrir orgzly con una búsqueda de esa nota
Ahora estoy compilándome mi propia versión, esto me da un poco más igual
1.1.24. Optimizar consumo de batería en orgzly-integrations someday_20230330 project someday_20230330
1.1.24.1. Profiling de inotifywait y git pull project someday_20230330 defined_20230330
Ver cuando consume git-sync.sh/wrapper.sh (en general un periodo X, medir uso de CPU) y sus hijos, para ver dónde está el consumo de batería
1.1.24.2. No utilizar git pull todo el rato, gasta demasiada batería project someday_20230330 defined_20230330
- Lo mismo lo crea más inotify el gasto de batería https://superuser.com/questions/968274/something-similar-to-inotifywait-without-being-able-to-install-inotifywait
Probablemente sí, porque con top de ve mucho uso de inotifywait
- En móvil, solo es estrictamente necesario hacer un inotify, sino sólo cuando se activa la notificación de sincronización, esperando a que acabe para que estén disponibles todos los archivos
- Esto hace que dependa del SyncService de orgzly, que si quiero que lo quiten me fastidiaría esto
- Esto hace que dependa del SyncService de orgzly, que si quiero que lo quiten me fastidiaría esto
- En móvil, solo es estrictamente necesario hacer un inotify, sino sólo cuando se activa la notificación de sincronización, esperando a que acabe para que estén disponibles todos los archivos
- Hacer git fetch y sólo git pull cuando hay cambios
- Crear un archivo vacío para disparar inotify
Lo suyo sería un servicio con conexión abierta, que envía un mensaje que dispara un git pull, y así de paso gano syncs más rápidas todavía
https://stackoverflow.com/questions/45693430/how-long-can-a-tcp-connection-stay-open → no se puede hacer una conexión TCP porque los routers intermedios lo cierran
https://networkengineering.stackexchange.com/questions/30959/duration-of-tcp-connection-last-in-idle-stateno-data-exchange
- Tengo que ver como abrir este servicio, complicado
- El inotify no va a dar un timeout salvo que cree y borre un archivo
Cuidado con esto, porque también tengo el timeout de los 60 segundos después de que se borre un archivo. No está claro como interaccionan
- Crear un archivo vacío .org dispara el proceso de sync
- Pero borrar ese archivo vacío .org también dispara el esperar 60s
- Una mejor solución puede ser tener un archivo .org que se sobreescribe con contenido irrelevante
- Crear un archivo vacío .org dispara el proceso de sync
- Tengo que ver como abrir este servicio, complicado
- No crear archivo vacío
- Cuando llegue un mensaje de cambios, hacer git pull
- Si está sucio el árbol, (crear un archivo vacío .org) hacer todo el proceso de git add commit push
- Cuando llegue un mensaje de cambios, hacer git pull
- Crear un servicio de mensajes para git pull de org project someday_20230330 someday_20230330
- Protocolo custom
- Tengo que mantener una conexión abierta iniciada por el móvil/tablet/ordenador (que estará detrás de un firewall)
- Me conecto a lytex.space:puerto (un puerto por dispositivo, estará escuchando la rpi y lo tendré abierto en el firewall de casa)
En cada dispositivo tengo lytex.space, puerto - En la rpi pongo un notify que envíe cualquier cosa por los puertos cuando cambia algo en org
- En móvil/tablet/ordenador creo y elimino un archivo .org tonto para disparar inotifywait
- Qué pasa si pierdo conexión??
- Tengo que mantener una conexión abierta iniciada por el móvil/tablet/ordenador (que estará detrás de un firewall)
- MQTT
https://stackoverflow.com/questions/28565284/why-mqtt-android-drains-battery → probablemente no me resuelve lo de la batería
https://stackoverflow.com/questions/45693430/how-long-can-a-tcp-connection-stay-open → tampoco se puede hacer una conexión TCP porque los routers intermedios lo cierran
Para eso está MQTT, para mantener la conexión abierta. Vas a tener una conexión cada X min en vez de cada 15s como ahora, esto supone ahorro de batería
Puedes elegir un valor tan grande como quieras de keepalive, pero te arriesgas a que se corte la conexión
https://networkengineering.stackexchange.com/questions/30959/duration-of-tcp-connection-last-in-idle-stateno-data-exchange
https://github.com/raphaelcohn/bish-bosh → cliente de bash
https://pypi.org/project/paho-mqtt/ → librería de python, muy usada
https://medium.com/@rapidvalue/mqtt-the-iot-protocol-dec2b8a9faf3 → alternativas mqtt
https://mosquitto.org/download/ → broker/servidor (está en repos de rpi4, muy fácil de instalar)
- Posibles peligros
- Puede que se retroalimente el setup si no está bien pensado
- Cuando un nodo tiene cambios y hace push, envía un mensaje a la RPi que hace de servidor central
- La RPi entonces envía un mensaje de que hay cambios (también puede hacer pull para comprobar que hay cambios realmente)
- El mensaje llega a los nodos y hacen todos pull
- Cuando un nodo tiene cambios y hace push, envía un mensaje a la RPi que hace de servidor central
- Es vulnerable a DoS si no tiene ninguna manera de comprobar que un mensaje proviene de una fuente legítima
- En cada mensaje se puede enviar
“unix_timestamp,hash”
Donde el hash es el timestamp salteado con una clave que conocen todos los nodos
- Puede que se retroalimente el setup si no está bien pensado
- mqtt push notification behind nat - Google Search
- Protocolo custom
- How to Make a Program Choose an Optimal Polling Interval
- Enviar sólo la última actualización
Si estoy de viaje con la tablet, no voy a tener conexión y cuando se conecte le llegarían todos los mensajes de cambio a la vez.
Habría que descartar los mensajes si llega un mensaje de actualización. En cuanto llega un nuevo mensaje de git pull, puedo dejar de enviar el último
Para MQTT aquí está cómo “borrar” un mensaje retenido → https://www.hivemq.com/blog/mqtt-essentials-part-8-retained-messages/
1.2. Misc Someday orgzly-integrations project someday_20230330
1.2.1. Actualizar 0.org cuando se cree o borre un archivo .org
Se puede poner como inotify y así no corre todo el rato
1.2.2. Que el servicio no se relance todo el rato
Si el servicio falla, no queremos que se lance todo el rato porque puede que no deje arrancar al entorno de escritorio. Poner un delay sensato
También si le falta una dependencia se lanza como loco
1.2.3. Poner links a los alias de roam en 0.org
mismo link, distinto texto
Procesar roam_alias en python y actualizar los backlinks
1.2.4. Arreglar make_index.py
Por los mismos Problemas que hay en LectureNotesIndex.py
Sólo funciona si tengo carpetas sin ningún .org (como los links roam/Documents por ejemplo)
1.2.5. Mover presupuesto a orgzly
Hacer una tabla en org mode Agrupaciones por ámbito como Time tracking (mirar lo del banco que tiene algo parecido)
https://www.xataka.com/empresas-y-economia/huchas-virtuales-al-metodo-ynab-soluciones-tecnologicas-que-plantean-ayudarte-a-ahorrar-1
1.2.5.1. Ver “Conquering Your Finances with Emacs and Ledger” en YouTube
1.2.6. Notificaciones para poner alarmas
Si a las SCHEDULED+9min o algo así no le he dado a reprogramar, entonces me pone una alarma que suena en 1min y sé que me tengo que ir
Para cosas muy constreñidas por tiempo
Poner con un inotifywait, si eso sólo para archivos concretos porque ya sé dónde me voy a poner esas alarmas (por ejemplo las puedo poner en tiempo.org,
o crearme uno nuevo que sea Alarmas.org)
1.2.7. Probar si poniendo el path custom me funcionan los links por file
Antes lo que pasaba era que si abría un archivo .org no me lo asociaba con orgzly
Ver si los abre usando orgzly
Aún así sólo me funcionaría desde la carpeta principal, no desde cualquier ruta…
1.2.8. Hacer un script que avise de si hay duplicados de id en archivos .org en toda la carpeta org/ excluyendo Documents y code
1.2.9. Tests de los links
- Que no te reemplaze los links 2 veces
- Aprender bien a hacerlos con Mastering Regular Expressions
1.2.10. Meteorological time
When does temperature rise/drop below XXXX?
1.2.11. GPS Time
Create a reminder 1-2min in the future when your GPS position is inside house or
something → Better a reminder with a tag @home
1.3. Mejorar el script de LectureNotes.py para que sea genérico project someday_20230330
- Sincronización de archivos .md con archivos .org
1.4. Misc Maybe orgzly-integrations project maybe_20230330
1.4.1. Poner debug configurable
Poner un comando que sea ECHO_DEBUG o algo así, y lo puedo definir como “echo DEBUG: ” o como true en función de una variable de entorno por ejemplo
1.4.2. Separar las comprobaciones de correr el script
Que haga comprobaciones de que puede ejecutar todo lo necesario aparte, en tiempo de instalación mejor
1.4.3. Push a una nueva rama en caso de conflicto
Esto no me gusta demasiado porque al final tienes que hacer el merge en casa y tus sistemas dejan de ser confiables
Si dejas el conflicto y lo subes, entonces sólo tienes un texto raro que tienes que revisar más tarde, pero no tienes una tarea en una rama y otra tarea en otra
1.4.4. Tener accesibles las notas de LectureNotes desde el móvil también
1.4.5. Cambiarle el nombre?
Quizás cambiarlo de nombre, por las exportaciones no es sólo orgzly [o mover las exportaciones a doom.d, pero es más complicado porque allí no tengo instalado nada y no tengo ORG_DIRECTORY por ejemplo]
1.4.6. Alternativas para sustituir a inotify en otros sistemas
- https://emcrisostomo.github.io/fswatch/
- facebook/watchman: Watches files and records, or triggers actions, when they change.
No es una alternativa como tal, utiliza otros comandos para hacerlo más portable
https://news.ycombinator.com/item?id=5795146
Watchman uses inotify under the covers (or kqueue or portfs, depending on the OS) and abstracts the differences away. - buscar en google “inotify vs” y te autocompleta y ya vale
1.5. orgzly-android
1.6. Bugs orgzly
- Cuando se sincroniza no se puede
- Buscar notas
- No envía notificaciones
- Buscar notas
1.6.1. Por qué no se envía notificaciones en orgzly?
Esto parece que ya no pasa?? No entiendo nada
Preguntar si podría ser porque en android 10 no se puede lanzar intent desde background → en tablet siempre me han funcionado
Voy a probar a ver qué tal va ahora con el nuevo sync
https://github.com/orgzly/orgzly-android/issues/783 Puedo sacar los logs también con adb
Parece que era simplemente cuestión de tener muchas notificaciones atrasadas??
Al final → Apagar y volver a encender el móvil xD
Siempre funciona en la tablet, puede ser cosa de Android 10
1.6.1.1. Stress test para ver si no saca notifs
Probar en la tablet
- Si tiene una tarea con deadline y scheduled, se arurulla y no saca nada?
1.7. Automatizar todas las acciones posibles en orgzly integrations/link_translation.py idea
Hacerlo en general, que sea muy fácil añadir una nueva funcionalidad
1.8.
1.9. Paralelizar a nivel de archivo las sustituciones idea
Así son super rápidas, utilizar futures.ThreadPool o futures.ProcessPool (no sé
cuál de las dos será mejor, porque el trabajo parece bastante pesado una vez que
abres el archivo)
1.10. Paralelizar los commits en git-sync idea
Para que vaya más rápido add-commit-push se puede pasar un parámetro para que se
ejecute en paralelo hasta justo antes del push, y entonces compruebe si hay
archivos borrados en el commit (si no lo detecta, va hacia delante)
1.11. Poner tareas con id fijo idea
Así saben cómo sobreescribirse a sí mismas (sólo editan esa parte del archivo org mode)
1.12. https://github.com/cashTangoTangoCash/orgFixLinks
Repo para arreglar los links
1.13. Quitar la recursividad en link_translation por orden secuencial
No es necesario recorrer recursivamente los headings
Sólo hace falta recorrerlos de manera secuencial sean del nivel que sean
Esto no sé si lo permite la librería como tal
1.14. Estrategia y diseño de archivar el repo ~/org
Implementar un clustering de notas
- Mover todo a un git antiguo y borrar los commits del repo actual
- Borrar los commits salvo los de principio de día y final de día (no interesa mucho tener una granularidad por debajo del día)
- Es esto necesario, consume muchos recursos? Mirar los cuellos de botella de git si quiero ver qué podría pasar
git clone --depth n <path to repository>
más rápido, borrar la carpeta y recrear. El único sitio donde tendría que ir lento sí o sí sería en la rpi que tendría todo el histórico- Una estrategia para archivar es linkar a la orgwiki (reemplazar los links de org mode por links orgwiki), y si fuese necesario, moverlos de git a Syncthing para sincronizar
- No se puede linkar a headlines privados
- No se puede linkar a headlines privados
1.14.1. Hacer un archivo rebase_(device) / reset_(device) por cada dispositivo project someday_20230330
Esto indica que no va por el camino normal y tiene que hacer un rebase (tiene un reset pendiente)
Lo hago por cada dispositivo porque si fuese único tienen que estar todos los dispositivos online a la vez (si no uno hace git pull y te fastidia el rebase)
Borrar cada archivo una vez que el dispositivo en cuestión hace fetch (importante, porque puede hacer reset a lo que cree que es origin/master, pero está desactualizado), reset y funciona bien
- Lo bueno sería hacer stash → reset → stash pop → stash drop, con un drop siempre al final por si hay conflictos (sin el drop puede que en algún momento haga stash pop y me inserte cosas de hace tiempo sin ningún sentido)
1.14.1.1. Modificar en git pull en orgzly-integrations para que resetee a origin/master
La idea es poder hacer rebases y forzar el push y que luego eso mismo funcione cuando los demás dispositivos se lo bajan
https://stackoverflow.com/questions/1125968/git-how-do-i-force-git-pull-to-overwrite-local-files
Esencialmente es cambiar el git pull por:
git fetch --all git reset --hard origin/master
Pero si hago esto y tengo un commit, lo voy a perder porque entonces no hago merge.
Habría que editar git-sync-polling
, pero es complicado que cubra este caso y además el de que sí que haya cambios
1.14.2. Sacar estadísticas de uso por archivo en git project maybe_20230330
Utilizando askgit
Es complicado de sacar estas estadísitcas con askgit, se queda pensando
1.15. Cuando tengo un error de sync con pdfs, hacer el diff de las anotaciones idea
1.16. Meter links a versiones específicas de mis notas para hacer una cápsula del tiempo? idea
https://orgmode.org/worg/org-contrib/org-git-link.html → los links a commits específicos ya existen
1.17. Hacerlo con crontab o con intervalo en el propio script? ARCHIVE
- Puede haber errores extraños de sincronización si se ejecutan casi a la vez
- El periodo es el periodo en el que se rescanea la carpeta (que está con inotify)