Resumen de mis últimas herramientas
Llevo unos días alejado un poco de las tareas del blog, pero no por gusto. Ciertos problemas de salud me han impedido escribir y ya lo echaba de menos. El artículo de hoy viene a resumir un poco las cosas que vengo haciendo últimamente. Con el amigo Fénix de Hispa Emacs ya estuvimos hablando un poco sobre estas cosas y después de ese par de charlas decidí dedicar una entrada del blog a explicar un poco más detenidamente estas cosas.
Son cosas que podríamos pensar que están deslavazadas, sin embargo, están más unidas de lo que parece. Un buen amigo se refiere a este conjunto de útiles como la secta. Sin embargo, para los proyectos que tengo en mente, se ajustan muy bien.
El último personal, de hace unos pocos días, es un proyecto cuyo principal objetivo es obligarme a aprender vocabulario informático en Esperanto. Me da mucha rabia cuando me preguntan sobre algún aspecto informático en esa lengua y me faltan las palabras para expresar lo que quiero de una manera clara y rápida. Siempre tengo que echar mano de expresiones y vueltas lingüísticas que ofuscan, más que aclaran, lo que quiero decir. Para ello, he comenzado un proyecto de programación de un raytracer, como el que ya hice en erlang1. En este caso, para no tener repetido el contenido de los raytracer, lo situé en un repositorio externo de las siguientes características:
- Repositorio
fossil-scm
en un lugar público. Este repositorio es público y se puede cacharrear por allí si quieres. El idioma de desarrollo es el Esperanto, por lo que si no controlas dicha lengua se te hará un poco difícil seguir las explicaciones. - Tcl/Tk es un lenguaje de programación del que ya he hablado en varias ocasiones. En este caso, me interesa aprender todo lo referente a la /POO/Programación Orientada a Objetos. con él y también el tema de aplicaciones multihilo y, por último, sobre la posibilidad de expandirlo utilizando librearías C/C++ externas.
- Pikchr: la mayoría de las imágenes para explicaciones las realizaré
con este lenguaje de descripción de esquemas. El motivo principal es
que está embebido en la propia herramienta de
fossil
y por tanto lo tengo muy a mano.
Fossil-scm
Fossil-scm es una herramienta de control de versiones creada para la
gestión del código de SQLite por el mismo creador de SQLite. Como
sabéis SQLite nació inicialmente para proporcionar una herramienta de
bases de datos a los usuarios de Tcl/Tk. De la secta, como lo llama mi
colega, es el chismático más exitoso. A estas alturas es conocido por
todos y una de las librerías más descargadas. Puedes encontrar
SQLite en casi cualquier sitio, para usos muy diversos. Por ejemplo,
un repositorio .fossil
es un archivo SQLite, que se despliega desde el
ejecutable fossil
.
Ya he contado más veces en este blog que el repositorio lleva
incorporadas algunas herramientas útiles para los equipos de trabajo:
wiki, gestión de errores y muchas cosas más. Para resumirlo de algún
modo sería (casi) como tener un gitea
en el propio ejecutable fossil
y
cada repositorio se beneficiará de esas herramientas.
Una de las cosas que descubrí recientemente es que se pueden editar los archivos del repositorio desde el /GUI/Graphical User Interface. web de la aplicación. Tan sólo hay que establecer qué tipo de archivos se pueden editar.
También se podría establecer un editor externo para hacer la edición,
pues aunque cuenta con una herramienta interna para hacerlo, es
bastante sencilla y espartana. El repositorio, al visualizar un
archivo .md
lo visualizará renderizándolo y mostrándolo como si fuera
una página web. Si hemos activado la edición, como veíamos antes, nos
aparecerá un submenú Edit
.
Al pulsar en Edit
nos aparecerá el editor:
Es un editor de texto muy sencillo, aunque suficiente para escribir
MarkDown, permitiéndonos previsualizar los cambios. Una vez hemos
terminado con la edición, para guardar debemos hacer un commit
.
La desventaja es que no es un editor potente y la ventaja principal es que se pueden hacer modificaciones desde cualquier sitio, si el repositorio es accesible con cualquier navegador web. Algo que me vendrá muy bien para escribir en aquel sitio mediante la tablet, o incluso el teléfono móvil, si, por lo que fuera, no tengo en ese momento mi portátil a mano.
Pikchr
Ya he hablado con anterioridad en este blog2 de este lenguaje de descripción de diagramas, que junto con graphviz, es la herramienta que más estoy utilizando para realizar mis gráficos.
Sabía que dentro de fossil
se encontraba un intérprete de pikchr
, cada
vez que se encuentra un bloque de código marcado así, visualiza el
gráfico y no el código. Lo que no sabía es que además cuenta con una
herramienta para escribir y modificar este tipo de gráficos.
Si seleccionamos el sandbox de pickchr
nos aparecerá la siguiente
herramienta:
Esta forma de hacer diagramas ya la venía empleando para realizar genogramas, algo que difícilmente se puede dibujar con graphviz:
En mi caso también, me bajé los fuentes de su página web y lo compilé
para mi máquina. Al compilar simplemente crea un ejecutable que puedes
copiar a cualquier parte de tu máquina donde lo pueda encontrar el
sistema cuando busca el ejecutable. En mi caso, lo copié a un
directorio local mío: ~/opt/bin
. Desde ese mismo momento y con la
ayuda del paquete pikchr-mode
de Emacs puedo realizar mis diagramas
desde mi editor favorito e incluirlos en bloques de código dentro de
org-mode
.
Tcl/Tk
Cada vez me encuentro más cómodo con este lenguaje y cuando necesito hacer un script se ha convertido en mi primera opción. Sin embargo, apenas he arañado un poco la superficie haciendo un par de proyectos antes, alguno de los cuales aún no está terminado. Por lo menos, uno de ellos alcanzó su versión alfa, a la espera de que haga algunas pruebas de producción que seguramente destaparán cientos de errores.
El objetivo del proyecto que conté al principio del artículo no sólo consiste en aprender vocabulario técnico en Esperanto. También quiero aprender más cosas sobre Tcl/Tk:
- Su sistema de POO:
TclOO
. Hasta ahora todo lo que he hecho con este lenguaje ha tenido un enfoque más a procedimiento o incluso en cierto modo funcional. Sin embargo, quiero ver hasta qué punto me manejaré con la POO que trae incorporada. - Expandir el lenguaje mediante un módulo C/C++. Al elegir el raytracer la intención es que la parte de cálculos intensiva se dirija a una librería que se programará en C/C++ para acelerar el render. Quiero aprender, por tanto, a programar dicha extensión. No sé si es fácil o difícil ni si lo lograré o no, pero me parece interesante.
- Aprender cómo se realizan aplicaciones multihilo. Aunque ya lo toqué por encima en uno de los proyectos, me limité a levantar un servidor que escuchaba en un puerto y además ese código lo copié de algún otro ejemplo que encontré por la red... así que no aprendí nada.
Zen browser
Fuera de lo que es estrictamente la secta, llevo un tiempo probando con bastante asiduidad el zen browser como navegador de trabajo. Aún no lo tengo como navegador por defecto pero no me extrañaría que en un futuro no muy lejano lo sea.
Zen es un navegador que proviene de un fork de FireFox y que tiene una serie de herramientas que mejoran la experiencia de la navegación. Por ejemplo:
En esa captura podemos ver que tengo cargado el editor de texto del
repositorio fossil
y puesto que estoy escribiendo en Esperanto tengo
un diccionario online, cargado en lo que llaman Zen sidebar. Esto me
facilita enormemente el trabajo sin estar saltando de pestaña a
pestaña. Como se puede ver en los botones que hay bajo el sidebar le
he puesto acceso a la wipedia, a varios diccionarios y otras páginas
de consulta habituales. No sólo está el sidebar, también tiene la
capacidad de distribuir distintas pestañas en la ventana de trabajo,
lo que hace que sea muy fácil tener una mitad del navegador para
buscar documentación mientras la otra parte la puedes utilizar para
cualquier otra tarea (ahora que muchas aplicaciones corren sobre web).
Aún le faltan algunas cosas por pulir. La apariencia por defecto es muy espartana y los temas no parecen estar muy afinados. Los de FireFox no funcionan, porque la estructura de la ventana es distinta. Sin embargo, me parece mucho más acertado en cuanto a funcionalidad de lo que está FF. Más en la línea de lo que podría ser Opera o vivaldi, pero siendo un digno heredero de FireFox y no de Chrome.
Conclusiones
Después de mis problemas de salud decidí tomarme la vida con más calma y dedicarme tiempo. La idea es no estresarme demasiado, pero mantenerme activo lo suficiente para no aburrirme, dedicándome a cosas que me gustan y/o me parecen interesantes. Me podría haber dado por el ganchillo o la papiroflexia, pero no es el caso. Así que me dedicaré a escribir más (código y otros cuentos), a leer y a traducir cosas al Esperanto.
Si alguien de los que lee esto se encuentra con ánimo, controla de Esperanto y quiere ayudar o colaborar en el proyecto puede entrar en el enlace del repositorio que puse arriba y crearse una cuenta. A partir de ese momento podrá acceder a escribir también en el foro del repositorio. A hacer comentarios y sugerencias y lo que le venga en gana. Aunque, evidentemente, el foro estará moderado por mí.
Notas al pie de página:
Artículos de la serie raytracer: Un pequeño raytracer, Trazando rayos, Rayos y centellas, Material difuso y corrección gamma, Materiales, Cámara
Comentarios