<?xml version="1.0" encoding="UTF-8"?>

<!--|
    | Atom feed templated extracted from the Zola SSG builtin templates source code.
    | Modified to add support for a custom icon image.
    |
    | File copied at 2026-08-22, permalink:
    |   <https://github.com/getzola/zola/blob/5835ee8ea605ae7bc6a8dba28f032233a6c00b43/components/templates/src/builtins/atom.xml>.
    |
    | This file is licensed under the MIT Licence.
    | It is Copyright (c) 2026 Jorge Dobón Blanco, Vincent Prouillet
    | and contributors (see <https://github.com/getzola/zola/graphs/contributors>).
    |
    |-->

<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
    
    <icon>https://dobon.dev/processed_images/icon.ab5074eb75da7606.avif</icon>
    
    <title>
         
        Artículos — 
         
        Jorge Dobón Blanco
    </title>
    <subtitle>Sitio web personal sobre informática, arte, política y otros temas.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://dobon.dev/es/articles/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://dobon.dev/es/articles/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-08-09T00:00:00+00:00</updated>
    <id>https://dobon.dev/es/articles/atom.xml</id>
    <entry xml:lang="es">
        <title>Aventuras con SSGs</title>
        <published>2026-08-09T00:00:00+00:00</published>
        <updated>2026-08-09T00:00:00+00:00</updated>
        
        <author>
            <name>Jorge Dobón Blanco</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://dobon.dev/es/articles/ssg-adventures/"/>
        <id>https://dobon.dev/es/articles/ssg-adventures/</id>
        
        <content type="html" xml:base="https://dobon.dev/es/articles/ssg-adventures/">&lt;p&gt;Es ley que todo usuario de la &lt;a rel=&quot;external&quot; href=&quot;https://indieweb.org/IndieWeb&quot;&gt;IndieWeb&lt;/a&gt; tenga como primera publicación un texto
explicando sus primeras desventuras creando y desplegando su página web personal.&lt;/p&gt;
&lt;p&gt;Mi caso no es una excepción, originalmente intenté dar vida a mi página, primero
creando mi propio SSG (&lt;em&gt;Static Site Generator&lt;/em&gt;), &lt;a rel=&quot;external&quot; href=&quot;https://codeberg.org/jdobonb/amiga&quot;&gt;del que aún quedan resquicios&lt;/a&gt;.
Poco después me di cuenta de la complejidad que esta tarea tenía, y con
la universidad aun consumiendo mucho de mi tiempo decidí dejar este proyecto
aparcado un tiempo.&lt;/p&gt;
&lt;p&gt;Quiero con este artículo hacer una prueba de contacto a la escritura y formato
propios de un &lt;em&gt;blog&lt;/em&gt;, y comentar el proceso creativo y de diseño que han llevado
al &lt;em&gt;stack&lt;/em&gt; de tecnologías actuales de &lt;a href=&quot;/es&quot;&gt;dobon.dev&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;y-al-principio-estaba-lobste-rs&quot;&gt;Y al principio estaba &lt;a rel=&quot;external&quot; href=&quot;https://lobste.rs&quot;&gt;lobste.rs&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Mi interés por tener mi propio espacio digital viene de tiempo atrás. De forma
accidental, buscando resolver las distintas dudas que me surgían en mi viaje autodidacta
en el mundo de la informática, encontraba textos que me parecían de un gran interés
y aprendizaje, pues en muchos casos me abrían las puertas a conceptos completamente nuevos.&lt;/p&gt;
&lt;p&gt;Las explicaciones de &lt;a rel=&quot;external&quot; href=&quot;https://michael.stapelberg.ch&quot;&gt;Michael Stapelberg&lt;/a&gt; sobre su gestor de paquetes experimental
&lt;a rel=&quot;external&quot; href=&quot;https://michael.stapelberg.ch/posts/2019-08-17-introducing-distri/&quot;&gt;d1stri&lt;/a&gt;, las detalladas explicaciones de &lt;a rel=&quot;external&quot; href=&quot;https://xeiaso.net&quot;&gt;Xe Iaso&lt;/a&gt; sobre
&lt;a rel=&quot;external&quot; href=&quot;https://xeiaso.net/blog/paranoid-nixos-2021-07-18/&quot;&gt;su paranoica configuración de NixOS&lt;/a&gt; o el &lt;em&gt;rant&lt;/em&gt; de &lt;a rel=&quot;external&quot; href=&quot;https://faultlore.com&quot;&gt;Aria Desires&lt;/a&gt;
sobre &lt;a rel=&quot;external&quot; href=&quot;https://faultlore.com/blah/c-isnt-a-language/&quot;&gt;la situación actual de los &lt;em&gt;ABIs&lt;/em&gt; basados en C&lt;/a&gt; eran pequeñas
ventanas hacia todo aquello de mi gremio que no conocía.&lt;/p&gt;
&lt;p&gt;Fue con ello natural que de mí surgiera el deseo de escribir y compartir mis
opiniones y descubrimientos, que se mantuvo latente pero constante a lo largo
de los años. Al llegar a la universidad y hablar con mis semejantes, me di cuenta
de que quizá había infravalorado tanto mi capacidad de enseñar y mostrar a
otros mis descubrimientos, como del placer que me es hacerlo.&lt;/p&gt;
&lt;p&gt;Pasado el primer cuatrimestre, algo más asentado en la vida universitaria,
tomé la decisión de dedicar mis escasos momentos libres a la construcción
de mi propia página web. Durante ese periodo, en mi rutinaria lectura de &lt;a rel=&quot;external&quot; href=&quot;https://lobste.rs&quot;&gt;lobste.rs&lt;/a&gt;,
me encontré una nueva entrada, clara y directa:
&lt;a rel=&quot;external&quot; href=&quot;https://arne.me/blog/write-your-own-ssg&quot;&gt;&lt;em&gt;Why You Should Write Your Own Static Site Generator&lt;/em&gt;&lt;/a&gt;
(&lt;a rel=&quot;external&quot; href=&quot;https://lobste.rs/s/5hf7qf/why_you_should_write_your_own_static_site&quot;&gt;entrada en lobste.rs&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Con ello, motivado por este artículo, abrí RustRover con la intención de crear
un &lt;em&gt;SSG&lt;/em&gt; que cumpliese una breve y humilde lista de características:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Renderizado incremental.&lt;/li&gt;
&lt;li&gt;Renderizado basado en plantillas HTML.&lt;/li&gt;
&lt;li&gt;Soporte multiidioma.&lt;/li&gt;
&lt;li&gt;Generación de fuentes Atom.&lt;/li&gt;
&lt;li&gt;Optimización de imágenes AVIF y generación de &lt;em&gt;fallbacks&lt;/em&gt; WEBP y JPEG.&lt;/li&gt;
&lt;li&gt;Recarga en caliente (&lt;em&gt;Hot reloading&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;Sistema de taxonomías.&lt;/li&gt;
&lt;li&gt;Soporte de comentarios con &lt;a rel=&quot;external&quot; href=&quot;https://en.wikipedia.org/wiki/Webmention&quot;&gt;Webmention&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Minificación&lt;/em&gt; de HTML, CSS y JS.&lt;/li&gt;
&lt;li&gt;Sindicalización &lt;a rel=&quot;external&quot; href=&quot;https://indieweb.org/POSSE&quot;&gt;POSSE&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Espero que se haya hecho notar la ironía... Visto en retrospectiva mi error
está claro, la complejidad del sistema que yo necesitaba era demasiado alta.
El desarrollo fue rápidamente cuesta arriba por un segundo cuatrimestre que
ya estaba funcionando a todo rendimiento y una serie de restricciones
autoimpuestas, quería que fuese un &lt;em&gt;SSG&lt;/em&gt; generalista en toda regla,
y no un &lt;a rel=&quot;external&quot; href=&quot;https://hannahilea.com/blog/houseplant-programming/&quot;&gt;programa de planta de interior&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Todo esto llevo a que el proyecto acabara de forma prematura, insatisfecho con
lo que había logrado hacer. Creo que hubo unos puntos clave que dificultaron
mucho la tarea:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menosprecie la dificultad de crear una caché funcional y la poca necesidad de
renderizado incremental en la mayoría de &lt;em&gt;SSGs&lt;/em&gt;, dada la velocidad de renderizado
que pueden llegar a alcanzar.&lt;/li&gt;
&lt;li&gt;La conversión entre formatos de imagen resulto ser más compleja que añadir
una librería adicional y una llamada extra a una función,
&lt;a rel=&quot;external&quot; href=&quot;https://imagemagick.org&quot;&gt;ImageMagick&lt;/a&gt; tiene una API de una complejidad elevada.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En pocas palabras:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hay solo dos cosas difíciles en la informática: la invalidación de caché y
nombrar cosas.&lt;/p&gt;
&lt;p&gt;— Phil Karlton (Traducido, &lt;a rel=&quot;external&quot; href=&quot;https://www.karlton.org/2017/12/naming-things-hard/&quot;&gt;fuente&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;hugo-me-marea&quot;&gt;Hugo me marea&lt;/h2&gt;
&lt;p&gt;Paso un tiempo de desconexión sobre este tema; un proyecto de &lt;em&gt;autoalojado&lt;/em&gt;
(&lt;em&gt;self-hosting&lt;/em&gt;), sobre el que quiero escribir en un futuro, tomó gran parte de
mi tiempo.&lt;/p&gt;
&lt;p&gt;Recién entrando en el mes de agosto quise de una vez por todas tener una página
propia, me decanté por &lt;a rel=&quot;external&quot; href=&quot;https://gohugo.io/&quot;&gt;Hugo&lt;/a&gt;, que es sin duda, junto a &lt;a rel=&quot;external&quot; href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt;, &lt;a rel=&quot;external&quot; href=&quot;https://www.11ty.dev/&quot;&gt;Eleventy&lt;/a&gt;
y &lt;a rel=&quot;external&quot; href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt;, uno de los &lt;em&gt;SSG&lt;/em&gt; más usados del mundo...&lt;/p&gt;
&lt;p&gt;No fue una tarde productiva, la documentación de &lt;a rel=&quot;external&quot; href=&quot;https://gohugo.io/&quot;&gt;Hugo&lt;/a&gt; resulto ser un desastre.
Más cercana a una referencia que a un documento que sirva para aprender a usar
la herramienta, introduce constantemente conceptos nuevos y peca de enlazar
demasiadas páginas entre sí, lo que vuelve todo algo agobiante.&lt;/p&gt;
&lt;p&gt;Su &lt;a rel=&quot;external&quot; href=&quot;https://gohugo.io/getting-started/quick-start/&quot;&gt;guía Quick start&lt;/a&gt; trata a la herramienta como una &lt;em&gt;caja negra&lt;/em&gt;,
obligando la instalación de un tema, pues no es explicado en ella como funciona el
sistema de plantillas y estilizado.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;El glosario de Hugo&lt;/summary&gt;
&lt;p&gt;&lt;em&gt;Esta sección originalmente no iba a estar escondida tras un desplegable,&lt;/em&gt;
&lt;em&gt;pero me extendí demasiado en ella. Además, me quedó demasiado como un rant.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Para ejemplo de esta problemática se encuentra su &lt;a rel=&quot;external&quot; href=&quot;https://gohugo.io/quick-reference/glossary&quot;&gt;glosario de términos&lt;/a&gt;,
que presenta multitud de problemas como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;La adición de términos comunes en la informática que solo llevan a que el
glosario sea demasiado extenso, por ejemplo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Booleano: Un &lt;em&gt;booleano&lt;/em&gt; es un tipo de dato con dos posibles valores, o verdadero
&amp;gt;   (&lt;code&gt;true&lt;/code&gt;) o falso (&lt;code&gt;false&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Caché: Una &lt;em&gt;caché&lt;/em&gt; es un componente de software que almacena datos para que
&amp;gt;   futuras peticiones de los mismos sean más rápidas.&lt;/li&gt;
&lt;li&gt;CLI: CLI significa &lt;em&gt;Command Line Interface&lt;/em&gt;, un mecanismo basado en texto que
&amp;gt;   permite la interacción con programas informáticos o sistemas operativos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;— El glosario del &lt;em&gt;SSG&lt;/em&gt; Hugo (Traducido, &lt;a rel=&quot;external&quot; href=&quot;https://gohugo.io/quick-reference/glossary&quot;&gt;fuente&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La existencia de términos &lt;em&gt;proxy&lt;/em&gt;, por ejemplo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Dimensión de un contenido: Vea &lt;em&gt;dimensión&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Bundle&lt;/em&gt;: Vea &lt;em&gt;bundle de una página&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;bool&lt;/em&gt;: Vea &lt;em&gt;booleano&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;— El glosario del &lt;em&gt;SSG&lt;/em&gt; Hugo (Traducido, &lt;a rel=&quot;external&quot; href=&quot;https://gohugo.io/quick-reference/glossary&quot;&gt;fuente&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La invención de terminología innecesariamente compleja:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Dimensión: Una &lt;em&gt;dimensión&lt;/em&gt; es un eje de variación de un contenido
que permite que múltiples variaciones lógicas de una página existan
simultáneamente. Las tres dimensiones son &lt;em&gt;idioma&lt;/em&gt;, &lt;em&gt;rol&lt;/em&gt; y &lt;em&gt;versión&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Por ejemplo, una página lógica puede que exista en 6 idiomas, 4 versiones
y 2 roles.&lt;/p&gt;
&lt;p&gt;— El glosario del &lt;em&gt;SSG&lt;/em&gt; Hugo (Traducido, &lt;a rel=&quot;external&quot; href=&quot;https://gohugo.io/quick-reference/glossary&quot;&gt;fuente&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Que no se me malinterprete, este glosario no se trata de un problema crítico,
pero sí ejemplifica a la perfección el mal estado de la documentación de &lt;a rel=&quot;external&quot; href=&quot;https://gohugo.io/&quot;&gt;Hugo&lt;/a&gt;.&lt;/p&gt;
&lt;/details&gt;
&lt;h3 id=&quot;y-si-uso-bash&quot;&gt;¿Y si uso Bash?&lt;/h3&gt;
&lt;p&gt;Durante un muy breve periodo de tiempo se me ocurrió la idea no utilizar un
&lt;em&gt;SSG&lt;/em&gt;, sino una serie de &lt;em&gt;scripts&lt;/em&gt; en Bash que dieran uso de herramientas
como &lt;a rel=&quot;external&quot; href=&quot;https://pandoc.org/&quot;&gt;Pandoc&lt;/a&gt; o &lt;a rel=&quot;external&quot; href=&quot;https://mikefarah.gitbook.io/yq&quot;&gt;yq&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La idea duró una tarde. Vi en poco tiempo como iba a acabar
con los mismos problemas que con mi intento original de &lt;em&gt;SSG&lt;/em&gt;, además, recordé
mi odio hacia el &lt;em&gt;shell scripting&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;usando-zola&quot;&gt;Usando Zola&lt;/h2&gt;
&lt;p&gt;Finalmente, di una segunda oportunidad a una herramienta que en un pasado rindió
sin peros y que todavía no sé por qué la deje a un lado, &lt;a rel=&quot;external&quot; href=&quot;https://www.getzola.org/&quot;&gt;Zola&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;No tengo ninguna queja, su &lt;a rel=&quot;external&quot; href=&quot;https://www.getzola.org/documentation/getting-started/overview/&quot;&gt;Getting Started - Overview&lt;/a&gt;
me guio rápidamente en la creación de un sencillo &lt;em&gt;blog&lt;/em&gt; personal, mostrando en el
proceso el funcionamiento de su sistema de plantillas y su breve terminología
basada en páginas, secciones e índices.&lt;/p&gt;
&lt;p&gt;Es un &lt;em&gt;SSG&lt;/em&gt; que busca ser rápido, no entrometerse en tu diseño y tener las funcionalidades
justas y necesarias.&lt;/p&gt;
&lt;h3 id=&quot;hablemos-del-open-source&quot;&gt;Hablemos del &lt;em&gt;Open Source&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;En una nota más personal, me alegró ver que el proyecto sufrió una transición
de una licencia MIT (permisiva) a la EUPL (&lt;em&gt;libre&lt;/em&gt; y vírica). Me gustaría incluir
el siguiente fragmento de una conversación que ocurrió en GitHub:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Desafortunadamente, esto es un gran cambio para los usuarios corporativos de los EEUU.
La EUPL está categóricamente prohibida en la industria tecnológica, pues es agrupada
junto a la AGPL y la SSPL. Esta licencia hace a efectos practicos a Zola imposible
de incluso ejecutar su binario en cualquier entorno comercial estadounidense.
— psarossy&lt;/p&gt;
&lt;p&gt;¿Una pena para los usuarios corporativos de los EEUU entonces? No hay razón ninguna
para agrupar la EUPL con la AGPL. [La versión] 0.21 está todavía disponible
para esos usuarios.
— Keats (creador de &lt;a rel=&quot;external&quot; href=&quot;https://www.getzola.org/&quot;&gt;Zola&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;— Extracto de la conversación del &lt;em&gt;Issue #3093&lt;/em&gt; del repositorio
de GitHub de &lt;a rel=&quot;external&quot; href=&quot;https://www.getzola.org/&quot;&gt;Zola&lt;/a&gt; (Traducido, &lt;a rel=&quot;external&quot; href=&quot;https://github.com/getzola/zola/issues/3093&quot;&gt;fuente&lt;/a&gt;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Creo que ilustra a la perfección la asimétrica situación en la que nos encontramos
en el mundo &lt;em&gt;Open Source&lt;/em&gt;. El mundo corporativo y profesional ha creado
unas expectativas sobre voluntarios y gente que ejerce de la informatica
como &lt;em&gt;hobby&lt;/em&gt;, obligandoles a proveer productos y un servicio de excelencia
y &lt;em&gt;business-ready&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Creo que es relevante enunciar una vez más una serie de verdades muchas veces
olvidadas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Toda persona es libre de crear cuando y como quiera, ignorando si lo creado
presenta o no una &lt;em&gt;utilidad práctica&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;No tienes la obligación de examinar &lt;em&gt;Pull Requests&lt;/em&gt; o cualquier otra propuesta
de adición de código, sea escrita por humano o IA.&lt;/li&gt;
&lt;li&gt;ESTE SOFTWARE SE PROPORCIONA &quot;TAL CUAL&quot;, SIN GARANTÍA DE NINGÚN TIPO.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recomiendo mucho el texto &lt;a rel=&quot;external&quot; href=&quot;https://lake.computer/blog/help-wanted/&quot;&gt;help wanted&lt;/a&gt; por &lt;a rel=&quot;external&quot; href=&quot;https://lake.computer/&quot;&gt;Lake Hope&lt;/a&gt;, que explora en mayor
profundidad este tema.&lt;/p&gt;
&lt;h2 id=&quot;post-mortem&quot;&gt;&lt;em&gt;Post mortem&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;Por un lado, me alegra mucho tener por fín un sitio en el que compartir mis
ideas y opiniones. Pero, no puedo evitar tener el pensamiento de que no he logrado
tener la virtud propia de un ingeniero informático; el desgaste (o &lt;em&gt;burnout&lt;/em&gt;),
el cansancio y el desconocimiento han jugado un factor clave en esto, pero no haber
sido capaz de desarrollar un programa &lt;em&gt;SSG&lt;/em&gt; más competente me deja una sensación
agridulce en el cuerpo.&lt;/p&gt;
</content>
        
    </entry>
</feed>