
Los familiarizados con términos marinos sabrán que la bitácora es un mueble que se fija a la cubierta de las embarcaciones, al lado del timón. Su particular forma, con dos esferas de hierro a cada lado que le dan la apariencia de un púgil preparado para el combate, no es accidental; un complicado mecanismo de hierros e imanes reduce al mínimo posible los desvíos magnéticos, lo que permite alojar en ella la brújula y que esta señale en todo momento el norte. Los caprichos del lenguaje quisieron que al guardarse el cuaderno de navegación al lado de la brújula, el nombre del mueble acabara designando al cuaderno mismo. Si hacemos este ejercicio etimológico con la lengua inglesa, descubrimos que nuestro cuaderno de bitácora es para ellos el logbook, voz compuesta por book, libro, y log, leño. Para calcular la velocidad del navío, se ataba un madero a una cuerda con varios nudos que se arrojaba al mar; aún hoy seguimos usando los nudos, equivalentes a una milla náutica por hora, como unidad de medida. El logbook era por lo tanto el libro donde se anotaban, entre otras cosas, las mediciones obtenidas con aquel ingenio. Con el tiempo y como bien sabrán los informáticos, log pasó a significar también registro ordenado de eventos, y de esa misma raíz nació en la era digital el web-log, después abreviado en blog.
La etimología náutica le viene a estos apuntes como anillo al dedo. No hace tanto que hablábamos de navegar por Internet, expresión caída en desuso quizá porque hoy casi todos nos movemos en las mismas tres o cuatro plataformas centralizadas y “navegamos” más bien poco. Pero para aquellos que tratamos de ganarnos el pan con la informática, sigue siendo procedente usar el verbo; las procelosas aguas del software no nos dan respiro. Es dificil, por no decir imposible, seguir el ritmo: cada día aparecen nuevas tecnologías, nuevos frameworks, nuevos modelos de lenguaje. Análisis de datos, cloud, IA, crypto… Así las cosas, resulta indispensable no perder el norte y mantener un registro de los avances. Hasta ahora no había sido lo que en lenguaje corporativo se ha dado en llamar “proactivo”; me limitaba a realizar mi trabajo y dejar que la corriente marcara el rumbo; pero ante la complejidad cada vez mayor de este entorno y, al mismo tiempo, la facilidad para hacer cosas por cuenta propia, he decidido coger el timón.
En esta primera entrada de mi particular cuaderno de bitácora detallaré lo construido hasta ahora para, a partir de aquí, ir dando cuenta de mis próximos pasos. Hay muchos proyectos que me rondan la mente por lo que es probable que algunos de ellos se queden en eso, en proyectos.
Hecho hasta ahora
VPS y dominio: En 2023 decidí autoalojar un proyecto muy simple que explicaré más adelante, para ello me hice una cuenta en epik para obtener un dominio y otra en vultr para obtener un servidor virtual, el más barato posible, que dejé de pagar el año pasado, pero que volví a alquilar a comienzos de este año.
Codex: Fue en Enero cuando me pareció que todo el mundo en Internet estaba hablando de Claude Code; por supuesto esta sensación derivaba de leer a gente muy concreta, pero si que entendí que copiar y pegar cosas de ChatGPT empezaba a ser algo ya propio del medievo digital. Instalé Codex en mi ordenador personal, primero como CLI y luego como extensión de Visual Studio, y estoy muy contento con lo que me ha permitido hacer. He estado tentado de probar Claude Code pero he leido a mucha gente quejarse en lo relativo a los tokens, por lo que me mantengo con mi elección inicial.
Concurso: El proyecto que decidí hacer en 2023 fue una página web a modo de regalo de cumpleaños para mi madre, la página consistía en un concurso en el que se mostraba una foto familiar y se preguntaba bien de que año era, bien en que ciudad había sido tomada. La primera versión que publiqué es de Junio de 2023, habiendo aprendido un poco a la carrera Vue.js sin haber tenido experiencia con frontend. Este enero decidí rebuscar en mi GitHub para rehacer la web, mejorándola bastante. Le añadí una sección de administración para darle complejidad, añadí un script con Python para ingestar fotos, y, aunque claramente sea una sobrecomplicación, la dividí en distintos contenedores (frontend, backend, mongo, ingesta) para cacharrear un poco con Docker y Docker compose. Este es el repositorio de GitHub y aquí se puede ver su estado actual, hoy no hay fotos en ella porque están todas solo disponibles para usuarios autenticados (mi familia), que también pueden añadir o modificar los campos (año y ciudad) de las fotos existentes.
Stack: Vue.js, express.js, mongodb, nginx, docker, GitHub Actions.Página web: Quise desarrollar una página web propia en la que, mismamente, poder escribir cosas como esta. Creo que buena parte de las actuales páginas web están muy sobrecargadas (bloated, como dicen los anglosajones) sin motivo, así que busqué un enfoque más minimalista utilizando un generador de páginas estáticas como Hugo. No estaba muy familiarizado con su sintaxis y nunca había programado con Go, pero gracias a Codex he podido avanzar bastante rápido y he aprendido como funciona sobre la marcha y con algunos tutoriales rápidos. El repositorio de GitHub en el que actualizo los cambios que le hago a la página es privado, pero he creado este otro repositorio que se actualiza cuando se han modificado carpetas relativas a estilos para que otros usuarios puedan descargárselo como theme y usarlo en su propia página. Stack: Hugo, Github Actions
App de gimnasio: Esta página fue vibecodeada confiando en GPT sin tanta supervisión como en las anteriores y con fines puramente prácticos, ya que mi mujer y yo necesitabamos una aplicación lo más sencilla posible donde guardar nuestra evolución en el gym. En primera instancia mi intención era crear una aplicación para el smartphone, por lo que usé React Native con Expo, pero pronto me di cuenta de que me llevaría bastante trabajo y que publicar una aplicación en el ecosistema Apple (no así en Android) es un infierno, por lo que decidí mantenerla sólo como página web. React me gusta menos que Angular, con el que tengo experiencia laboral, y Vue.js, con el que he hecho la página del concurso; su sintaxis es en mi opinión demasiado enrevesada, aunque entiendo que a los que estén más acostumbrados al frontend les gustará. Decidí también usar este proyecto para aprender como funciona Supabase; para esta aplicación estoy usando las funcionalidades de autenticación y la base de datos. Este es el repositorio en GitHub y ésta es la página web. Stack: React Native, Supabase, Github Actions.
En la próxima entrada explicaré mi objetivo principal para las próximas semanas.