Llevo tiempo queriendo poner algunas pruebas y configuraciones en algún sitio pero nunca encontré nada que me pareciese lo suficientemente compatible con mi flujo de trabajo ni con mi forma de pensar.
Me he encontrado un hueco libre y le he puesto unas horas a mirar cómo poner a funcionar algunas herramientas que ya probé con anterioridad. Si estás leyendo esto, me complace contarte que ya tengo un flujo de trabajo más o menos definido. El hecho de que me ciña regularmente a publicar cosas es harina de otro costal.
Un generador de sitios web estáticos
Si, un generador de sitios web estáticos es lo que mejor se adapta a mis necesidades actualmente. No necesito bases de datos ni contenido dinámico por el momento. Quiero que sea principalmente simple, fácil. Barato (económicamente y en forma).
Este es un requisito que limita u orienta el proyecto pero sobre todo, lo hace más directo con respecto a mi flujo de trabajo.
Hugo
Dentro de los diferentes generadores de sitios estáticos que he mirado está Jekyll y Hugo. Definitivamente me he decantado por el segundo, no porque sea mejor que Jekyll. Básicamente Hugo tiene soporte nativo para orgmode que es donde vivo y me siento cómodo.
Astro es también un proyecto que me llama la atención, pero me decanté por el confort de orgmode.
Ahora bien, teniendo Hugo soporte nativo de orgmode, Markdown es el formato principal y esto hace que la documentación en muchos casos no sea amigable a orgmode. Por lo que si te animas, prepárate para algunas turbulencias.
Una plantilla para el blog
Bien! ya tengo un generador estático, ahora solo necesito darle un aspecto visual que no fuese completamente desagradable. Afortunadamente Hugo dispone de un catálogo saludable de themes y Hugo Themes te lo pone fácil para poder explorar las diferentes opciones. En mi caso me decanté por Hugo Profile.
Para instalarlo en tu sitio web sigues los pasos que puedes encontrar en el repositorio del theme. Una vez tengas los recursos dentro de tu proyecto, es cuestión de que vayas habilitando, deshabilitando y configurando el fichero hugo.yaml del proyecto.
Orgmode
Orgmode es un modo mayor nativo de Emacs. Es muy probable que si estás leyendo esto no te tenga que explicar mucho más de que estoy hablando. Ya avisé a navegantes que alguna pelusa nos íbamos a encontrar en la sopa y el caso es que el hecho de usar como formato de entrada para Hugo un documento en formato orgmode nos obliga a tener alguna consideración.
En concreto los metadatos de la página habría que establecerlos con palabras clave de orgmode como sigue:
#+TITLE: Example
#+DATE: 2024-02-02T04:14:54-08:00
#+DRAFT: false
#+AUTHOR: John Smith
#+GENRES: mystery
#+GENRES: romance
#+TAGS: red
#+TAGS: blue
#+WEIGHT: 10Con las imágenes también tenemos nuestras diferencias y si, en orgmode también se pueden usar imágenes. Según la documentación de Hugo para incorporar imágenes a tus publicaciones requiere un encantamiento que a los usuarios de orgmode nos suena cuanto menos extraño.
En nuestro caso, la referencia sería algo así:
[[file:/images/my-fancy-image.png]]Teniendo en cuenta que el recurso debe de estar en $PROJECT_BASE/static/images/my-fancy-image.png
De orgmode a la web!
La principal ventaja de todo este tinglado es que no tengo que salir de mi entorno favorito, donde me siento cómodo y soy productivo para estar tomando notas y compartirlas en el blog sin fricción adicional. Todo esto sin hacer una sobre ingeniería ni necesitar media docena de microservicios, workers o hooks.
Pero tiene un precio, siempre lo tiene y es que requiere un procedimiento manual.
En este caso, puedes ver el resultado en directo de tu futura publicación con el comando:
hugo serve -DUna vez que estás contento con el resultado, generas el sitio web directamente contra la carpeta que tengas sincronizada en tu repositorio en codeberg.
hugo build --gc --minify --destination="$BLOG_BASE"Desde aquí, solo estás a un git commit y git push de poder mandar tu publicación a tus familiares y amigos.
Buscando algo libre y gratis
Y aunque lo importante aquí no es el precio, sino la libertad, el conjunto de tecnologías elegido es perfecto para mí por representar precisamente eso, software libre y salirse de las megacorporaciones. Demostrarme a mi mismo que es posible, quizás con algo más de esfuerzo, pero bien lo vale por mantener los principios.