<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>/home/lucio.albenga.es</title><link>https://lucio.albenga.es/web/</link><description></description><lastBuildDate>Wed, 29 Apr 2026 00:00:00 +0100</lastBuildDate><item><title>Torificando programas en 2 minutos o menos.</title><link>https://lucio.albenga.es/web/posts/2026/torificando-programas-en-2-minutos-o-menos.html</link><description>&lt;p&gt;
Llevo un tiempo dándole vueltas a escribir esta entrada porque
parece la típica entrada inútil o de "clickbait" demasiado habituales
en estos últimos años pero la realidad es que, a un nivel básico,
hacer que cualquier programa que se conecte a internet lo haga
através de la red TOR lleva 2 minutos o menos.
&lt;/p&gt;

&lt;p&gt;
Cualquier usuario de un sistema GNU/Linux o BSD tiene todo lo
necesario en el repositorio de paquetes de su sistema. Vamos a ver
cómo se hace con Devuan (o Debian) y con Artix (o Arch).
&lt;/p&gt;

&lt;p&gt;
Primero se instala el software necesario:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;tor&lt;span class="w"&gt; &lt;/span&gt;torsocks&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# en el caso de Devuan &lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;pacman&lt;span class="w"&gt; &lt;/span&gt;-Su&lt;span class="w"&gt; &lt;/span&gt;tor&lt;span class="w"&gt; &lt;/span&gt;torsocks&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# en el caso de Artix&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Una vez instalados los dos programas arrancamos TOR con el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;tor
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
A continuación se ejecuta el programa deseado con el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;torsocks&lt;span class="w"&gt; &lt;/span&gt;nombre_programa
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Por ejemplo, si se quiere que el navegador por terminal lynx se
conecte via TOR, se haría con el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;torsocks&lt;span class="w"&gt; &lt;/span&gt;lynx
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Esto es todo. Ya tenemos lynx funcionando a través de TOR.
&lt;/p&gt;

&lt;p&gt;
Obviamente esto es lo más básico. Te recomiendo que leas la página
man de TOR y de torsocks para conocer todas las posibilidades de
estos programas y que le saques todo su potencial.
&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Wed, 29 Apr 2026 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2026-04-29:/web/posts/2026/torificando-programas-en-2-minutos-o-menos.html</guid><category>Privacidad</category><category>software tor torsocks privacidad internet</category></item><item><title>LibreCan 2026</title><link>https://lucio.albenga.es/web/posts/2026/librecan-2026.html</link><description>&lt;p&gt;
Los habituales ya sabéis que suelo ser mucho más activo en mi madriguera gopher&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;
que en esta web pero la verdad es que he estado desaparecido de todos lados
prácticamente desde principios de año porque he estado ocupado con algunas cosas
personales y también organizando y preparando la LibreCan 2026.
&lt;/p&gt;

&lt;p&gt;
Este año es un evento algo mayor que el del año pasado. La gente de Canarias
GoRetro han sido muy amables al cedernos su espacio para llevar acabo el
evento por lo que, a iniciativa de los miembros de LibreCan, decidimos  aprovechar
para incluir una serie de ponencias/demos cortas en el programa de este año.
También habrá sorteos con alguna sorpresita que espero que le gusten a la gente.
Aunque parezca una tontería organizar un evento por pequeño que sea requiere de
tiempo, energía y, en este caso, también algo de dinero.
&lt;/p&gt;

&lt;p&gt;
Hoy se ha publicado la página oficial del evento LibreCan 2026&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; así que ahora
empezaré a ponerme al día con el resto de cosas y puede que a estar más activo
en la red.
&lt;/p&gt;

&lt;p&gt;
Si eres de Canarias espero verte en la LibreCan 2026 ;-)
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
gopher://lucio.albenga.es
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://librecan.com" target="_blank"&gt;https://librecan.com&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2026-03-24:/web/posts/2026/librecan-2026.html</guid><category>Software Libre</category><category>eventos</category><category>librecan</category><category>fsf</category><category>libreplanet</category></item><item><title>Configurando una cadena de herramientas GCC para programar Arduino en C</title><link>https://lucio.albenga.es/web/posts/2025/configurando-una-cadena-de-herramientas-gcc-para-programar-arduino-en-c.html</link><description>&lt;p&gt;
Que vaya por delante que no soy un experto en Arduino pero cuando
decidí empezar con ello tenía claro que quería programarlo en C
puro y duro, y que de entrada compraría algo compatible en lugar
que el original para ver si me iba a interesar o no. Probablemente
porque sea programador me pareció mucho más interesante lidiar con
los detalles de bajo nivel, &lt;i&gt;datasheets&lt;/i&gt;&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; y ese tipo de cosas,
en lugar que permitir que el Arduino IDE y sus librerías me ocultaran
cosas. Tampoco le veía mucho sentido a aprender o usar un pseudo C++
sabiendo ya C.
&lt;/p&gt;

&lt;p&gt;
En estas últimas semanas, desde que Qualcomm ha comprado Arduino,
he visto que hay un montón de "preocupación" por parte de la gente
sobre qué va a pasar ahora, sobre si Qualcomm va a fastidiarlo todo
con las típicas prácticas corporativas y demás. Parece ser que mi
decisión de hacer las cosas en C y no usar el software de Arduino
ha sido más que acertada ya que ahora mismo a mi no me afecta en
absoluto lo que sea que haga Qualcomm.
&lt;/p&gt;

&lt;p&gt;
En este pequeño &lt;i&gt;howto&lt;/i&gt; voy a explicarte cómo instalar una cadena
de herramientas basada en GCC para que tu también puedas programar
tu Arduino en C, o si lo prefieres en C++, y te voy a enseñar todos
los pasos desde hacer un pequeño programa hasta cargarlo en tu
placa sin utilizar el software oficial de Arduino.
&lt;/p&gt;

&lt;p&gt;
Empezamos instalando los programas necesarios. Probablemente tu
sistema operativo POSIX ya tenga todos los paquetes. En este
&lt;i&gt;howto&lt;/i&gt; vamos a ver cómo se hace con FreeBSD y Devuan GNU+Linux.
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;pkg&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;avr-gcc&lt;span class="w"&gt; &lt;/span&gt;avr-binutils&lt;span class="w"&gt; &lt;/span&gt;avr-libc&lt;span class="w"&gt; &lt;/span&gt;avrdude&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="c1"&gt;# FreeBSD&lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;gcc-avr&lt;span class="w"&gt; &lt;/span&gt;binutils-avr&lt;span class="w"&gt; &lt;/span&gt;avr-libc&lt;span class="w"&gt; &lt;/span&gt;avrdude&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# Devuan&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Una vez instalados los programas, abre tu editor de textos favorito
y escribe el programa que viene a continuación. Este programa es el
típico que hace parpadear la luz del Arduino y lo vamos a usar para
probar la cadena de herramientas y ver cómo encaja todo. Para que
puedas seguir los pasos de este &lt;i&gt;howto&lt;/i&gt; guarda este archivo con el
nombre &lt;b&gt;&lt;i&gt;blink.c&lt;/i&gt;&lt;/b&gt;.
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;avr/io.h&amp;gt;&lt;/span&gt;

&lt;span class="cp"&gt;#define F_CPU 16000000UL &lt;/span&gt;&lt;span class="cm"&gt;/* necesario para &amp;lt;util/delay.h&amp;gt; */&lt;/span&gt;
&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;util/delay.h&amp;gt;&lt;/span&gt;

&lt;span class="cp"&gt;#define DELAY 1500 &lt;/span&gt;&lt;span class="cm"&gt;/* milisegundos */&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt;
&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;DDRB&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;_BV&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DDB5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(;;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;PORTB&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;_BV&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PORTB5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;_delay_ms&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DELAY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;PORTB&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="n"&gt;_BV&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PORTB5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;_delay_ms&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DELAY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;b&gt;La constante &lt;i&gt;F_CPU&lt;/i&gt; debe coincidir con la frecuencia de la CPU (velocidad de reloj)
de tu Arduino. Yo tengo una placa compatible con Arduino UNO y en mi caso este valor
es 16MHz&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;
A continuación toca compilar el programa. Para ello teclea lo siguinte en tu terminal:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;avr-gcc&lt;span class="w"&gt; &lt;/span&gt;-Os&lt;span class="w"&gt; &lt;/span&gt;-mmcu&lt;span class="o"&gt;=&lt;/span&gt;atmega328p&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;blink&lt;span class="w"&gt; &lt;/span&gt;blink.c
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;
Ahora hay que convertir el archivo binario &lt;i&gt;blink&lt;/i&gt;, a un binario compatible con
Arduino:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;avr-objcopy&lt;span class="w"&gt; &lt;/span&gt;-O&lt;span class="w"&gt; &lt;/span&gt;ihex&lt;span class="w"&gt; &lt;/span&gt;-R&lt;span class="w"&gt; &lt;/span&gt;.eeprom&lt;span class="w"&gt; &lt;/span&gt;blink&lt;span class="w"&gt; &lt;/span&gt;blink.hex
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Ha llegado el momento de conectar tu Arduino a uno de los puertos USB de tu ordenador.
Comprueba en qué puerto se ha conectado. Para ello puedes usar, por ejemplo, el comando
&lt;i&gt;dmesg&lt;/i&gt;. En mi Devuan la salida de dicho comando, una vez conectada mi placa, es la
siguiente:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;[3975174.307519] usb 2-1: new full-speed USB device number 79 using xhci_hcd
[3975174.456593] usb 2-1: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.63
[3975174.456606] usb 2-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[3975174.456612] usb 2-1: Product: USB2.0-Serial
[3975174.458699] ch341 2-1:1.0: ch341-uart converter detected
[3975174.459258] usb 2-1: ch341-uart converter now attached to ttyUSB0
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
Esto quiere decir que la placa está conectada a /dev/ttyUSB0 (/dev/ttyU0 en mi FreeBSD).
Para cargar el programa en tu placa Arduino utiliza el comando siguiente (sustituye
/dev/ttyU0 o /dev/ttyUSB0 por el dispositivo que corresponda a tu caso):
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;avrdude&lt;span class="w"&gt; &lt;/span&gt;-F&lt;span class="w"&gt; &lt;/span&gt;-V&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;arduino&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;m328p&lt;span class="w"&gt; &lt;/span&gt;-P&lt;span class="w"&gt; &lt;/span&gt;/dev/ttyU0&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;flash:w:blink.hex&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;# FreeBSD&lt;/span&gt;
avrdude&lt;span class="w"&gt; &lt;/span&gt;-F&lt;span class="w"&gt; &lt;/span&gt;-V&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;arduino&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;m328p&lt;span class="w"&gt; &lt;/span&gt;-P&lt;span class="w"&gt; &lt;/span&gt;/dev/ttyUSB0&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;flash:w:blink.hex&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# Devuan&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
La salida del comando anterior debería parecerse a esta:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x1e950f (probably m328p)
avrdude: Note: flash memory has been specified, an erase cycle will be performed.
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file blink.hex for flash
         with 176 bytes in 1 section within [0, 0xaf]
         using 2 pages and 80 pad bytes
avrdude: writing 176 bytes flash ...

Writing | ################################################## | 100% 0.06 s 

avrdude: 176 bytes of flash written
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Tal y como decía antes, el programa es el típico que hace parpadear la luz del Arduino
así que comprueba si la luz del tuyo está parpadeando. Si parpadea significa que
todo ha ido como la seda. ¡Felicidades! Ya tienes tu cadena de herramientas operativa
y ya sabes los rudimentos para crear y cargar tus programas en tu placa Arduino.
&lt;/p&gt;

&lt;p&gt;
Espero que este &lt;i&gt;howto&lt;/i&gt; te haya servido para dar tus primeros pasos a la hora de
programar tu Arduino en C y ten en cuenta que esto es solo un punto de partida por
lo que te recomiendo que leas la documentación y/o la ayuda de todos los programas
y comandos que has visto.
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://docs.arduino.cc/resources/datasheets/ATmega328P-datasheet.pdf" target="_blank"&gt;Datasheet del ATmega328P en la web de Arduino&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-12-01:/web/posts/2025/configurando-una-cadena-de-herramientas-gcc-para-programar-arduino-en-c.html</guid><category>Software</category><category>gcc</category><category>programación</category><category>c</category><category>arduino</category></item><item><title>Versiones 100% "free as in freedom" de Devuan y Debian</title><link>https://lucio.albenga.es/web/posts/2025/versiones-free-as-in-freedom-de-debian-y-devuan.html</link><description>&lt;p&gt;
He visto en el blog de Simon Joseffsson que ha lanzado el proyecto
"Debian Libre Live" para producir imágenes "Live" de Debian GNU/Linux
solo con software libre, vamos lo que era Debian antes de tomar la
decisión de incluir cosas non-free dentro de las imágenes principales
de la distribución. Simon presenta el proyecto en su blog&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; y también
puedes echar un vistazo al repositorio en Gitlab&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
También me he enterado, a través del propio Simon, de que existe un
proyecto similar pero con Devuan GNU+Linux, la distribución que
utilizo, que es un fork de Debian sin SystemD ni otras aberraciones.
El proyecto en cuestión es Gnuinos Linux-Libre&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; y utiliza el kernel
linux-libre&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; por lo que podríamos decir que, por lo menos sobre el
papel, este proyecto sería lo que debería ser Debian si no llevaran
tantos años tomando tantas malas decisiones.
&lt;/p&gt;

&lt;p&gt;
Si usas Debian o Devuan y prefieres el software libre al "open source"
aquí tienes un par de distribuciones 100% "free as in freedom" que te
pueden resultar interesantes.
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://blog.josefsson.org/2025/11/13/introducing-the-debian-libre-live-images/" target="_blank"&gt;Simon Joseffson: Introducing The Debian Libre Live Images&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://gitlab.com/debdistutils/debian-libre/debian-libre-live" target="_blank"&gt;https://gitlab.com/debdistutils/debian-libre/debian-libre-live&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.gnuinos.org/" target="_blank"&gt;https://www.gnuinos.org/&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.fsfla.org/ikiwiki/selibre/linux-libre/" target="_blank"&gt;https://www.fsfla.org/ikiwiki/selibre/linux-libre/&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Sun, 16 Nov 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-11-16:/web/posts/2025/versiones-free-as-in-freedom-de-debian-y-devuan.html</guid><category>Software Libre</category><category>howto</category><category>software-libre</category><category>devuan</category><category>debian</category><category>gnulinux</category></item><item><title>Video: Entrevista a Mark McCahill y Farhad Anklesaria sobre Gopher</title><link>https://lucio.albenga.es/web/posts/2025/entrevista-a-mark-mccahill-y-farhad-anklesaria-sobre-gopher.html</link><description>&lt;p&gt;
Hace unos días encontré en Internet Achive un archivo de John Goerzen&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;: "2007 Gopherspace Mirror"&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt;
y dentro de este un video con una entrevista a Mark McCahill y Farhad Anklesaria, parte del equipo que
desarrolló el protocolo Gopher. Decidí subir el video a PeerTube&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt;, de hecho es el primer video que
subo a PeerTube, porque considero que es una pieza importante de la historia de Gopher y también de internet.
Puedes ver el video aquí y espero que lo disfrutes tanto como yo.
&lt;/p&gt;


&lt;div style="position: relative; padding-top: 75%;"&gt;
  &lt;iframe title="Mark McCahill &amp;amp; Farhad Anklesaria video interview on Gopher"
          width="100%" height="100%"
          src="https://peertube.anduin.net/videos/embed/8iuH7rtKGPJggGuKX6Wx96"
          frameborder="0" allowfullscreen=""
          sandbox="allow-same-origin allow-scripts allow-popups allow-forms"
          style="position: absolute; inset: 0px;"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.complete.org/" target="_blank"&gt;Página web de John Goerzen&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://archive.org/details/2007-gopher-mirror" target="_blank"&gt;2007 Gopherspace Mirror en Internet Archive&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://peertube.anduin.net/w/8iuH7rtKGPJggGuKX6Wx96" target="_blank"&gt;Video en mi PeerTube&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-11-15:/web/posts/2025/entrevista-a-mark-mccahill-y-farhad-anklesaria-sobre-gopher.html</guid><category>Video</category><category>gopher</category><category>video</category><category>internet</category></item><item><title>De Git a Fossil</title><link>https://lucio.albenga.es/web/posts/2025/de-git-a-fossil.html</link><description>&lt;p&gt;
Hace un tiempo que en Git han empezado a trabajar en una propuesta
para hacer obligatorio el lenguaje de programación Rust&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;. A mi no me gusta
Rust y, sobre todo, no me gusta su comunidad de personajillos extremistas que
pretenden hacer tragar a todo el mundo su basura reescribiendo proyectos que
llevan décadas funcionando, haciendo campañas de acoso y derribo en redes sociales
y otras lindezas dignas de cualquier grupúsculo con ínfulas totalitarias. Por eso
cuando veo que un proyecto pretende "obligar" el uso de o migrar de C a Rust, en la
medida de mis posibilidades, huyo de él como si me persiguiera el Balrog del Señor
de los Anillos con su látigo de fuego.
&lt;/p&gt;

&lt;p&gt;
A lo largo de mis años he conocido y usado (o probado) muchos sistemas de control
de versiones: RCS (Revision Control System), CVS (Concurrent Version System),
SVN (Subversion), HG (Mercurial), BZR (Bazaar) y el susodicho Git, lo que significa
que no tengo mayor problema en volver a cambiar así que empecé a buscar un sustituto
para mis proyectos personales. 
&lt;/p&gt;

&lt;p&gt;
Las opciones eran volver a uno de los ya conocidos o mirar otra cosa y me acordé
de Fossil. Empecé echando un vistazo por encima al código fuente y a leerme la
documentación oficial&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; para enterarme de lo que ofrecía, de sus dependencias,
de cómo se instalaba y configuraba, etc., y ví que tenía muchas cosas que me gustan:
&lt;/p&gt;

&lt;ul class="org-ul"&gt;
&lt;li&gt;&lt;b&gt;Está hecho en C&lt;/b&gt; (aunque utiliza algo de js y de tcl para su funcionalidad web)
y es un programa pequeño y eficiente que consume pocos recursos de hardware.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Su uso es más sencillo y natural&lt;/b&gt; (por lo menos para alguien que conoce otros
sistemas como Subversion) ya que no contiene funcionalidades rebuscadas como
el &lt;i&gt;staging area&lt;/i&gt; de Git, que puede que sean útiles en proyectos grandes y
complejos como el kernel Linux pero que para mí no tienen ninguna utilidad práctica.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Permite autoalojar un servidor en tu propia infraestructura de forma rápida y
sencilla&lt;/b&gt; porque ya viene preparado para ello. De hecho ya tiene integrado
un servidor y un sistema web con las vistas del control de versiones, wiki, sistema
de tickets, etc. Sin embargo con Git hay que recurrir a soluciones externas como
GitLab, Gitea o Forgejo y cada una de ellas es como mínimo una nueva dependencia.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;No utiliza direcciones de correo en los &lt;i&gt;commits&lt;/i&gt; sino que utiliza nombres de usuario&lt;/b&gt;
por lo que si tu repositorio es público te evitas el que tu correo caiga en manos
de las redes de spam o el tener que usar una dirección de correo específica para este
tipo de cosas.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Es interoperable con Git&lt;/b&gt; en el sentido de que si surge la necesidad de volver a cambiar
un repositorio a Git se puede hacer e incluso soporta la sincronización bidireccional entre
un repositorio Fossil y uno Git&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; (que es lo que usan Fossil y el proyecto Sqlite para
mantener sus repositorios espejo en GitHub).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Teniendo en cuenta todo esto decidí instalarlo y migrar mis proyectos de Git a Fossil. A
continuación vamos a ir viendo cómo hacer eso mismo.
&lt;/p&gt;

&lt;div id="outline-container-org38845a7" class="outline-2"&gt;
&lt;h2 id="org38845a7"&gt;Instalación de Fossil&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org38845a7"&gt;
&lt;p&gt;
El primer paso es instalar Fossil y es más que probable que ya se encuentre entre los
paquetes de tu sistema operativo:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# Devuan GNU+Linux&lt;/span&gt;
pkg&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;fossil&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="c1"&gt;# FreeBSD&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Tras ejecutar la instalación podemos comprobar que efectivamente se ha instalado
ejecutando en terminal el siguiente comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;version
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Ese comando devolverá algo como lo siguiente:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;This&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;version&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.21&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;3c53b6364e&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2023&lt;/span&gt;-02-26&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;19&lt;/span&gt;:24:24&lt;span class="w"&gt; &lt;/span&gt;UTC
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgdc1666f" class="outline-2"&gt;
&lt;h2 id="orgdc1666f"&gt;Importación de repositorios Git&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgdc1666f"&gt;
&lt;p&gt;
En la documentación&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; de Fossil nos ponen como ejemplo para exportar de
Git e importar en Fossil el siguiente comando con una tubería:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;nombre_de_repo
git&lt;span class="w"&gt; &lt;/span&gt;fast-export&lt;span class="w"&gt; &lt;/span&gt;--all&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;import&lt;span class="w"&gt; &lt;/span&gt;--git&lt;span class="w"&gt; &lt;/span&gt;nombre_de_repo.fossil
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Sin embargo yo lo hice de otro modo para poder ajustar algunas cosas
y dejar los nuevos repositorios importados "bien". Como tenía varios
repositorios creé dos carpetas distintas, una, &lt;i&gt;git-exported&lt;/i&gt;, para almacenar
los repositorios exportados y otra, &lt;i&gt;fossils&lt;/i&gt;, para almacenar los nuevos
repositorios.
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;~/git-exported
mkdir&lt;span class="w"&gt; &lt;/span&gt;~/fossils
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Ahora ya podemos empezar a exportar nuestros repositorios de Git:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;nombre_de_repo
git&lt;span class="w"&gt; &lt;/span&gt;fast-export&lt;span class="w"&gt; &lt;/span&gt;--all&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;~/git-exported/nombre_de_repo.export
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Una vez que ya tenemos exportados todos los repositorios de Git
nos vamos a la carpeta &lt;i&gt;~/fossils&lt;/i&gt; y los importamos con el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;import&lt;span class="w"&gt; &lt;/span&gt;--git&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;--rename-master&lt;span class="w"&gt; &lt;/span&gt;trunk&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;--attribute&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;tu@correo.es tu_usuario&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;nombre_de_repo.fossil&lt;span class="w"&gt; &lt;/span&gt;~/git-exported/nombre_de_repo.export
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
La opción &lt;code&gt;--rename-master trunk&lt;/code&gt; renombra la rama &lt;i&gt;master&lt;/i&gt; de Git como &lt;i&gt;trunk&lt;/i&gt;
en Fossil ya que Fossil, al igual que otros programas de control de versiones
como Subversion, utiliza el nombre &lt;i&gt;trunk&lt;/i&gt; para indicar la rama maestra. Si eres
de los desafortunados que en lugar de "master" tienen su rama principal nombrada
como "main" esta opción no es para tí y tendrás que consultar la documentación
de Fossil si quieres renombrarla.
&lt;/p&gt;

&lt;p&gt;
La opción &lt;code&gt;--attribute "tu@correo.es tu_usuario"&lt;/code&gt; cambia la dirección de correo
&lt;i&gt;tu@correo.es&lt;/i&gt; en los &lt;i&gt;commits&lt;/i&gt; de Git por el nombre de usuario &lt;i&gt;tu_usuario&lt;/i&gt;,
que en Fossil por defecto coincide con tu nombre de usuario del sistema.
Lógicamente la dirección indicada debe existir en algún &lt;i&gt;commit&lt;/i&gt; de Git.
Si quieres cambiar más de una dirección de correo puedes hacerlo utilizando
varias opciones &lt;code&gt;--atribute&lt;/code&gt;:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;~/fossils/
fossil&lt;span class="w"&gt; &lt;/span&gt;import&lt;span class="w"&gt; &lt;/span&gt;--git&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;--rename-master&lt;span class="w"&gt; &lt;/span&gt;trunk&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;--attribute&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;tu@correo.es tu_usuario&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;--attribute&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;rms@gnu.org rms&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;--attribute&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;linus@kernel.org torvalds&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;nombre_de_repo.fossil&lt;span class="w"&gt; &lt;/span&gt;~/git-exported/nombre_de_repo.export
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
La salida del comando de importación del repositorio será algo como:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Rebuilding&lt;span class="w"&gt; &lt;/span&gt;repository&lt;span class="w"&gt; &lt;/span&gt;meta-data...
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;.0%&lt;span class="w"&gt; &lt;/span&gt;complete...
Vacuuming...&lt;span class="w"&gt; &lt;/span&gt;ok
project-id:&lt;span class="w"&gt; &lt;/span&gt;e64b112b40eb3db188060ddb8deeaa96a6ad3b71
server-id:&lt;span class="w"&gt;  &lt;/span&gt;bfbcd4bf8f0f64eaa2d832ddc3b4af00639624a6
admin-user:&lt;span class="w"&gt; &lt;/span&gt;tu_usuario&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;password&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;XAxPVZcNQ6&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Si te fijas, cada vez que importas un repositorio te da la contraseña de tu usuario
administrador. Guárdala ya que la necesitarás para realizar determinadas operaciones
con tu repositorio.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org03ee317" class="outline-2"&gt;
&lt;h2 id="org03ee317"&gt;Servidor Fossil&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org03ee317"&gt;
&lt;p&gt;
Fossil tiene un servidor web embebido así que lo podemos aprovechar para crear un
servidor autoalojado de forma rápida y sencilla. El método que expongo a continuación
es suficiente para un sistema con pocos usuarios, en una red privada que no se puede
acceder desde el exterior. Hay diferentes formas de configurar un servidor Fossil y
algunas son mejores que otras dependiendo de las necesidades, por lo que te recomiendo
revisar la documentación oficial.
&lt;/p&gt;

&lt;p&gt;
Primero creamos una carpeta donde se guardarán todos los repositorios *.fossil en
el servidor:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;/ruta/a/mis/fossils
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Luego copiamos nuestros repositorios fossil a dicha carpeta en el servidor:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;scp&lt;span class="w"&gt; &lt;/span&gt;*.fossil&lt;span class="w"&gt; &lt;/span&gt;usuario@mi_server:/ruta/a/mis/fossils/
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Ahora arrancamos el servidor Fossil de la siguiente manera:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;server&lt;span class="w"&gt; &lt;/span&gt;--port&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8043&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;--cert&lt;span class="w"&gt; &lt;/span&gt;/ruta/a/mi_certificado.pem&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;--pkey&lt;span class="w"&gt; &lt;/span&gt;/ruta/a/la/clave/del/certificado.pem&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;--repolist&lt;span class="w"&gt; &lt;/span&gt;/ruta/a/mis/fossils/
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Si no tienes un certificado válido puedes arrancarlo con:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;server&lt;span class="w"&gt; &lt;/span&gt;--port&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8043&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;--cert&lt;span class="w"&gt; &lt;/span&gt;unsafe-builtin
&lt;span class="w"&gt;       &lt;/span&gt;--repolist&lt;span class="w"&gt; &lt;/span&gt;/ruta/a/mis/fossils/
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Una vez arrancado el servidor, si pones la url &lt;code&gt;https://dirección_de_servidor:8043/&lt;/code&gt;
en tu navegador deberías de poder acceder a una página con el listado de tus repositorios.
Pinchando en cada uno de ellos te llevará a la página del repositorio en cuestión y, una
vez en la página del repositorio, si te fijas en el menú de navegación hay una opción &lt;i&gt;login&lt;/i&gt;.
Si pinchas en esa opción y pones tu nombre de usuario y la contraseña que te devolvió el
comando &lt;i&gt;fossil import&lt;/i&gt; accederás como administrador y podrás configurar el espacio del
proyecto a tu gusto. Para saber más consulta la documentación oficial de Fossil.
&lt;/p&gt;

&lt;p&gt;
Si no apuntaste o has perdido la contraseña de tu repositorio Fossil la podrás recuperar
con los siguientes pasos:
&lt;/p&gt;

&lt;ol class="org-ol"&gt;
&lt;li&gt;Entra en el servidor y dirígete a la carpeta dónde están tus repositorios fossil.&lt;/li&gt;
&lt;li&gt;Si no tienes instalado el programa &lt;i&gt;sqlite&lt;/i&gt;, instálalo siguiendo el método habitual
de tu sistema operativo.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;
Abre el archivo mi_repo.fossil con sqlite:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;sqlite3&lt;span class="w"&gt; &lt;/span&gt;mi_repo.fossil
&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;
Una vez dentro de sqlite haz la siguiente consulta:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;pw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Esta consulta te devolverá algo como:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;tu_usuario&lt;span class="p"&gt;|&lt;/span&gt;My3w2jRxt1
&lt;span class="w"&gt;   &lt;/span&gt;anonymous&lt;span class="p"&gt;|&lt;/span&gt;57EBCBD1AAE663B4
&lt;span class="w"&gt;   &lt;/span&gt;nobody&lt;span class="p"&gt;|&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;developer&lt;span class="p"&gt;|&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;reader&lt;span class="p"&gt;|&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
La contraseña es el segundo elemento de la fila (en este ejemplo la cadena &lt;i&gt;My3w2jRxt1&lt;/i&gt;).
&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;Sal de &lt;i&gt;sqlite3&lt;/i&gt; tecleando &lt;code&gt;.quit&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org5cc2688" class="outline-2"&gt;
&lt;h2 id="org5cc2688"&gt;Usando Fossil&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org5cc2688"&gt;
&lt;p&gt;
A continuación pongo una guía muy breve sobre cómo dar unos primeros pasos con Fossil.
Esta guía presupone que sabes usar Git, de forma muy básica, y es solo un punto de
partida por lo que te recomiendo que leas la documentación de Fossil y su manual&lt;sup&gt;&lt;a id="fnr.5" class="footref" href="#fn.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgc431afe" class="outline-3"&gt;
&lt;h3 id="orgc431afe"&gt;Obteniendo ayuda&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-orgc431afe"&gt;
&lt;p&gt;
El comando de ayuda es imprescindible para ver qué comandos ofrece Fossil y para
ver los usos y opciones de cada uno de estos comandos. La ayuda funciona igual que
en Git:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;--help
fossil&lt;span class="w"&gt; &lt;/span&gt;nombre_de_comando&lt;span class="w"&gt; &lt;/span&gt;--help
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orge0598ba" class="outline-3"&gt;
&lt;h3 id="orge0598ba"&gt;Creando y clonando repositorios&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-orge0598ba"&gt;
&lt;p&gt;
Estos procesos son parecidos a los de Git pero no del todo. En Git lo habitual es que el
repositorio de trabajo coincida con la carpeta de trabajo. En Fossil esto no es así,
hay una clara diferencia entre el archivo del repositorio &lt;i&gt;nombre_de_repo.fossil&lt;/i&gt; y la
carpeta de trabajo &lt;i&gt;nombre_de_repo&lt;/i&gt;.
&lt;/p&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgffa58b4" class="outline-4"&gt;
&lt;h4 id="orgffa58b4"&gt;Creando un nuevo repositorio&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orgffa58b4"&gt;
&lt;p&gt;
Creamos un nuevo repositorio con el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;init&lt;span class="w"&gt; &lt;/span&gt;nombre_de_repo.fossil
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Este comando creará solamente el repositorio, esto es, el archivo &lt;i&gt;nombre_de_repo.fossil&lt;/i&gt;.
Para empezar a trabajar con él tenemos que "abrirlo" por lo que crearemos la carpeta
de trabajo y abriremos el repositorio en ella:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;mi_carpeta_de_trabajo
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;mi_carpeta_de_trabajo
fossil&lt;span class="w"&gt; &lt;/span&gt;open&lt;span class="w"&gt; &lt;/span&gt;/ruta/a/nombre_de_repo.fossil
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
También podemos indicarle a Fossil el nombre de la carpeta de trabajo y si
esta no existe Fossil intentará crearla:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;open&lt;span class="w"&gt; &lt;/span&gt;--workdir&lt;span class="w"&gt; &lt;/span&gt;mi_carpeta_de_trabajo&lt;span class="w"&gt; &lt;/span&gt;/ruta/a/nombre_de_repo.fossil
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org6dadbd2" class="outline-4"&gt;
&lt;h4 id="org6dadbd2"&gt;Clonando un repositorio&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-org6dadbd2"&gt;
&lt;p&gt;
Clonamos un repositorio utilizando el comando &lt;code&gt;fossil clone&lt;/code&gt; seguido de la url
del repositorio. La url puede ser una url web, una url ssh, una ruta en un sistema
de archivos, etc.:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;https://host/nombre_de_repositorio
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Este comando descargará automáticamente el achivo &lt;i&gt;nombre_de_repo.fossil&lt;/i&gt; y creará,
al mismo nivel, la carpeta de trabajo &lt;i&gt;nombre_de_repo&lt;/i&gt;. Si no queremos que cree la
carpeta de trabajo ejecutamos el comando como:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;--no-open&lt;span class="w"&gt; &lt;/span&gt;https://host/nombre_de_repositorio
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Una vez clonado el repositorio, si tienes permisos para ello y tu intención
es enviar tus &lt;i&gt;commits&lt;/i&gt; al repositorio remoto, necesitarás configurarlo en la carpeta
de trabajo con el comando &lt;code&gt;fossil remote&lt;/code&gt;:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;remote&lt;span class="w"&gt; &lt;/span&gt;https://usuario@dominio/nombre_de_repositorio
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Este comando nos pedirá la contraseña de nuestro usuario y nos ofrecerá la
posibilidad de guardarla para usarla en el futuro.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Consejo&lt;/b&gt;: Teniendo en cuenta la peculiaridad de Fossil de tener un archivo de
repositorio por un lado y las carpetas de trabajo por otro yo lo tengo organizado
tal que en mi &lt;i&gt;/home&lt;/i&gt; tengo una carpeta &lt;i&gt;fossils&lt;/i&gt; donde guardo todos los repositorios
y luego tengo las carpetas de trabajo en el lugar más adecuado en cada caso.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org0eb5fc3" class="outline-3"&gt;
&lt;h3 id="org0eb5fc3"&gt;Obteniendo información&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org0eb5fc3"&gt;
&lt;p&gt;
A la hora de obtener información sobre el estado del repositorio y de nuestra
carpeta hay ciertas diferencias con respecto a Git, sobre todo en el nombre y
uso de los comandos.
&lt;/p&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgbae8d96" class="outline-4"&gt;
&lt;h4 id="orgbae8d96"&gt;Viendo el histórico&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orgbae8d96"&gt;
&lt;p&gt;
En Fossil los comandos &lt;code&gt;fossil time&lt;/code&gt; y &lt;code&gt;fossil timeline&lt;/code&gt; son los equivalentes
del comando &lt;i&gt;git log&lt;/i&gt; de Git. A continuación pongo ejemplos ordenados desde el
que proporciona menos información al que proporciona más:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--oneline&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# similar a git log --oneline&lt;/span&gt;
fossil&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;
fossil&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--medium
fossil&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--verbose&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# similar a git log&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgc6e2ea9" class="outline-4"&gt;
&lt;h4 id="orgc6e2ea9"&gt;Viendo los cambios en nuestra carpeta de trabajo&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orgc6e2ea9"&gt;
&lt;p&gt;
Para ver los cambios en nuestra carpeta de trabajo con respecto del repositorio
hay varios comandos y cada uno de ellos tiene distintas opciones.
&lt;/p&gt;

&lt;p&gt;
Para ver los archivos y carpetas que no están bajo control de versiones usamos:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;extras
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Para ver los archivos que están bajo control de versiones y que han sufrido cambios:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil changes
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Para ver una combinación de los dos anteriores usaríamos el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil changes --differ
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Para ver el estado del repositorio estilo a cómo lo veríamos en Git con el
comando &lt;i&gt;git status&lt;/i&gt; usaríamos el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil status --differ 
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org7e1410b" class="outline-4"&gt;
&lt;h4 id="org7e1410b"&gt;Viendo las diferencias&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-org7e1410b"&gt;
&lt;p&gt;
Para ver las diferencias entre los contenidos de nuestros archivos en la carpeta
de trabajo y lo que hay en el repositorio utilizamos, al igual que en Git, el
comando &lt;i&gt;diff&lt;/i&gt;:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;diff
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Para ver las diferencias entre un &lt;i&gt;commit&lt;/i&gt; específico y la carpeta de trabajo:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;diff&lt;span class="w"&gt; &lt;/span&gt;--from&lt;span class="w"&gt; &lt;/span&gt;2c26dd6b69&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# 2c26dd6b69 es el hashtag del commit&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Para ver las diferencias entre dos &lt;i&gt;commits&lt;/i&gt; concretos:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;diff&lt;span class="w"&gt; &lt;/span&gt;--from&lt;span class="w"&gt; &lt;/span&gt;2c26dd6b69&lt;span class="w"&gt; &lt;/span&gt;--to&lt;span class="w"&gt; &lt;/span&gt;cd086a1045
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
El comando &lt;i&gt;diff&lt;/i&gt; de Fossil no muestra los &lt;i&gt;diffs&lt;/i&gt; en color. Si quieres
esta característica echa un vistazo a la Wiki de Fossil&lt;sup&gt;&lt;a id="fnr.6" class="footref" href="#fn.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org30b2494" class="outline-3"&gt;
&lt;h3 id="org30b2494"&gt;Obteniendo los cambios de los demás&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org30b2494"&gt;
&lt;p&gt;
Fossil tiene una opción llamada &lt;i&gt;autosync&lt;/i&gt; que viene activada por defecto. Esta opción mantiene
sincronizado nuestro repositorio local con el repositorio remoto. Si tenemos activada la opción
&lt;i&gt;autosync&lt;/i&gt; podemos obtener todos los cambios del repositorio remoto (si lo hubiera) con el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;update
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
En caso contrario la dinámica sería más parecida a la de Git. Tendríamos que hacer primero
un &lt;i&gt;pull&lt;/i&gt; para obtener los cambios y luego un &lt;i&gt;update&lt;/i&gt; para que estos aparecieran en nuestra
carpeta de trabajo:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;pull
fossil&lt;span class="w"&gt; &lt;/span&gt;update
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orge402caf" class="outline-3"&gt;
&lt;h3 id="orge402caf"&gt;Versionando nuestros cambios&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-orge402caf"&gt;
&lt;p&gt;
Como Fossil no tiene &lt;i&gt;staging area&lt;/i&gt;, el comado &lt;i&gt;commit&lt;/i&gt; se parece mucho más al de sistemas
de control de versiones como Subversion que al de Git.
&lt;/p&gt;

&lt;p&gt;
Si queremos hacer un &lt;i&gt;commit&lt;/i&gt; con todos los cambios pendientes:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;commit
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Este comando ejecutado de esta manera mostrará un editor para que podamos introducir
el mensaje del &lt;i&gt;commit&lt;/i&gt;. Sin embargo podemos pasarle el mensaje directamente si lo ejecutamos
tal que así:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Mi mensaje de commit&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Podemos hacer un commit con solo determinados archivos específicos:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="w"&gt; &lt;/span&gt;archivo1&lt;span class="w"&gt; &lt;/span&gt;archivo2
fossil&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="w"&gt; &lt;/span&gt;archivo1&lt;span class="w"&gt; &lt;/span&gt;archivo2&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Mi mensaje de commit&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Si tenemos activada la opción &lt;i&gt;autosync&lt;/i&gt; el comando &lt;i&gt;commit&lt;/i&gt; enviará nuestros cambios también al
servidor remoto (si lo hubiera). En caso contrario tendremos que enviar los cambios al servidor
remoto con el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;push
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org17c44f4" class="outline-3"&gt;
&lt;h3 id="org17c44f4"&gt;Añadiendo y borrando archivos&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org17c44f4"&gt;
&lt;p&gt;
Cuando tenemos archivos nuevos que añadir al control de versiones utilizamos el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;nombre_de_arhivo
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Para borrar archivos del control de versiones utilizamos cualquiera de los siguientes
dos comandos:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;delete&lt;span class="w"&gt; &lt;/span&gt;nombre_de_archivo
fossil&lt;span class="w"&gt; &lt;/span&gt;rm&lt;span class="w"&gt; &lt;/span&gt;nombre_de_archivo
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Por defecto los comandos de borrado no borran el archivo físicamente del disco sino
que simplemente lo marcan para indicar que ya no se encuentra bajo control de versiones.
&lt;/p&gt;

&lt;p&gt;
También existe un comando &lt;code&gt;fossil addremove&lt;/code&gt; que añade al control de versiones todos los
archivos que están en la carpeta de trabajo pero que no están bajo control de versiones y
"borra" del control de versiones todos los archivos que están bajo control de versiones pero
que ya no se encuentran en la carpeta de trabajo.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgca65e36" class="outline-3"&gt;
&lt;h3 id="orgca65e36"&gt;Ignorando archivos&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-orgca65e36"&gt;
&lt;p&gt;
La configuración es uno de los puntos donde hay varias diferencias importantes entre Git
y Fossil por lo que te recomiendo revisar la documentación. Para ignorar archivos tenemos
que crear en la carpeta de trabajo el archivo &lt;code&gt;.fossil-settings/ignore-glob&lt;/code&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;mi_carpeta_de_trabajo
mkdir&lt;span class="w"&gt; &lt;/span&gt;.fossil-settings
touch&lt;span class="w"&gt; &lt;/span&gt;.fossil-settings/ignore-glob
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Luego editamos los contenidos del archivo y podemos usar patrones&lt;sup&gt;&lt;a id="fnr.7" class="footref" href="#fn.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt;:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;build/
3rdparty/
*.o
*/a.out
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgf0e1ae1" class="outline-3"&gt;
&lt;h3 id="orgf0e1ae1"&gt;Ramas y etiquetas&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-orgf0e1ae1"&gt;
&lt;p&gt;
El paradigma de Git hace mucho hincapié en el uso intensivo de ramas y también de las etiquetas.
Sin embargo Fossil tiene unas características y un paradigma diferente, más clásico podríamos
decir, por lo que los flujos de trabajo son distintos a los de Git.
&lt;/p&gt;

&lt;p&gt;
Como no hago mucho uso de las ramas en mis proyectos personales, creo que para que te hagas
una idea de las diferencias y así poder adaptar las características de Fossil a tu flujo de
trabajo, o viceversa, lo mejor es que leas los siguientes enlaces de la Wiki de Fossil:
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;&lt;a href="https://www.fossil-scm.org/home/doc/trunk/www/ckout-workflows.md" target="_blank"&gt;Fossil Check-Out Workflows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fossil-scm.org/home/doc/trunk/www/branching.wiki" target="_blank"&gt;Fossil Branching, Forking, Merging, and Tagging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fossil-scm.org/home/doc/trunk/www/private.wiki" target="_blank"&gt;Fossil Private Branches&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org9c28420" class="outline-3"&gt;
&lt;h3 id="org9c28420"&gt;Interfaz web en local&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org9c28420"&gt;
&lt;p&gt;
No quiero terminar esta pequeña guía de Fossil sin dejar claro que se puede acceder
y usar el interfaz web sin tener Fossil en modo servidor. Para ello solamente hay que
ejecutar, desde dentro de la carpeta de trabajo, el comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;fossil&lt;span class="w"&gt; &lt;/span&gt;ui
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgd77e498" class="outline-2"&gt;
&lt;h2 id="orgd77e498"&gt;Conclusión&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgd77e498"&gt;
&lt;p&gt;
Fossil me ha gustado mucho y, en mi opinión, es una mezcla casi perfecta entre un sistema de
control de versiones centralizado como Subversion y uno distribuido como Git. Me gusta la
simplicidad para ponerlo en modo servidor, su interfaz web y, sobre todo, la sencillez de
sus comandos y de las tareas más habituales.
&lt;/p&gt;

&lt;p&gt;
Creo que es un pequeño gran programa que tiene muchísimo que ofrecer, sobre todo a programadores
independientes y pequeños grupos que están interesados en sistemas autoalojados ya que como se ha
visto es muy fácil de poner en marcha. Si buscas una alternativa sencilla y eficaz a Git no dudes
en echarle un vistazo porque puede que Fossil sea exactamente lo que andas buscando.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://lore.kernel.org/git/20250904-b4-pks-rust-breaking-change-v1-0-3af1d25e0be9@pks.im/" target="_blank"&gt;Git Mailinglist [PATCH RFC 0/3] Introduce Rust and announce that it will become mandatorty&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://fossil-scm.org/home/doc/trunk/www/permutedindex.html" target="_blank"&gt;Wiki oficial de Fossil&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://fossil-scm.org/home/doc/trunk/www/mirrortogithub.md" target="_blank"&gt;How To Mirror A Fossil Repository On GitHub&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://fossil-scm.org/home/doc/trunk/www/inout.wiki" target="_blank"&gt;Import And Export To And From Git&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.5" class="footnum" href="#fnr.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://fossil-scm.org/schimpf-book/index" target="_blank"&gt;Fossil Book&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.6" class="footnum" href="#fnr.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://fossil-scm.org/home/doc/trunk/www/colordiff.md" target="_blank"&gt;Fossil Colorized Diffs&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.7" class="footnum" href="#fnr.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://fossil-scm.org/home/doc/trunk/www/globs.md" target="_blank"&gt;Fossil File Name Glob Patterns&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Wed, 12 Nov 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-11-12:/web/posts/2025/de-git-a-fossil.html</guid><category>Software</category><category>git</category><category>fossil</category><category>programación</category><category>herramientas</category><category>software</category></item><item><title>Gopher.fr</title><link>https://lucio.albenga.es/web/posts/2025/gopherfr.html</link><description>&lt;p&gt;
Un amigo ha puesto en marcha una web para promocionar el protocolo &lt;a href="https://lucio.albenga.es/web/posts/2025/gopher-una-respuesta-sencilla-a-los-excesos-de-la-web.html"&gt;Gopher&lt;/a&gt;.
De momento el sitio es una introducción para neófitos. La web, originalmente,
estaba solo en inglés y francés pero un servidor ha hecho las traducciones
también al castellano y al italiano, y otra persona ha hecho lo propio para
el alemán, así que poco a poco el sitio está adquiriendo un aire europeo,
esto es, plurilingüe ;-)
&lt;/p&gt;

&lt;p&gt;
Sin más aquí os dejo el enlace para que podáis echarle un vistazo
y compartirlo: &lt;a href="https://gopher.fr/" target="_blank"&gt;https://gopher.fr/&lt;/a&gt;
&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Sat, 08 Nov 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-11-08:/web/posts/2025/gopherfr.html</guid><category>Gopher</category><category>gopher</category><category>smolweb</category><category>internet</category></item><item><title>FreeBSD, resolviendo el error: KLD i915kms.ko depends on kernel - not available or version mismatch</title><link>https://lucio.albenga.es/web/posts/2025/freebsd-resolviendo-el-error-kld-i915kms.ko-depends-on-kernel.html</link><description>&lt;hr&gt;
&lt;p&gt;
&lt;b&gt;Nota&lt;/b&gt;:
Hace meses escribí y publiqué este artículo sólo en &lt;a href="https://lucio.albenga.es/web-en/posts/2025/2025-04-17_KLD-i915kms-ko-depends-on-kernel-not-available-or-version-mismatch.html"&gt;inglés&lt;/a&gt;, pero me he decidido
a traducirlo ya que el contenido puede seguir siendo de utilidad para futuras
versiones del sistema y/o para problemas similares.
&lt;/p&gt;
&lt;hr&gt;

&lt;p&gt;
Tras  actualizar FreeBSD 14.1 a la versión 14.2 algunas personas sufrimos
algunos problemas debido a que los módulos gráficos estaban compilados sólo
para la versión 14.1. Uno de los problemas que me molestaban sobremanera
era el no poder acceder a las terminales virtuales.
&lt;/p&gt;

&lt;p&gt;
En este tutorial veremos paso por paso como resolví el problema y me
quité de encima el error "KLD i915kms.ko depends on kernel - not available
or version mismatch".
&lt;/p&gt;

&lt;div id="outline-container-org799b212" class="outline-2"&gt;
&lt;h2 id="org799b212"&gt;Primer intento&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org799b212"&gt;
&lt;p&gt;
Lo primero que hice fue buscar en Internet y averigüé que era un problema que
ya le había pasado a más gente. Muchos comentaban que la solución era volver
a compilar el paquete &lt;i&gt;drm-61-kmod&lt;/i&gt; desde el &lt;i&gt;ports tree&lt;/i&gt; de FreeBSD, así
que eso fue lo primero que intenté.
&lt;/p&gt;

&lt;p&gt;
Siguiendo el manual de FreeBSD&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;, cloné el &lt;i&gt;ports tree&lt;/i&gt; desde el repositorio
git, compilé el paquete y lo instalé:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;--depth&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;https://git.FreeBSD.org/ports.git&lt;span class="w"&gt; &lt;/span&gt;/usr/ports
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/usr/ports/graphics/drm-61-kmod/
make
make&lt;span class="w"&gt; &lt;/span&gt;install
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
El sistema me devolvió un mensaje diciéndome que ya tenía el paquete
instalado y cómo reinstalarlo, así que ejecuté el comando
&lt;code&gt;make reinstall&lt;/code&gt; en la terminal, reinicié el sistema y crucé los dedos.
No funcionó.
&lt;/p&gt;

&lt;p&gt;
Seguí buscando información sobre el tema y encontré otro hilo en el que
se comentaba que también había que recompilar el paquete &lt;i&gt;drm-kmod&lt;/i&gt;, así
que lo hice:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/usr/ports/graphics/drm-kmod/
make
make&lt;span class="w"&gt; &lt;/span&gt;reinstall
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
Esto tampoco funcionó, por lo que decidí dejar de buscar y resolverlo por
mi mismo (cosa que tendría que haber hecho desde el principio). Ejecuté el
comando &lt;code&gt;dmesg&lt;/code&gt; y ví el siguiente error: &lt;b&gt;KLD i915kms.ko depends on kernel - 
not available or version mismatch&lt;/b&gt;. Sabía que el módulo estaba cargado
así que me puse a buscar otros paquetes, especialmente los relacionados con
el i915, que tal vez fuese necesario recompilar. En mi búsqueda encontré
el paquete &lt;i&gt;/usr/ports/graphics/gpu-firmware-kmod&lt;/i&gt; así que lo recompilé y
reinstalé:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/usr/ports/graphics/gpu-firmware-kmod/
make
make&lt;span class="w"&gt; &lt;/span&gt;reinstall
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
Reinicié el sistema y el error seguía ahí.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org6ab96b2" class="outline-2"&gt;
&lt;h2 id="org6ab96b2"&gt;Segundo intento&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org6ab96b2"&gt;
&lt;p&gt;
Llegados a este punto pensé: "vale, puede que algo saliera mal por compilar
los módulos en el orden equivocado o lo que fuere así que voy a volver a hacerlo".
Empecé por desinstalar y limpiar las compilaciones previas de los módulos:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/usr/ports/graphics/gpu-firmware-kmod/
make&lt;span class="w"&gt; &lt;/span&gt;deinstall
make&lt;span class="w"&gt; &lt;/span&gt;clean

&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;../drm-61-kmod/
make&lt;span class="w"&gt; &lt;/span&gt;deinstall
make&lt;span class="w"&gt; &lt;/span&gt;clean

&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;../drm-kmod/
make&lt;span class="w"&gt; &lt;/span&gt;deinstall
make&lt;span class="w"&gt; &lt;/span&gt;clean
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Volví a compilar los módulos. En esta ocasión empecé por el &lt;i&gt;drm-kmod&lt;/i&gt; y averigüé
que este paquete compila también el &lt;i&gt;drm-61-kmod&lt;/i&gt;. Compilé el &lt;i&gt;gpu-firmware-kmod&lt;/i&gt;,
reinstalé los módulos y reinicié otra vez el sistema. Tras el reinicio, el comando
&lt;i&gt;dmesg&lt;/i&gt; seguía mostrando el mismo error.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgba2091d" class="outline-2"&gt;
&lt;h2 id="orgba2091d"&gt;Solución&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgba2091d"&gt;
&lt;p&gt;
Si bien estoy bastante verde con FreeBSD, llevo instalando, usando y administrando
sistemas GNU/Linux desde los 90 así que supuse que la solución a ese error
&lt;b&gt;KLD i915kms.ko depends on kernel - not available or version mismatch&lt;/b&gt; seguramente
se solucionaría recompilando el kernel del sistema y los módulos. De este modo todo
estaría en la versión correcta.
&lt;/p&gt;

&lt;p&gt;
Empecé clonando el repositorio con los fuentes del kernel de FreeBSD&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt;:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;https://git.FreeBSD.org/src.git
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Luego hice un checkout para la versión de FreeBSD 14.2 (en el momento en el que lo
hice era la etiqueta &lt;i&gt;release/14.2.0-p3&lt;/i&gt;):
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;fetch&lt;span class="w"&gt; &lt;/span&gt;--all&lt;span class="w"&gt; &lt;/span&gt;--tags&lt;span class="w"&gt; &lt;/span&gt;--prune
git&lt;span class="w"&gt; &lt;/span&gt;checkout&lt;span class="w"&gt; &lt;/span&gt;release/14.2.0-p3
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Como no uso un kernel personalizado compilé e instalé el kernel &lt;i&gt;GENERIC&lt;/i&gt;. Si
utilizas un kernel personalizado ya sabes qué pasos tienes que dar para recompilarlo.
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/usr/src
make&lt;span class="w"&gt; &lt;/span&gt;buildkernel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;KERNCONF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;GENERIC
make&lt;span class="w"&gt; &lt;/span&gt;installkernel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;KERNCONF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;GENERIC
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Una vez compilado e instalado el kernel nuevo tocaba recompilar los módulos:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/usr/ports/graphics/gpu-firmware-kmod/
make&lt;span class="w"&gt; &lt;/span&gt;deinstall
make&lt;span class="w"&gt; &lt;/span&gt;clean

&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/usr/ports/graphics/drm-61-kmod/
make&lt;span class="w"&gt; &lt;/span&gt;deinstall
make&lt;span class="w"&gt; &lt;/span&gt;clean

&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/usr/ports/graphics/drm-kmod/
make&lt;span class="w"&gt; &lt;/span&gt;deinstall
make&lt;span class="w"&gt; &lt;/span&gt;clean
make
make&lt;span class="w"&gt; &lt;/span&gt;install

&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;../drm-61-kmod/
make&lt;span class="w"&gt; &lt;/span&gt;install

&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;../gpu-firmware-kmod/
make
make&lt;span class="w"&gt; &lt;/span&gt;install
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
Después de esto reinicié el sistema y esta vez sí, todo estaba funcionando
correctamente. ¡Misión cumplida!
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgb79791e" class="outline-2"&gt;
&lt;h2 id="orgb79791e"&gt;Conclusión&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgb79791e"&gt;
&lt;p&gt;
Llevaba sin compilar un kernel alrededor de dos décadas y debo decir que toda
la experiencia fue divertida y me retrotrajo a aquellos maravillosos años en
los que tenías que recompilar el kernel Linux para que funcionara todo tu hardware.
Es probable que haya una solución mejor para este problema pero esta a mi me ha
funcionado.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://docs.freebsd.org/en/books/handbook/" target="_blank"&gt;FreeBSD Handbook&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://cgit.freebsd.org/" target="_blank"&gt;FreeBSD Git&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Fri, 07 Nov 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-11-07:/web/posts/2025/freebsd-resolviendo-el-error-kld-i915kms.ko-depends-on-kernel.html</guid><category>Sistemas</category><category>FreeBSD</category><category>graficos</category><category>sysadmin</category></item><item><title>De la imprenta a internet y vuelta</title><link>https://lucio.albenga.es/web/posts/2025/de-la-imprenta-a-internet-y-vuelta.html</link><description>&lt;p&gt;
El querer expresarse de manera independiente y hacer llegar las cosas a nuestros semejantes
es algo que siempre ha estado ahí. En la antigüedad se hacían pinturas rupestres y se relataban
historias en forma oral, luego se pasó a la escritura en diferentes medios y la invención de la
imprenta, por fin, hizo posible difundir la información a gran escala. El milagro de la imprenta no
sólo permitió abaratar y difundir libros sino que también creó la posibilidad para que personas
normales pudieran publicar y difundir sus opiniones y creaciones.
&lt;/p&gt;


&lt;div id="outline-container-orgd3199ad" class="outline-2"&gt;
&lt;h2 id="orgd3199ad"&gt;Los pliegos sueltos&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgd3199ad"&gt;
&lt;p&gt;
Gracias a la imprenta, a partir del siglo XVI empezó a proliferar un tipo de publicación conocida como
pliego suelto o pliego de cordel. En otros países adoptó otros nombres: &lt;i&gt;chapbook&lt;/i&gt; en los países de
habla inglesa, &lt;i&gt;livre bleu&lt;/i&gt; en Francia, &lt;i&gt;volksbuch&lt;/i&gt; en Alemania, &lt;i&gt;libri da risma&lt;/i&gt; en Italia, etc. Estas
publicaciones iban desde una hoja suelta doblada para formar varias caras hasta cuadernillos compuestos por
varias páginas impresas, dobladas y sin encuadernar (de ahí el nombre de pliego suelto).
&lt;/p&gt;

&lt;p&gt;
Esta literatura callejera fue un medio de información, entretenimiento y divulgación entre
la gente corriente. Los contenidos eran de lo más variado e iban desde una canción o poema hasta el
relato de acontecimientos de actualidad. Había publicaciones generalistas como las famosos almanaques,
que no eran simples calendarios sino que contenían datos metereológicos, ciclos lunares, información
para la siembra, etc., y publicaciones más especializadas orientadas a determinados sectores como por
ejemplo los zapateros.
&lt;/p&gt;

&lt;p&gt;
Contrariamente a lo que podamos pensar estas publicaciones se realizaban a una escala nada desdeñable
teniendo en cuenta los recursos de la época así como la alfabetización de la gente,
que ni de lejos era la de hoy en día. En la década de 1520, el librero de Oxford John Dorne
anotó en su libro de cuentas la venta de hasta 190 baladas al día, el inventario del establecimiento
The Sign of the Three Bibles en el Puente de Londres, en 1664, incluía libros y pliegos impresos
suficientes para producir aproximadamente 90.000 pliegos sueltos y 37.500 hojas de baladas. El
inventario del establecimiento The Sign of the Looking Glass, también en el Puente de Londres, en 1707,
registraba 31.000 libros, además de 257 resmas de pliegos impresos. Una estimación conservadora
de las ventas en Escocia únicamente, en la segunda mitad del siglo XVIII, supera los 200.000 ejemplares
anuales&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org1e28154" class="outline-2"&gt;
&lt;h2 id="org1e28154"&gt;Los fanzines y ezines&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org1e28154"&gt;
&lt;p&gt;
En el siglo XX, y sobre todo a lo largo de sus últimas tres décadas gracias al invento de la fotocopiadora,
hicieron su aparición los fanzines que son, por norma general, un grupo de folios fotocopiados, doblados por
la mitad con una cubierta de cartulina todo ello sujeto con grapas. Este tipo de publicaciones fueron la base
de la conocida contracultura.
&lt;/p&gt;

&lt;p&gt;
Aunque hay casos de fanzines que tuvieron tanto éxito que terminaron convirtiéndose
en revistas&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; y que el fenómeno fanzine llegara a tener tanto peso como para que incluso hubiera
publicaciones creadas y gestionadas por grandes corporaciones (como el conocido fanzine "U Don't Stop"
que formaba parte de una campaña publicitaria de Nike), lo habitual es que estas publicaciones fueran
operaciones de una sola persona, o de un grupo muy reducido, con una vida más o menos corta.
&lt;/p&gt;

&lt;p&gt;
Al igual que los pliegos sueltos, los fanzines tratan temas diversos: literatura, música,
ideas políticas, etc. y al igual que los pliegos sueltos algunos son generalistas mientras
que otros están más especializados llegando incluso a haber fanzines tan especialiados que
solamente tratan sobre un único tema como el fanzine "exclusively Elvis".
&lt;/p&gt;

&lt;p&gt;
Más tarde, con la venida de las BBS, aparecieron los primeros ezines que por norma general eran archivos
en formato de texto plano. De estos uno de los más antiguos y que aún sobrevive es Phrack&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt;. La venida de
Internet  siguió impulsando el fenómeno ezine y un poco más tarde, con la venida de los blogs primero
y de las redes "sociales" después , se terminó de dar la oportunidad potencial a todas las personas de
publicar y compartir sus cosas a una escala sin precedentes. En este panorama algunos fanzines se
convirtieron al formato digital y muchos otros simplemente desaparecieron, tal y como le ocurrió a otros
medios impresos (revistas y periódicos).
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;div id="outline-container-orgf35f656" class="outline-2"&gt;
&lt;h2 id="orgf35f656"&gt;Pasado y presente&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgf35f656"&gt;
&lt;p&gt;
Como hemos visto los avances tecnológicos como la imprenta y la fotocopiadora facilitaron el que la gente
publicara sus propias cosas evitando todo tipo de censura y a finales del siglo pasado con la venida de
Internet se generó un optimismo por lo digital, por la revolución que sería Internet para la gente normal y corriente.
&lt;/p&gt;

&lt;p&gt;
Tres décadas después de esa promesa de internet, de esa utopía, solo quedan cristales rotos y de todo ello ha
surgido una aterradora realidad de corporaciones, dispuestas a arrasar con todo con tal de incrementar en un céntimo
sus beneficios, y de gobiernos corruptos cada vez más confiados en crear un sistema totalitario, en el que puedan medrar
ellos y sus amos corporativos, subyugando a las masas sin ningún tipo de interferencia o resistencia.
La tecnología que tenía que hacernos libres ha resultado ser la que se está usando para encadenarnos
cada día un poco más.
&lt;/p&gt;

&lt;p&gt;
Podemos ver a diario como Internet, y especialmente la web, se ha convertido en un lugar hostil e inhóspito
donde grupos privados de impresentables pueden bloquear páginas web a su antojo&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt;, donde
se eliminan, escriben y reescriben publicaciones y libros electrónicos según las modas, gustos, afinidades
y finalidades de determinados grupos e intereses organizados&lt;sup&gt;&lt;a id="fnr.5" class="footref" href="#fn.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt;, donde impera la cultura de la cancelación
(y persecución) tan utilizada por los nazis y los comunistas durante el siglo pasado, y donde se sufre a diario
el abuso de las mal llamadas inteligencias artificiales que rastrean la red 24 horas al día, 7 días a la semana,
robando a su paso todo lo que se puede robar para ingerirlo, procesarlo, y vomitarlo después, sin pagar nada a
nadie&lt;sup&gt;&lt;a id="fnr.6" class="footref" href="#fn.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt;, con el beneplácito de los diferentes gobiernos (sean del color que sean).
&lt;/p&gt;

&lt;p&gt;
Ante tanto ultraje y sinsentido la gente está empezando a reaccionar. Lo físico&lt;sup&gt;&lt;a id="fnr.7" class="footref" href="#fn.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt; y lo fuera de línea&lt;sup&gt;&lt;a id="fnr.8" class="footref" href="#fn.8" role="doc-backlink"&gt;8&lt;/a&gt;&lt;/sup&gt;
vuelve a estar de moda y vuelve a valorarse porque realmente tiene valor. Un objeto físico siempre
generará una mejor experiencia que uno virtual ya que los seres humanos tenemos múltiples sentidos.
Un objeto físico tiene bastantes más opciones de sobrevivir y perdurar en el tiempo que uno virtual,
prueba de ello son los pliegos sueltos que han llegado hasta nuestros días y que tienen siglos de
antigüedad, mientras que ya hay una infinidad de contenido digital de hace escasos años que se ha
perdido para siempre a pesar de los esfuerzos por preservarlo. Un objeto físico y/o fuera de línea
no es tan susceptible de ser bloqueado, interferido, espiado, robado y manipulado como uno virtual o
en línea. Podrán reescribir el texto de un libro y publicar esa versión modificada, pero mi versión
de 1984 de George Orwell publicada hace más de 30 años seguirá ahí, inalterada e inalterable, para las
generaciones futuras.
&lt;/p&gt;

&lt;p&gt;
Teniendo en cuenta este panorama y la facilidad que hay hoy en día para acceder a una impresora no es de extrañar
que la gente esté volviendo paulatinamente a la divulgación en forma impresa, al pliego suelto&lt;sup&gt;&lt;a id="fnr.9" class="footref" href="#fn.9" role="doc-backlink"&gt;9&lt;/a&gt;&lt;/sup&gt; y al
fanzine&lt;sup&gt;&lt;a id="fnr.10" class="footref" href="#fn.10" role="doc-backlink"&gt;10&lt;/a&gt;&lt;/sup&gt; de toda la vida, porque compartir nuestros pensamientos, nuestras opiniones y nuestras creaciones
libremente es una necesidad inherente del ser humano y no cosa de máquinas.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://en.wikipedia.org/wiki/Chapbook#Production_and_distribution" target="_blank"&gt;Wikipedia Chapbook: Production and Distribution&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.fashionmodeldirectory.com/magazines/id/" target="_blank"&gt;I-D Magazine&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://phrack.org/" target="_blank"&gt;https://phrack.org/&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://bandaancha.eu/bloqueos-futbol" target="_blank"&gt;Bandaancha.eu: Bloqueos del fútbol&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.5" class="footnum" href="#fnr.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://web.archive.org/web/20250927203246/https://carrow.substack.com/p/amazon-deleted-orwells-books" target="_blank"&gt;Amazon Deleted Orwell's Books&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.6" class="footnum" href="#fnr.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.salon.com/2024/01/09/impossible-openai-admits-chatgpt-cant-exist-without-pinching-copyrighted-work/" target="_blank"&gt;Salon.com "Impossible": OpenAI admits ChatGPT can’t exist without pinching copyrighted work&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.7" class="footnum" href="#fnr.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.rollingstone.com/culture/culture-features/physical-media-collectors-trend-viral-streamers-1235387314/" target="_blank"&gt;Rolling Stone: Physical Media Is Cool Again. Streaming Services Have Themselves to Blame&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.8" class="footnum" href="#fnr.8" role="doc-backlink"&gt;8&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://medium.com/@greufeinvestments/why-im-done-with-streaming-and-returning-to-physical-media-28bb77580b04" target="_blank"&gt;Why I'm Done With Streaming and Returning to Physical Media&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.9" class="footnum" href="#fnr.9" role="doc-backlink"&gt;9&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://nullpointerpress.blogspot.com/" target="_blank"&gt;Null Pointer Press&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.10" class="footnum" href="#fnr.10" role="doc-backlink"&gt;10&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.wired.com/story/zines-social-media-power/" target="_blank"&gt;Wired: Social Media Replaced Zines. Now Zines Are Taking the Power Back&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Mon, 20 Oct 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-10-20:/web/posts/2025/de-la-imprenta-a-internet-y-vuelta.html</guid><category>Ensayo</category><category>literatura</category><category>autopublicado</category><category>fanzines</category><category>pliego-suelto</category></item><item><title>Deshabilitando las "funcionalidades IA" de FireFox</title><link>https://lucio.albenga.es/web/posts/2025/deshabilitando-las-funcionalidades-ia-de-firefox.html</link><description>&lt;p&gt;
Como ya muchos sabéis, la gente de mozilla decidió, hace un tiempo,
meter "funcionalidades IA" en el navegador FireFox y los que no
estamos de acuerdo con ello debemos hacer algunas cosas para
deshabilitar dichas "funcionalidades".
&lt;/p&gt;

&lt;p&gt;
En la barra de direcciones del navegador, donde escribes la URL o
las palabras para realizar una búsqueda, escribe &lt;code&gt;about:config&lt;/code&gt;
para poder acceder a la configuración avanzada del navegador. A
continuación te aparecerá un mensaje con un botón que pone algo como
&lt;i&gt;Aceptar el riesgo y continuar&lt;/i&gt; (Accept the Risk and Continue). Pincha en ese
botón y en el cuadro de búsqueda que te permite buscar por opciones
buscas los siguientes valores y los pones todos a &lt;i&gt;false&lt;/i&gt;:
&lt;/p&gt;

&lt;ul class="org-ul"&gt;
&lt;li&gt;browser.ml.enable&lt;/li&gt;
&lt;li&gt;browser.ml.chat.enabled&lt;/li&gt;
&lt;li&gt;extensions.ml.enabled&lt;/li&gt;
&lt;li&gt;browser.ml.linkPreview.enabled&lt;/li&gt;
&lt;li&gt;browser.tabs.groups.smart.enabled&lt;/li&gt;
&lt;li&gt;browser.tabs.groups.smart.userEnabled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Esta entrada se irá actualizando a medida que hayas cambios sobre
este asunto. Si sabes de alguna otra opción que haya que ajustar no
dudes en decírmelo para que esta entrada sea de utilidad para todos.
&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Sat, 11 Oct 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-10-11:/web/posts/2025/deshabilitando-las-funcionalidades-ia-de-firefox.html</guid><category>Software</category><category>privacidad</category><category>mozilla</category><category>firefox</category><category>ia</category><category>llm</category></item><item><title>¿Cómo se convirtió Eric Blair en George Orwell?</title><link>https://lucio.albenga.es/web/posts/2025/como-se-convirtio-eric-blair-en-george-orwell.html</link><description>&lt;p&gt;
La página 24 del libro "The Orwell Diaries", que se corresponde con
la introducción al Diario 31 de Enero de 1936 - 25 de Marzo de 1936,
empieza con el siguiente párrafo (traducido libremente por mí):
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;"Después de que Orwell hubiera completado varios borradores de lo que
se convertiría en Sin blanca en París y Londres, y hubiera cambiado
el orden de los acontecimientos (originalmente los de Londres
precedían a sus experiencias parisinas), el libro fue rechazado por
Jonathan Cape y por T.S. Eliot en nombre de Faber y Faber (más tarde
ambos rechazarían también Rebelión en la granja). En ese momento
Orwell se rindió. Sin embargo, una amiga suya, la Sra. Sinclair Fierz,
envió el texto al hombre que se convertiría en el agente literario de
Orwell, Leonard Moore de Christy y Moore, y este persuadió a Victor
Gollancz para que lo publicara. Orwell deseaba publicar de forma
anónima, en primer lugar porque pensaba que su vida en los barrios
bajos podría disgustar a sus padres y, en segundo lugar, porque, como
le dijo a su amigo, Sir Richard Rees (editor de la revista literaria
The Adelphi para la que escribió), tenía un miedo extraño, una
superstición, de que si aparecía el verdadero nombre de uno en forma
impresa podría permitir a un enemigo 'obrar algún tipo de magia'. Sin
embargo, Gollancz estaba ansioso por tener un nombre y, finalmente,
Orwell sugirió, entre varios otros, el de George Orwell. Seguiría
siendo Eric Blair en determinados contextos y para sus viejos amigos,
pero sus escritos a partir de entonces, exceptuando algunos para la
BBC, estuvieron bajo el pseudónimo de 'George Orwell'. El 9 de enero
de 1933 Gollancz publicó Sin blanca en París y Londres, y seis meses
después fue publicado en Nueva York"&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
En este extracto averiguamos el cómo y el por qué Eric Blair se
convirtió en George Orwell y de paso comprobamos que T.S. Eliot era
un capullo. A continuación pongo el párrafo original para los que no tengan
problemas en leer en inglés ya que siempre es mejor la versión
original que cualquier traducción:
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
After Orwell had completed several drafts of what would become
Down and Out in Paris and London, and had changed the order of
events (originally, those in London preceded his Parisian
experiences), the book was rejected by Jonathan Cape and by
T.S. Eliot on behalf of Faber &amp;amp; Faber (just as later on both would
reject Animal Farm). Orwell then gave up. However, a friend, Mrs
Sinclair Fierz, sent the typescript to the man who would become
Orwell's literary agent, Leonard Moore of Christy &amp;amp; Moore. Moore
persuaded Victor Gollancz to publish it. Orwell wished to publish
anonymously, first because he thought his low-life slumming might
upset his parents, and secondly because, as he told his friend, Sir
Richard Rees (an editor of The Adelphi for which he wrote), he had
a curious fear  — a superstition — that if one's real name appeared
in print it might enable an enemy to 'work some kind of magic on it'.
However, Gollancz was keen to have a name and eventually Orwell
suggested, among several others, George Orwell. He would still be
Eric Blair in some contexts and to old friends, but his writing
thereafter, except for some at the BBC, was under the name 'George
Orwell'. On 9 January 1933, Down and Out in London and Paris was
published by Gollancz and, six months later, in New York.
&lt;/p&gt;
&lt;/blockquote&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Mon, 29 Sep 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-09-29:/web/posts/2025/como-se-convirtio-eric-blair-en-george-orwell.html</guid><category>Literatura</category><category>literatura</category><category>libros</category><category>diarios</category><category>orwell</category></item><item><title>Los diarios de Orwell</title><link>https://lucio.albenga.es/web/posts/2025/los-diarios-de-orwell.html</link><description>&lt;p&gt;
Hace unos días empecé a leerme The Orwell&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; Diaries
(Los diarios de Orwell). En la introducción del libro se menciona
la siguiente página web: &lt;a href="https://orwelldiaries.wordpress.com/" target="_blank"&gt;https://orwelldiaries.wordpress.com/&lt;/a&gt; donde
puedes encontrar los diarios, en inglés, para leer en línea y además
tiene varias imágenes escaneadas de algunas páginas de los diarios,
entre otras cosas.
&lt;/p&gt;

&lt;p&gt;
La versión actual de la web tiene un &lt;i&gt;scroll&lt;/i&gt; infinito pero puedes
empezar por el principio siguiendo este enlace:
&lt;a href="https://orwelldiaries.wordpress.com/page/65/" target="_blank"&gt;https://orwelldiaries.wordpress.com/page/65/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Espero que, si el idioma no es una barrera, los disfrutes.
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
George Orwell novelista, poeta, periodista, ensayista y crítico
británico famoso por sus libros 1984, Rebelión en la granja y
Homenaje a Cataluña.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Sat, 27 Sep 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-09-27:/web/posts/2025/los-diarios-de-orwell.html</guid><category>Literatura</category><category>literatura</category><category>libros</category><category>diarios</category><category>orwell</category></item><item><title>Tres días sin luz</title><link>https://lucio.albenga.es/web/posts/2025/tres-dias-sin-luz.html</link><description>&lt;p&gt;
&lt;b&gt;Llevo tres días sufriendo cortes de luz. Cortes de luz que duran un
período que abarca unas 4, 12 o más horas, aunque según
E-Distribución&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;, la compañía que tiene el monopolio de las
distribución eléctrica, son microcortes temporales&lt;/b&gt;. Tres días en los
que varias viviendas y comercios del barrio no pueden hacer vida
normal ya que nos guste o no, en nuestro mundo, todo está estructurado
y pensado para que la energía eléctrica esté siempre disponible o que
no se vaya durante más de una o dos horas a lo sumo.
&lt;/p&gt;

&lt;p&gt;
Vas a la web y tienes una mierda de chat bot que muy amablemente te
indica que no detecta ninguna incidencia en tu zona y que si quieres
abrir una incidencia lo autorices a que si mandan a alguien y
resulta que no ven que sea cosa del suministro te cobren 82
euros. Llamas por teléfono y ocurre exactamente la misma situación
con la salvedad de que, si persistes y no te asustas, al final puedes
hablar con alguien de atención al cliente.
&lt;/p&gt;

&lt;p&gt;
La persona que te atiende, que es de un &lt;i&gt;call center&lt;/i&gt; en algún lugar
de Latinoamérica y que con casi total seguridad estará hasta el
gorro de escuchar penas, gritos e insultos por un mísero sueldo, te
atiende lo mejor que puede y se limita a hacer lo único que puede
hacer: abrir una incidencia y darte el número de referencia.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Luego te vas a la web de averías de E-Distribución&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; dónde tienen un mapa en el
que por fin aparece tu incidencia y marca un número de afectados
que son los mismos que han estado llamando mientras lo hacías tú y
te pone una "hora estimada de resolución"&lt;/b&gt;. Cuando llega esa hora y
sigues sin luz, vuelves a la web y la hora automágicamente se ha
incrementado en 45 minutos. Tras los 45 minutos la hora vuelve a
incrementarse en otros 90 minutos tras los cuales vuelve a
incrementarse en otros 90, y así hasta que por fin tienes la luz y
cierran la incidencia.
&lt;/p&gt;

&lt;p&gt;
Si tienes poca suerte a los 15 minutos vuelves a estar sin luz, si
tienes más puede que la cosa aguante 120 minutos y vuelta a empezar
hasta que, por fin, llega un momento, bien entrada la noche, donde
la luz se mantiene hasta la mañana siguiente donde se repite el
baile con la distribuidora de la luz.
&lt;/p&gt;

&lt;p&gt;
Al margen de los cuentos que cuentan los políticos, &lt;b&gt;en
España, la electricidad sigue siendo un monopolio privado, ya que si
bien puedes elegir qué empresa te factura la luz, no puedes elegir
la distribuidora que siempre es la misma, así que a ellos plin&lt;/b&gt;. Ya te
ponen a una persona explotada en Latinoamérica para que descargues
tu frustración y al pobre desgraciado del electricista que va ver
qué pasa, y digo pobre desgraciado ya que ayer la gente, al verlos
pasar por la calle, empezaron a insultarlos porque la cosa ya estaba
calentita, y no sólo por las altas temperaturas (que también).
&lt;/p&gt;

&lt;p&gt;
Estos tres días de cortes se deben principalmente a un problema en una
subestación eléctrica que lleva fallando años. La diferencia es que
antes fallaba muy de cuando en cuando, la incidencia se solventaba en
pocas horas y hasta dentro de X meses mientras que ahora, con el
incremento de los consumos por el calor, por las obras nuevas que
donde antes habían cuatro casas ahora hay otros tantos edificios con
viviendas, garajes, trasteros y bajos comerciales, se vé que ha
empezado a pedir auxilio.
&lt;/p&gt;

&lt;p&gt;
Como la distribución de la luz es un monopolio, supongo que no les
compensan los costes de resolver este problema para unas,
aproximadamente, 100 familias afectadas y una veintena de comercios
locales. &lt;b&gt;El hecho de que haya personas con movilidad reducida que
no pueden salir de su casa porque no hay electricidad en los
ascensores es evidente que no le quita el sueño ni a los ejecutivos,
ni a los politicos enchufados, de E-Distribución&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Sin embargo, en estos 3 días que llevo consultando prácticamente cada
hora el mapa con las incidencias eléctricas en Tenerife, no he
visto ni una sola incidencia, ni una sola vez, en las zonas turísticas
donde están los hoteles&lt;/b&gt;. Veo incidencias en las zonas aledañas
tanto en el norte como en el sur de la isla, pero no en las zonas
realmente turísticas. ¡Qué casualidad!
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.edistribucion.com/es/index.html" target="_blank"&gt;https://www.edistribucion.com/es/index.html&lt;/a&gt; 
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.edistribucion.com/es/averias.html" target="_blank"&gt;https://www.edistribucion.com/es/averias.html&lt;/a&gt; 
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Fri, 19 Sep 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-09-19:/web/posts/2025/tres-dias-sin-luz.html</guid><category>General</category><category>denuncia</category><category>edistribución</category><category>tenerife</category></item><item><title>Gopher una respuesta sencilla a los excesos de la web</title><link>https://lucio.albenga.es/web/posts/2025/gopher-una-respuesta-sencilla-a-los-excesos-de-la-web.html</link><description>&lt;small&gt;
&lt;hr&gt;
&lt;a href="https://lucio.albenga.es/web-en/posts/2025/gopher-a-simple-alternative-to-the-bloatware-of-the-web.html"
&gt;English&lt;/a&gt; on this site.&lt;br&gt;
&lt;a href="https://linuxfr.org/users/bublbobl/journaux/gopher-une-alternative-simple-aux-bloatwares-du-web%E2%80%8C"
  target="_blank"&gt;Français&lt;/a&gt; sur linuxfr.org&lt;br&gt;
&lt;hr&gt;
&lt;/small&gt;

&lt;p&gt;
Hoy en día cada vez más gente está harta de todos los excesos y abusos
que se sufren en la World Wide Web. Cuando salió "al público" en 1993,
la web, era un sistema para publicar y compartir documentos con
hyperenlaces. Treinta años después ha pasado a ser un hervidero de
bots, de sistemas de rastreo, de sistemas de publicidad invasivos,
notificaciones que no paran de exigir la atención del público,
invasiones a la privacidad de todos y otras barbaridades.
&lt;/p&gt;

&lt;p&gt;
En la actualidad &lt;b&gt;se ha normalizado el hecho de que visitemos una
página web para leer un artículo, ver una receta de cocina o ver los
horarios del autobús y que para ver dicha información tengamos que
descargarnos una cantidad ingente de datos&lt;/b&gt; habitualmente repartidos
entre una ventana invasiva con la política de cookies que nos pide
autorización para rastrearnos y compartir nuestros datos y hábitos de
navegación con la entidad que gestiona la web y sus 7126 socios, un
montón de anuncios que no queremos ver, algún banner de suscripción a
algo a lo que no queremos suscribirnos, una infinidad de imágenes y
vídeos que no son relevantes y finalmente, con un poco de suerte, en
medio de todo ello, la información que sí queremos ver, mezclada con
más anuncios.
&lt;/p&gt;

&lt;p&gt;
También se ha normalizado el hecho de que para ver algo tan simple
como el resultado de la quiniela tengamos que tener javascript
activado en nuestro navegador. Para el que no lo sepa, javascript es un
entorno que existe en nuestro navegador y que permite ejecutar en
nuestras máquinas programas que hacen lo que sea que se le ocurra
enviarnos a la página que estamos visitando.  Esto ha generado y sigue
generando todo un mundo de problemas de seguridad, invasiones a la
privacidad, apropiación de datos de forma indebida y un largo
etcétera.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Para hacernos una idea, en una web de hoy en día si queremos ver una
receta de cocina no es para nada descabellado que tengamos que
descargarnos entre 2 y 10 megabytes de datos con una media
de 50 peticiones para cargarlo todo&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/b&gt;. Si hacemos la cuenta veremos que
una receta de cocina en texto plano ocupa una media de 2 kilobytes. Si
cogemos esa receta y la formateamos con el lenguaje HTML y le añadimos
estilos CSS para que se vea bonita en un navegador web, la cosa
rondaría unos 3 kilobytes, pongamos 4 kilobytes para ser generosos.
&lt;b&gt;¿Así que como es posible que para ver algo que ocupa 4 kilobytes
tengamos que descargarnos entre 2 y 10 megabytes de datos que equivalen
a la friolera de entre 500 y 2500 veces más cantidad de datos?&lt;/b&gt; Ese
exceso son todos los anuncios, videos, imágenes, rastreadores y demás
cosas que nos obligan a descargar nos guste o no.
&lt;/p&gt;

&lt;p&gt;
Aunque se nos pretenda hacer creer que esto es inevitable o incluso
que es justo por "ponga usted aquí los motivos que le vengan bien al
lobby, empresa o administración de turno", la realidad es que esto no
es así. La web antes no era así y siguen habiendo otras opciones. Una
de esas opciones es Gopher.
&lt;/p&gt;

&lt;div id="outline-container-org34bc06d" class="outline-2"&gt;
&lt;h2 id="org34bc06d"&gt;¿Qué es Gopher?&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org34bc06d"&gt;
&lt;p&gt;
Gopher, al igual que la WWW, es un protocolo para compartir y acceder
a documentos y archivos en internet que se publicó en 1991, dos años
antes que la World Wide Web. Se desarrolló en la Universidad de
Minessota, de ahí su nombre ya que la mascota de la universidad y de
los equipos deportivos de la misma es Goldy Gopher&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
Gopher tiene un sistema de navegación, mucho más estructurado que la
web, basado en un sistema de menús conocidos popularmente como
&lt;i&gt;gophermaps&lt;/i&gt;. Este sistema de menús contiene enlaces a diferentes
tipos de archivos y a otros menús. Es un interfaz en texto plano por
lo que es muy rápida y consume muy pocos recursos.
&lt;/p&gt;

&lt;p&gt;
Sin duda es un protocolo de su tiempo, en el que las conexiones eran
lentas y costosas, y las máquinas no eran tan potentes como ahora por
lo que el objetivo era compartir la mayor cantidad posible de
información relevante con el menor consumo de datos posibles.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgd42a0cf" class="outline-2"&gt;
&lt;h2 id="orgd42a0cf"&gt;Gopher está libre de los excesos tan habituales en la web&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgd42a0cf"&gt;
&lt;p&gt;
A diferencia de la WWW que favorece los excesos y los abusos, &lt;b&gt;Gopher
por su simplicidad los impide y favorece el contenido por encima del
continente&lt;/b&gt;. Gopher es un protocolo muy sencillo en el que por cada
petición que se le hace al servidor, este devuelve un único menú en
texto plano o un único documento (archivo) y cierra la conexión.
&lt;/p&gt;

&lt;p&gt;
La sencillez del sistema es precisamente lo que imposibilita o dificulta
muchísimo los abusos y excesos que son tan habituales en la web
por varios motivos entre los que cabe destacar los siguientes:
&lt;/p&gt;

&lt;ul class="org-ul"&gt;
&lt;li&gt;&lt;b&gt;En Gopher no existen sesiones ni cookies&lt;/b&gt; por lo que es imposible
rastrear a la gente&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; e innecesario mostrar una política de
cookies.&lt;/li&gt;

&lt;li&gt;Al ser un sistema en el que cada petición es única, el servidor sólo
devuelve el documento que se le ha solicitado y nada más y que lo
que recibimos es un único archivo, &lt;b&gt;se evita el que se hagan
automáticamente otras peticiones para recibir al mismo tiempo imágenes,
vídeos u otros documentos&lt;/b&gt; ya sea del mismo servidor o de otros
servidores distintos.&lt;/li&gt;

&lt;li&gt;Como es un protocolo que solamente comparte archivos no soporta
javascript ni niguna otra cosa parecida por lo que &lt;b&gt;en ningún caso
puede cargar y ejecutar directamente un programa en el ordenador del
usuario&lt;/b&gt;.&lt;/li&gt;

&lt;li&gt;Al tener solamente un interfaz textual y carecer de un sistema de
diseño y maquetación de contenidos la información suele ser mucho
más ligera ya que se presenta en texto plano. Si se quiere algo
maquetado o con diseño siempre se podrán poner archivos en formatos
como ODF, PDF, PS, etc., y el usuario siempre podrá decidir si
quiere y puede descargarlos o no.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;b&gt;De todo esto se desprende que Gopher es un sistema ligero en el que
se va al grano y que no requiere de mucho ancho de banda para
funcionar&lt;/b&gt;. En Gopher el contenido es lo realmente importante ya que
carece de los mecanismos estéticos de la web y además nos proporciona
la tranquilidad de que no invade nuestra privacidad&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orge087c4d" class="outline-2"&gt;
&lt;h2 id="orge087c4d"&gt;Gopher no es para todos y está bien así&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orge087c4d"&gt;
&lt;p&gt;
Aunque a mucha gente no le gustan los anuncios, que los rastreen y las
ventanitas de políticas de cookies y consensos de privacidad, también
es cierto que creen no poder vivir sin mucho de ese mismo &lt;i&gt;bloatware&lt;/i&gt;
que hace que funcionen las cosas que no les gustan.
&lt;/p&gt;

&lt;p&gt;
La web es como un mercadillo de fin de semana o un parque de
atracciones en temporada alta mientras que Gopher es más parecido
a una biblioteca de ciudad. Son dos cosas diferentes para públicos
diferentes y/o para momentos diferentes. &lt;b&gt;Si en la WWW estamos en
un mercadillo donde todos nos gritan para vendernos su mercancía,
en Gopher estamos en la cafetería de tertulia con amigos y personas
con inquietudes&lt;/b&gt;. A veces nos gusta una cosa y otras veces nos gusta
(o necesitamos) otra y está bien así, no todo tiene que ser para
todo el mundo ni para todos los momentos.
&lt;/p&gt;

&lt;p&gt;
El uso de Gopher decayó en favor de la WWW a finales de los 90, pero
&lt;b&gt;este protocolo ha sobrevivido hasta nuestros días principalmente
gracias a pequeñas comunidades conocidas como Pubnixes&lt;/b&gt; (del inglés
Public Unixes, sistemas Unix de acceso público) y tildes. Aunque en
estas comunidades hay muchas personas con un perfil y/o inquietudes
técnicas, hay variedad de personas con inquietudes y aficiones
dispares.
&lt;/p&gt;

&lt;p&gt;
Los pubnixes suelen ser, por norma general, máquinas con pocos
recursos que costea una sola persona, junto can algunas donaciones,
por lo que cada pubnix tiene un número limitado de usuarios lo que
favorece que se vayan creando más comunidades pequeñas a medida
que aumenta el número de personas interesadas. Al ser comunidades
pequeñas favorecen el que la gente interactúe más entre sí y se
conozcan mejor por lo que da lugar a interacciones más auténticas
y relevantes.
&lt;/p&gt;

&lt;p&gt;
Además las personas de unas comunidades interactúan con personas de
otras lo cual mantiene un tejido social entre todas ellas. Lo
habitual es que alguien que forma parte de un comunidad, en un
momento determinado, decida crear su propio pubnix para dar cabida
a nuevas personas por lo que siempre hay intercambios entre comunidades
y hay personas que pertenecen a más de una.
&lt;/p&gt;

&lt;p&gt;
Todo este ecosistema social constituye una parte importante de la
belleza del Gopherespacio. &lt;b&gt;Aquí la gente escribe y comparte porque
tienen algo que decir o porque sienten la necesidad o el deseo de
hacerlo. Nadie publica veinte banalidades diarias para mejorar su
posicionamiento SEO y los que leen lo hacen porque realmente tienen
interés y no porque tengan "miedo a perderse algo"&lt;/b&gt;&lt;sup&gt;&lt;a id="fnr.5" class="footref" href="#fn.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
Por otro lado, las personas que necesitan o desean interactuar casi en
tiempo real con un montón de contenido multimedia que se va
actualizando a cada instante, crear una marca personal para vender cosas,
conseguir miles de seguidores y obtener decenas de miles de me gusta,
con casi total seguridad se sentirán fuera de lugar en el Gopherespacio.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;div id="outline-container-orgd429dc5" class="outline-2"&gt;
&lt;h2 id="orgd429dc5"&gt;¿Qué tengo que hacer para explorar el Gopherespacio?&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgd429dc5"&gt;
&lt;p&gt;
Ahora que ya tenemos una idea de lo qué es y de lo que no es Gopher
lo más probable es que queramos echar un vistazo. Al igual
que para navegar por la WWW hace falta un navegador web, &lt;b&gt;para
explorar el Gopherespacio hace falta un cliente Gopher&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
Hace años muchos navegadores web soportaban tanto la WWW como Gopher
pero luego decidieron ir eliminando ese soporte. Uno de los
navegadores que lo han mantenido es Lynx. &lt;b&gt;A continuación hay una
una lista&lt;sup&gt;&lt;a id="fnr.6" class="footref" href="#fn.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt; de clientes Gopher para todos los sistemas y públicos
así como extensiones para activar Gopher en los navegadores basados en
Firefox y para los basados en Chrome&lt;/b&gt;:
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;&lt;a href="https://gmi.skyjake.fi/lagrange/" target="_blank"&gt;Lagrange&lt;/a&gt;: es un cliente gráfico disponible para GNU/Linux, BSDs,
Macos, Windows y también tiene versiones beta para móviles iOS y
Android. Aunque en su web pone que es un cliente de Gemini también
soporta Gopher y otros protocolos similares.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bombadillo.colorfield.space/" target="_blank"&gt;Bombadillo&lt;/a&gt;: es un cliente con interfaz de texto para sistemas
GNU/Linux, BSDs y Macos.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thelambdalab.xyz/elpher/" target="_blank"&gt;Elpher&lt;/a&gt;: cliente para GNU Emacs.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/overbitewx/" target="_blank"&gt;OverbiteWX&lt;/a&gt;: &lt;i&gt;add-on&lt;/i&gt; para los navegadores basados en Firefox.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://chromewebstore.google.com/detail/burrow-gopherspace-explor/plhaaggiajlcjclagmjnjmaonhkdhhji" target="_blank"&gt;Burrow Gopherspace Explorer&lt;/a&gt;: &lt;i&gt;add-on&lt;/i&gt; para los navegadores basados en
Chromium.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Una vez que se tiene el cliente, el funcionamiento es con URLs del tipo
gopher://. &lt;b&gt;En español hay menos recursos y sitios que en inglés pero
puedes empezar visitando la comunidad Texto Plano gopher://texto-plano.xyz/
que es una tilde en español&lt;/b&gt;, principalmente gente de latinoamérica.
También puedes visitar mi propia madriguera de geómido&lt;sup&gt;&lt;a id="fnr.7" class="footref" href="#fn.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt; en la
URL gopher://lucio.albenga.es/1/es en la que encontrarás una sección
con enlaces a varios agregadores de phlogs&lt;sup&gt;&lt;a id="fnr.8" class="footref" href="#fn.8" role="doc-backlink"&gt;8&lt;/a&gt;&lt;/sup&gt;, pubnixes y otros
recursos Gopher.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org822fffb" class="outline-2"&gt;
&lt;h2 id="org822fffb"&gt;Conclusión&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org822fffb"&gt;
&lt;p&gt;
&lt;b&gt;Sin ninguna duda la mayoría de la gente directamente descartará Gopher
alegando que es una "tecnología obsoleta"&lt;/b&gt; u otros argumentos
similares, otros tendrán curiosidad por ver de qué va y pasado un
tiempo ni se acordarán de ello, un número menor seguirán visitando sus
madrigueras favoritas y unos pocos terminarán creando sus propias
madrigueras o incluso montarán un servidor pubnix. Todo eso está
bien, Gopher no pretende vender nada a nadie ni solucionar los
problemas del mundo.
&lt;/p&gt;

&lt;p&gt;
Como decía al principio, Gopher es una de las soluciones a los excesos
y abusos de la web. Hay otras como Spartan o Gemini pero &lt;b&gt;lo importante
es saber que en un momento donde mucha gente se queja del &lt;i&gt;bloatware&lt;/i&gt; de
la WWW, habla de &lt;i&gt;indie web&lt;/i&gt;, &lt;i&gt;small web&lt;/i&gt; y &lt;i&gt;smolweb&lt;/i&gt;, de permacomputación,
de comunidades sostenibles, y de otras cosas similares, Gopher lleva
proporcionando mucho de todo ello desde 1991&lt;/b&gt; y ahí está, esperando
a que decidamos conocerlo y darle una oportunidad como un artesano veterano
que puede que no luzca tan bien como cuando era joven, pero cuya habilidad
y precisión de movimientos son capaces de crear un utensilio que nos dure
toda la vida.
&lt;/p&gt;

&lt;p&gt;
Nos vemos en el Gopherespacio (o no).
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
He hecho la prueba con varias webs de entre los primeros
resultados de búsqueda y si tenemos en cuenta que tengo
bloqueadores de cosas las cantidades de datos podrían ser
incluso superiores.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
Gopher en español se traduce como geómido (Geomyidae), un
roedor de la familia de los castores conocidos vulgarmente
como tuzas que se encuentran en el continente Americano.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
Hay gente que ha montado un sistema primitivo de sesiones y
rastreo que solamente funciona en su propio &lt;i&gt;gopher hole&lt;/i&gt;
mediante la generación automática de enlaces con un
identificador único, pero en ningún caso se instala o almacena
algo en el ordenador del usuario que permita rastrearlo en el
tiempo y en toda la red.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
Hay que tener en cuenta que Gopher no es una comunicación
encriptada por lo que si alguien te monitoriza sí que podrá ver
los contenidos a los que accedes pero esa monitorización
tendría que ser un &lt;i&gt;man in the middle&lt;/i&gt; o tu propio proveedor de
conexión a internet. Aunque hay formas de tener el equivalente
en Gopher del https de la WWW, esto no forma parte de la
especificación del protocolo.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.5" class="footnum" href="#fnr.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://es.wikipedia.org/wiki/S%C3%ADndrome_FOMO" target="_blank"&gt;Wikipedia Síndrome FOMO&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.6" class="footnum" href="#fnr.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
La lista propuesta son solo algunas opciones pero no contiene
ni de lejos todos los clientes Gopher que existen. A diferencia
de la WWW que es tan complicada que prácticamente solo hay dos
o tres navegadores, hacer un cliente Gopher es relativamente
sencillo por lo que hay muchos, lo cual es otra ventaja ya que
la variedad evita el monopolio.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.7" class="footnum" href="#fnr.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
Del inglés &lt;i&gt;Gopher Hole&lt;/i&gt;, es el término que equivale al de
página web en la WWW.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.8" class="footnum" href="#fnr.8" role="doc-backlink"&gt;8&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
De Gopher Log, el equivalente de un blog en la WWW.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Mon, 01 Sep 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-09-01:/web/posts/2025/gopher-una-respuesta-sencilla-a-los-excesos-de-la-web.html</guid><category>Ensayo</category><category>ensayo</category><category>gopher</category><category>internet</category><category>www</category></item><item><title>¿Por qué no uso la Creative Commons?</title><link>https://lucio.albenga.es/web/posts/2025/por-que-no-uso-la-cretive-commons.html</link><description>&lt;p&gt;
Desde hace unas dos décadas es bastante habitual que muchos de los
contenidos que se publican en internet se hagan bajo alguna licencia
Creative Commons. En el pasado yo también lo he hecho pero este
año, a raíz de una serie de acontecimientos, he decidido dejar de
hacerlo.
&lt;/p&gt;

&lt;p&gt;
En el pasado ya tuve un incidente con contenidos míos que se
compartieron, a mi entender, de forma indebida para presentar una
web como si fuera mía cuando no lo era y tuve una experiencia
bastante complicada con el proveedor de servicios que se negaba a
intervenir porque yo mismo admitía que esos contenidos eran
Creative Commons. Sin embargo &lt;b&gt;lo que me ha hecho cambiar realmente
de opinión sobre CC han sido las siguientes dos cosas&lt;/b&gt;:
&lt;/p&gt;

&lt;ol class="org-ol"&gt;
&lt;li&gt;La iniciativa Creative Commons Signal&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;. Te recomiendo que no
te pierdas las discusiones en GitHub&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; donde se ve como la gente
de CC hace oídos sordos a lo que no les interesa.&lt;/li&gt;

&lt;li&gt;Un publicación que me llegó posteriormente vía Mastodon de un
artículo, a mi entender, bastante pro IA por parte de Creative
Commons&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Si tenemos en cuenta que un número ingente del contenido licenciado
bajo Creative Commons lo está bajo las licencias CC BY-NC-SA&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; y
CC BY-NC-ND&lt;sup&gt;&lt;a id="fnr.5" class="footref" href="#fn.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt;, y que ambas licencias obligan por un lado a reconocer
la autoría de la obra y por otro lado prohíben su uso de cualquier
forma comercial, obtenemos que &lt;b&gt;Creative Commons ha pasado de ser
una organización que se suponía que estaba a favor de artistas y
creadores a una que parece ser que ha terminado por estar a favor
de empresas y organismos que, entre otras cosas, vulneran en gran
medida los términos de sus propias licencias&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
Así que ante este panorama y por motivos éticos yo no puedo seguir
utilizando licencias Creative Commons ni apoyar y/o publicitar
su uso.
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://creativecommons.org/ai-and-the-commons/cc-signals/" target="_blank"&gt;Creative Commons Signal Proposal&lt;/a&gt; 
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://github.com/creativecommons/cc-signals/discussions/categories/open-feedback-suggestions-and-ideas" target="_blank"&gt;CC Signals Open Feedback, Suggestions and Ideas&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://creativecommons.org/2021/03/04/should-cc-licensed-content-be-used-to-train-ai-it-depends/" target="_blank"&gt;Should CC-Licensed Content be Used to Train AI? It Depends.&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.es" target="_blank"&gt;Resumen de la Licencia Creative Commons BY-NC-SA&lt;/a&gt; 
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.5" class="footnum" href="#fnr.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.es" target="_blank"&gt;Resumen de la Licencia Creative Commons BY-NC-ND&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Fri, 29 Aug 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-08-29:/web/posts/2025/por-que-no-uso-la-cretive-commons.html</guid><category>Opinion</category><category>licencias</category><category>blog</category></item><item><title>De Software, Licencias, Morales y Éticas</title><link>https://lucio.albenga.es/web/posts/2025/de-software-licencias-morales-y-eticas.html</link><description>&lt;p&gt;
De cuando en cuando ocurre que se genera un debate sobre temas de licencias de software libre y &lt;i&gt;open source&lt;/i&gt;.
En este tipo de debates siempre suelen haber acérrimos defensores del software libre que defienden la GPL y
la AGPL a ultranza y acérrimos detractores del software libre y, más concretamente, de Richard Stallman y de
la Free Software Foundation, que defienden a ultranza el &lt;i&gt;open source&lt;/i&gt; y el que se utilicen licencias más
permisivas como la MIT o las BSD.
&lt;/p&gt;

&lt;p&gt;
En general &lt;b&gt;cuando se habla de &lt;i&gt;open source&lt;/i&gt;, una parte limita la cuestión estrictamente a lo técnico&lt;/b&gt;: desarrollo
colaborativo, mejor calidad del producto al ser desarrollado por más gente, mayor seguridad al haber más ojos
para revisarlo, etc., y otros se centran más en lo económico que principalmente es que no tienen que pagar
por el software. Sin embargo cuando se habla de software libre, inevitablemente se habla de conceptos de caracter más
humanista: de ética y de moral, de lo que es justo para la gente y de lo que no lo es, del bien de la mayoría
por decirlo de algún modo.
&lt;/p&gt;

&lt;div id="outline-container-org76c0c93" class="outline-2"&gt;
&lt;h2 id="org76c0c93"&gt;Licencias más o menos libres&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org76c0c93"&gt;
&lt;p&gt;
Dentro del mundillo &lt;i&gt;open source&lt;/i&gt; el argumento clásico en contra de la GPL y de la AGPLv3 es que dichas licencias, al
imponer determinadas restricciones, no son realmente libres mientras que las licencias más permisivas si que
lo son. &lt;b&gt;En pocas palabras, la queja es que las licencias GPL y, sobre todo, la AGPLv3 no permiten que alguien coja
un programa libre y pueda hacer una versión cerrada del mismo&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
El otro argumento bastante típico, al hilo de las "restricciones" de estas licencias, es el de que si pones tu proyecto
bajo la GPLv3 o la AGPLv3 no lo va a usar nadie debido a dichas restricciones así que para qué quieres hacer algo que
nadie va a usar. Este argumento es un despropósito ya que mucha gente usa software bajo estas licencias a diario,
con mucha probabilidad incluso los que hacen este tipo de comentarios absurdos.
&lt;/p&gt;

&lt;p&gt;
Para Stallman, la Free Software Foundation y el movimiento del software libre, cuando se habla de
libertad, se habla de la libertad de los usuarios, entendiendo como usuario a alguien que utiliza un programa
y/o el código fuente de un programa. Así que la libertad que se defiende es principalmente la libertad de los
individuos. Por lo tanto &lt;b&gt;la GPLv3 y la AGPLv3 procuran dar una serie de derechos al mismo tiempo que procuran
eliminar la posibilidad de que alguien pueda restringir estos derechos&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
Ese es el motivo de que estas licencias contengan cláusulas que "obligan" a entregarle a los usuarios el código fuente
de los programas que utilizan, para que puedan estudiarlo y cambiarlo, y además se les permite  redistribuir a su
vez los programas con o sin cambios, de forma gratuita o cobrando por ello, con la obligación de hacerlo
bajo la misma licencia. Por otro lado &lt;b&gt;las licencias más permisivas no incluyen estas cláusulas
"restrictivas" de obligar a usar la misma licencia por lo que en la práctica permiten que alguien pueda quitarle
a los usuarios los derechos de los que él se está beneficiando&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
Tanto la GPL como la AGPL dan estos derechos cuando se distribuye el programa, esto es, se le entrega
al usuario una copia del mismo. La principal diferencia entre la GPLv3 y la AGPLv3 es lo que se entiende
como distribución de un programa. &lt;b&gt;Según la GPLv3, la distribución se produce cuando se le da al usuario el programa
para que lo ejecute en su dispositivo&lt;/b&gt;, ya sea mediante una descarga online de un archivo o conjunto de archivos,
ya sea mediante la distribución en un soporte físico: diskette, cinta de datos, pendrive, cdrom, etc. Como se suele
decir, quién hizo la ley hizo la trampa y determinados actores encontraron un modo de aprovecharse del software libre,
de lucrarse con él y de no dar nada a cambio precisamente buscando la forma de invalidar la distribución del softwmare
según la definición de la GPL. Así nació el Software como Servicio, más conocido por las siglas SaaS (Software as
a Service en inglés).
&lt;/p&gt;

&lt;p&gt;
Los que ofrecen software como servicio, según los términos de la GPL, no lo "distribuyen" por lo tanto no tienen la
obligación de darle a sus usarios el código fuente de la versión modificada. &lt;b&gt;La AGPLv3 viene a resolver
este vacío legal añadiendo en la cláusula 13 lo siguiente&lt;/b&gt;:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
&amp;#x2026;if you modify the Program, your modified version must prominently offer all users interacting with it remotely through
a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your
version&amp;#x2026;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
que se traduce como "&amp;#x2026;si modifica el Programa, su versión modificada debe ofrecer de manera visible a todos los usuarios
que interactúen con él de forma remota a través de una red informática (si su versión admite dicha interacción), la oportunidad
de recibir el Fuente Correspondiente&amp;#x2026;". Esta cláusula hace que sea prácticamente imposible ofrecer el software sin darle al
usuario una copia del código fuente del mismo.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org31b9cc8" class="outline-2"&gt;
&lt;h2 id="org31b9cc8"&gt;¿Quién se beneficia de qué?&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org31b9cc8"&gt;
&lt;p&gt;
Teniendo en cuenta todo lo anterior, es bastante fácil darse cuenta de que &lt;b&gt;un programa bajo una licencia &lt;i&gt;open source&lt;/i&gt;
más permisiva beneficia principalmente a empresas de cierta envergadura que tienen los medios para explotar este software&lt;/b&gt;
ya sea vendiéndolo como servicio, ya sea haciéndole algunos cambios y revendiéndolos de forma cerrada. Los casos
típicos son, como no, las empresas conocidas como &lt;i&gt;big tech&lt;/i&gt;. Apple cogió software licenciado de forma permisiva bajo BSD,
lo modificó y lo revendió de forma cerrada dentro de Mac OS X e iOS. Microsoft y Amazon con sus plataformas de computación en
la nube son un ejemplo de cómo lucrarse con software licenciado bajo GPL sin tener que dar nada a cambio.
&lt;/p&gt;

&lt;p&gt;
En lo referente al argumento de para qué haces algo si nadie va a usarlo, creo que ese "nadie" hace referencia principalmente
a este tipo de empresas ya que mismamente &lt;b&gt;Google prohíbe a sus ingenieros el uso de cualquier código
licenciado bajo la AGPLv3&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/b&gt;, aunque con esta licencia si solamente "venden el servicio", sin realizar
ningún tipo de cambio, con enlazar al código fuente del proyecto original tienen más que suficiente para cumplir.
&lt;/p&gt;

&lt;p&gt;
Entre los perjudicados hay muchos casos dónde escoger. Algunos ejemplos famosos son el caso de los paquetes de
javascript &lt;i&gt;colors&lt;/i&gt; y &lt;i&gt;faker&lt;/i&gt;&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; (licenciados bajo la licencia MIT), el caso de Log4j&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; (licenciado bajo
Apache APL 2.0) y los cambios de licencias de Redis&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; (originalmente licenciado bajo BSD 3-clause license),
MongoDB&lt;sup&gt;&lt;a id="fnr.5" class="footref" href="#fn.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; (originalmente licenciado bajo AGPLv3) y ElasticSearch&lt;sup&gt;&lt;a id="fnr.6" class="footref" href="#fn.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt; (originalmente licenciado bajo Apache APL 2.0)
que además fueron muy criticados por dichos cambios de licencias.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org7bac6ee" class="outline-2"&gt;
&lt;h2 id="org7bac6ee"&gt;Pero sea como sea el software tiene que ser libre u open source, ¿no?&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org7bac6ee"&gt;
&lt;p&gt;
Viendo la cantidad de críticas realizadas por parte de miembros de la comunidad &lt;i&gt;open source&lt;/i&gt; a Redis, MongoDB, ElasticSearch
e incluso al desarrollador de &lt;i&gt;colors&lt;/i&gt; y &lt;i&gt;faker&lt;/i&gt;, Marak Squires, cualquiera podría pensar que la única cosa en la
que parecen estar prácticamente todos deacuerdo es que sea como sea el software tiene que ser libre u open source.
Sin embargo los hechos parecen indicar que, como todo en esta vida, depende.
&lt;/p&gt;

&lt;p&gt;
Si eres un actor pequeño como un desarrollador independiente, un pequeño equipo
de desarrollo o una empresa que no sea extremadamente grande, importa y mucho el que tu software no sea
privativo. Por el contrario &lt;b&gt;se le da mucha menos importancia al tema cuando el software privativo resulta
ser el sistema operativo MacOS de un MacBook&lt;/b&gt;, portátiles bastante utilizados entre lo desarrolladores de la
comunidad &lt;i&gt;open source&lt;/i&gt;, o si sirve para que funcionen adecuadamente las tarjetas gráficas de nVidia y los chipsets
WiFi de Qualcomm en los sistemas con kernel Linux.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Claro que esto no debería de extrañar a nadie ya que un número importante de los que van dando lecciones de
ética y moral, y aconsejan sobre licencias de software al resto, lo hacen mientras van de camino al banco a
ingresar su cheque&lt;/b&gt; de RedHat (IBM), Google, Meta, o Microsoft, por mencionar a algunos. En este panorama
tenemos casos para todos los gustos, desde líderes de la comunidad &lt;i&gt;open source&lt;/i&gt; que entran en barrena porque
alguien intenta hacer ingeniería inversa para hacer una versión libre de un programa privativo&lt;sup&gt;&lt;a id="fnr.7" class="footref" href="#fn.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt;, hasta
el buque insignia de las empresas &lt;i&gt;open source&lt;/i&gt; que directamente coge todo el software libre que
quiere y lo convierte, &lt;i&gt;de facto&lt;/i&gt;, en un producto de software privativo&lt;sup&gt;&lt;a id="fnr.8" class="footref" href="#fn.8" role="doc-backlink"&gt;8&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org3f78b90" class="outline-2"&gt;
&lt;h2 id="org3f78b90"&gt;Conclusión&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org3f78b90"&gt;
&lt;p&gt;
El tiempo y la experiencia me han enseñado que se pueden hacer y usar programas de software libre y
open source con fines abusivos de igual manera que también he visto desarrolladores individuales
y pequeños equipos de desarrollo hacer programas privativos que les proporcionan unos ingresos dignos sin
explotar ni extorsionar a nadie, por lo tanto opino que cada cual puede hacer con su tiempo y su dinero
lo que considere siempre y cuando no dañe a nadie.
&lt;/p&gt;

&lt;p&gt;
A mi me parece bien que alguien haga software libre bajo la licencia que sea, aunque yo siempre recomiende la AGPLv3,
porque quiere contribuir de forma altruista a la sociedad y/o ganarse los garbanzos con ello, y también me parece bien
que otros quieran ganarse la vida honradamente haciendo software privativo y venderlo. &lt;b&gt;Lo que no me parece bien son
las personas que actúan de mala fe, que dicen una cosa mientras están haciendo la contraria, que pretenden dar una apariencia
de compromiso con la sociedad cuando en realidad manipulan las cosas&lt;/b&gt; para que las corporaciones que firman sus
cheques obtengan pingües beneficios, engañando y explotando a todos los demás.
&lt;/p&gt;

&lt;p&gt;
Lo malo no está en las licencias ni en los programas. Lo malo no está en si haces software libre, open source o
privativo. Lo malo reside en la falta de criterio y de honestidad. &lt;b&gt;Lo malo está en los egos y ambiciones
enfermizas de las personas&lt;/b&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://opensource.google/documentation/reference/using/agpl-policy/" target="_blank"&gt;Google Open Source AGPL Policy&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/" target="_blank"&gt;Bleeping Computer: Dev Corrupts NPM libs Colors and Faker Breaking Thousands of Apps&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.theregister.com/2021/12/14/log4j_vulnerability_open_source_funding/" target="_blank"&gt;The Register: Log4j doesn't just blow a hole in your servers, it's reopening that can of worms: Is Big Biz exploiting open source?&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://redis.io/blog/redis-adopts-dual-source-available-licensing/" target="_blank"&gt;Redis Adopts Dual Source-Available Licensing&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.5" class="footnum" href="#fnr.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.theregister.com/2018/10/16/mongodb_licensning_change/" target="_blank"&gt;The Register: Fed up with cloud giants ripping off its database, MongoDB forks new 'open-source license'&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.6" class="footnum" href="#fnr.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.geekersdigest.com/elastic-elasticsearch-open-source-license-change/" target="_blank"&gt;Geeker's Digest: Elastic changes its open source license, becomes "less open"&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.7" class="footnum" href="#fnr.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.theregister.com/2005/04/14/torvalds_attacks_tridgell/" target="_blank"&gt;Torvalds knifes Tridgell&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.8" class="footnum" href="#fnr.8" role="doc-backlink"&gt;8&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.theregister.com/2023/06/23/red_hat_centos_move/" target="_blank"&gt;Red Hat strikes a crushing blow against RHEL downstreams&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Sun, 20 Jul 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-07-20:/web/posts/2025/de-software-licencias-morales-y-eticas.html</guid><category>Ensayo</category><category>ensayo</category><category>software-libre</category><category>etica</category><category>moral</category></item><item><title>Mega65 una retromáquina moderna: primera toma de contacto mediante su emulador</title><link>https://lucio.albenga.es/web/posts/2025/mega65-una-retromaquina-moderna-primera-toma-de-contacto-mediante-su-emulador.html</link><description>
&lt;figure id="org9ce0169"&gt;
&lt;img src="../../images/mega65-1/mega65-official-web.png" alt="mega65-official-web.png" loading="lazy"&gt;

&lt;figcaption&gt;&lt;span class="figure-number"&gt;Figura 1: &lt;/span&gt;Foto del Mega65 obtenida de la web oficial.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;
Hace unos años me enteré de la existencia del Mega65&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;, un nuevo ordenador de 8 bits
que pretende ser el Commodore C65 que nunca salió a la luz. De hecho esta máquina está
basada en prototipos del C65 y su ROM parte de la del C65 que lógicamente contenía muchos
errores por pulir ya que sólo era un prototipo en desarrollo.
&lt;/p&gt;

&lt;p&gt;
Este ordenador utiliza un FPGA y aparte de ser un Commodore C65 mejorado tiene compatibildad
con un C64 tanto desde el propio core del Mega65, que imita la capa de compatibilidad
que tenían prevista incluir los ingenieros de Commodore en el C65, como un core propio
que imita un Commodore C64 completo. Ahora mismo hay otros cores como uno de ZX Spectrum y
otro de GameBoy.
&lt;/p&gt;

&lt;p&gt;
Hace unos días quise echarle un vistazo de nuevo al proyecto para ver cómo había evolucionado.
Me interesó sobre todo ver que aparte de en BASIC y en ensamblador, se podía ya programar en C
e incluso hay un PASCAL para este sistema. También ví que había un emulador llamado Xemu&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt;
así que me decidí a instalarlo y probar el Mega65.
&lt;/p&gt;

&lt;div id="outline-container-orge5b7919" class="outline-2"&gt;
&lt;h2 id="orge5b7919"&gt;Instalación y configuración del emulador Xemu&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orge5b7919"&gt;
&lt;p&gt;
Aunque se puede instalar desde el código fuente que está en GitHub&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt;, el desarrolador
proporciona algunos paquetes&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; entre los cuales se encuentra uno para Ubuntu que funciona
perfectamente en mi sistema Devuan GNU+Linux. Así que lo descargué y lo instalé.
&lt;/p&gt;

&lt;p&gt;
Como es habitual, el emulador requiere de la ROM del sistema. Yo he seguido los pasos
indicados en la documentación oficial de Xemu&lt;sup&gt;&lt;a id="fnr.5" class="footref" href="#fn.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; para obtenerla. El proceso no es muy
complicado pero requiere algo de trabajo por nuestra parte ya que por un lado debemos
obtener la ROM original del Commodore C65 que puedes encontrar en internet (suele
estar bajo el nombre 910828.bin) y por otro lado debemos obtener los archivos con los
cambios propios de la ROM del Mega65 que son software libre y que puedes descargar desde
el repositorio de archivos oficial&lt;sup&gt;&lt;a id="fnr.6" class="footref" href="#fn.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt; (busca por BDF).
&lt;/p&gt;

&lt;p&gt;
Una vez que tenemos todos los archivos hay que parchear la ROM del C65 para aplicarle los
cambios de Mega65. Para parchear la ROM en mi sistema Devuan GNU+Linux instalé &lt;i&gt;bsdiff&lt;/i&gt; y
luego utilicé el comando &lt;i&gt;bspatch&lt;/i&gt; que forma parte de &lt;i&gt;bsdiff&lt;/i&gt;.
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;sudo apt install bsdiff
bspatch 910828.bin new-920364.bin 920413/920413.bdf
&lt;/pre&gt;&lt;/div&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;&lt;code&gt;910828&lt;/code&gt; es la ROM original del C65&lt;/li&gt;
&lt;li&gt;&lt;code&gt;new-920364.bin&lt;/code&gt; es la ROM parcheada que vamos a utilizar&lt;/li&gt;
&lt;li&gt;&lt;code&gt;920413/920413.bdf&lt;/code&gt; son los cambios en la ROM del Mega65&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Ahora que tenemos la ROM y el emulador instalado solamente nos queda ejecutar el emulador y
configurarlo. Lo podemos ejecutar desde el entorno gráfico o desde la terminal con el comando
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;xemu-xmega65
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
Durante el primer arranque nos pedirá si queremos que nos cree el archivo SD virtual
necesario por el emulador y demás cosas necesarias. Le indicamos que sí y una vez que
esté todo arrancado y ejecutado procedemos a añadir la ROM haciendo click derecho sobre la
ventana del emulador y seleccionando "Disks" -&amp;gt; "SD-card" -&amp;gt; "Update files on SD image".
&lt;/p&gt;

&lt;p&gt;
Una vez hecho esto hacemos click derecho sobre la ventana del emulador y seleccionamos
"Reset/ROM Switching" -&amp;gt; "Reset". En este momento ya debería de arrancar el emulador en el
modo Mega65.
&lt;/p&gt;

&lt;figure id="org0d470e8"&gt;
&lt;img src="../../images/mega65-1/mega65-basic2.png" alt="mega65-basic2.png" loading="lazy"&gt;

&lt;figcaption&gt;&lt;span class="figure-number"&gt;Figura 2: &lt;/span&gt;Imagen del Mega65 una vez arrancado en el emulador Xemu&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;div id="outline-container-org9a74458" class="outline-2"&gt;
&lt;h2 id="org9a74458"&gt;Probando y disfrutando el Mega65&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org9a74458"&gt;
&lt;p&gt;
Lo siguiente que hice fue descargar la documentación oficial del Mega65 para saber cómo
funcionaba el sistema por encima e hice un par de pruebas muy simples en BASIC. También
me descargué y probé el juego "Meteor Defense" para comprobar si el emulador funcionaba.
Puedes descargarte el juego, la documentación y más cosas desde el repositorio oficial de
archivos del Mega65 (ver notas al pie).
&lt;/p&gt;


&lt;figure id="org04ae519"&gt;
&lt;img src="../../images/mega65-1/mega65-meteor.png" alt="mega65-meteor.png" loading="lazy"&gt;

&lt;figcaption&gt;&lt;span class="figure-number"&gt;Figura 3: &lt;/span&gt;Imagen del juego Meteor Defense en el emulador de Mega65 Xemu&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;
Tras comprobar su funcionamiento me decidí a transcribir un programa más grande así que
tecleé el programa "Monster Chase" del libro Stimulating Simulations de C. William Engel&lt;sup&gt;&lt;a id="fnr.7" class="footref" href="#fn.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt;,
lo ejecuté, lo guardé en una imagen de diskette virtual, lo volví a cargar y lo volví a
ejecutar.
&lt;/p&gt;

&lt;p&gt;
El juego en BASIC funcionó sin problemas y la verdad es que me agradó mucho tanto el hecho
de que funcionara como la experiencia de tener que escribir en un ordenador un juego en BASIC
copiándolo de un libro para poder jugar con él. Aunque esto hoy en día pueda parecer una broma,
cuando yo empecé con los ordenadores en los 80 era muy habitual y dudo que alguien que no haya
pasado por este ritual pueda entenderlo o apreciarlo en su justa medida.
&lt;/p&gt;


&lt;figure id="org964eea4"&gt;
&lt;img src="../../images/mega65-1/mega65-basic3.png" alt="mega65-basic3.png" loading="lazy"&gt;

&lt;figcaption&gt;&lt;span class="figure-number"&gt;Figura 4: &lt;/span&gt;Imagen del juego Monster Chase en el emulador de Mega65 Xemu&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;
Tras la experienca con BASIC que me sirvió para comprobar si el emulador funcionaba, instalé
el compilador llvm-mos&lt;sup&gt;&lt;a id="fnr.8" class="footref" href="#fn.8" role="doc-backlink"&gt;8&lt;/a&gt;&lt;/sup&gt; para compilar el código en C ya que este compilador tiene tanto un
&lt;i&gt;target&lt;/i&gt; mos-c64-clang para Commodore C64 como un &lt;i&gt;target&lt;/i&gt; propio para el Mega65,
mos-mega65-clang. Aquí debo decir que las cosas no fueron tan bien como me habría gustado.
&lt;/p&gt;

&lt;p&gt;
Compilándolo para el C64 y ejecutándolo en el emulador con la capa de compatibilidad del
C64 en Mega65 el programa funcionaba sin problemas, sin embargo compilándolo para el Mega65
y ejecutándolo en el emulador en modo Mega65 el programa no funcionaba. No tengo muy claro
si el problema está en el compilador o en el emulador pero por lo que he visto incluso la
gente que dispone del hardware real tiene ciertos problemas, de momento, con sus programas
en C.
&lt;/p&gt;


&lt;figure id="org60b5dfd"&gt;
&lt;img src="../../images/mega65-1/mega65-cprog64.png" alt="mega65-cprog64.png" loading="lazy"&gt;

&lt;figcaption&gt;&lt;span class="figure-number"&gt;Figura 5: &lt;/span&gt;Programa de C ejecutado en la capa de compatibilidad del C64 en el emulador de Mega65&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;figure id="orgcb3d2c7"&gt;
&lt;img src="../../images/mega65-1/mega65-cprog-fail.png" alt="mega65-cprog-fail.png" loading="lazy"&gt;

&lt;figcaption&gt;&lt;span class="figure-number"&gt;Figura 6: &lt;/span&gt;El mismo programa de C ejecutado en la en el emulador de Mega65 en modo Mega65&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;div id="outline-container-org3a1c8e2" class="outline-2"&gt;
&lt;h2 id="org3a1c8e2"&gt;Conclusión&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org3a1c8e2"&gt;
&lt;p&gt;
Tengo sentimientos encontrados con esta máquina ya que el precio no es precisamente bajo y
el hecho de que no funcionara un programa tan simple hecho en C me desanimó bastante,
pero seguiré pendiente de la evolución del proyecto. Mientras tanto seguiré disfrutando
del Mega65 mediante el emulador Xemu.
&lt;/p&gt;

&lt;p&gt;
¡Quién sabe que sorpresas podría deparar esta máquina en un futuro!
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://mega65.org" target="_blank"&gt;Web Oficial de Mega65&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://github.lgb.hu/xemu/" target="_blank"&gt;Web Oficial de Xemu&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://github.com/lgblgblgb/xemu" target="_blank"&gt;Xemu en GitHub&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://github.lgb.hu/xemu/" target="_blank"&gt;Página de descarga de Xemu&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.5" class="footnum" href="#fnr.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://github.com/lgblgblgb/xemu/wiki/MEGA65-ROM-%22how-to-get-it%22-tutorial-for-Xemu" target="_blank"&gt;MEGA65 ROM "how to get it" tutorial for Xemu&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.6" class="footnum" href="#fnr.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://files.mega65.org/html/main.php" target="_blank"&gt;Repositorio Oficial Mega65 Files&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.7" class="footnum" href="#fnr.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://archive.org/details/Stimulating_Simulations_1977_C_William_Engel" target="_blank"&gt;Stimulating Simulations en Archive.org&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.8" class="footnum" href="#fnr.8" role="doc-backlink"&gt;8&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://llvm-mos.org/wiki/Welcome" target="_blank"&gt;Web Oficial de llvm-mos&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Sat, 14 Jun 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-06-14:/web/posts/2025/mega65-una-retromaquina-moderna-primera-toma-de-contacto-mediante-su-emulador.html</guid><category>Retroinformática</category><category>commodore</category><category>mega65</category><category>retroinformatica</category></item><item><title>LibreCan 2025 Postmortem</title><link>https://lucio.albenga.es/web/posts/2025/librecan-2025-postmortem.html</link><description>&lt;p&gt;
El pasado 10 de Mayo se celebró la LibreCan 2025&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;, un meetup de software libre,
organizado por un servidor. He estado atareado con otras cosas así que aún no
había escrito nada al respecto hasta ahora. Hoy es el día de hacer un breve
análisis del evento.
&lt;/p&gt;

&lt;p&gt;
Como ya he mencionado, el evento era un meetup informal que se celebró en
una cervecería/cafetería de Santa Cruz de Tenerife. No había charlas preparadas
ni nada por el estilo. Como nadie se conocía en persona pensé que era mejor este
formato abierto en el que los que quisieran podían aparecer por el establecimiento,
sentarse y participar de la conversación.
&lt;/p&gt;

&lt;p&gt;
El evento comenzaba a las las 16:00 y asistimos personas de todas las edades, tanto
de Tenerife como de Gran Canaria. Desde aquí quiero volver a agradecerle a los que
venían de Gran Canaria su asistencia ya que para ellos, participar, suponía costearse
el desplazamiento más una noche de alojamiento en un hotel.
&lt;/p&gt;

&lt;p&gt;
La conversación fue muy fluida y se habló de muchas cosas. Por un lado se habló
de muchos temas filosóficos del software libre como las diferencias entre
software libre y open source, la Free Software Foundation y las licencias de GNU.
También se habló mucho de historia de la informática y de retroinformática, de
cómo las cosas han evolucionado o involucionado, según se quiera ver.
&lt;/p&gt;

&lt;p&gt;
Hablamos, como no, de sistemas GNU/Linux pero también se habló mucho de los sistemas
de la familia BSD, de la obsolescencia programada y de &lt;i&gt;open hardware&lt;/i&gt;. Hubo mucho
interés sobre equipos portátiles que están saliendo hoy en día que son sostenibles,
fáciles de reparar y que funcionan bien con sistemas abiertos.
&lt;/p&gt;

&lt;p&gt;
Como no podía ser menos, se tocó el tema de los LLMs (la mal llamada IA), y sus
implicaciones éticas y profesionales. También hablamos de privacidad y se tocó
en bastante profundidad el tema de los navegadores web y buscadores alternativos.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;El meetup fue muy interesante y entretenido, tanto que nos fuimos pasadas las 20:00&lt;/b&gt;.
No había una hora estimada de finalización y tanto yo como otros asistentes, si
hubiésemos podido, nos habríamos quedado más tiempo. Para mí esto y el hecho de
que todos queramos repetir significa que el meetup ha sido un éxito :-)
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Ahora seguimos la conversación en el foro de la comunidad LibreCan&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; y en un futuro
organizaremos un nuevo meetup, así que si resides en Canarias te invito a que entres
a formar parte de nuestra comunidad&lt;/b&gt;.
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://librecan.com" target="_blank"&gt;Página Oficial de LibreCan&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://foro.librecan.com" target="_blank"&gt;Foro de la Comunidad Librecan&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Wed, 04 Jun 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-06-04:/web/posts/2025/librecan-2025-postmortem.html</guid><category>Software Libre</category><category>eventos</category><category>librecan</category><category>fsf</category><category>libreplanet</category></item><item><title>¡LibreCan ya está aquí!</title><link>https://lucio.albenga.es/web/posts/2025/librecan-ya-esta-aqui.html</link><description>&lt;p&gt;
&lt;a href="https://lucio.albenga.es/web/posts/2025/libreplanet-canarias.html"&gt;Hace unas semanas comentaba por aquí&lt;/a&gt; que con motivo del 40 aniversario de la FSF podíamos organizar
un meetup informal sobre software libre en Canarias. Esa idea inicial ha evolucionado y hoy me
hace muy feliz presentaros el &lt;b&gt;&lt;a href="https://librecan.com" target="_blank"&gt;meetup y comunidad LibreCan&lt;/a&gt;&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;LibreCan es un punto de encuentro informal para personas que tienen curiosidad
e interés por la cultura libre, el software libre, los derechos
digitales, las redes sociales descentralizadas, el derecho a reparar,
el libre acceso a la información y otros temas afines, en Canarias&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
El lema del meetup, que se celebrará el próximo Sábado 10 de Mayo, es:
"Conoce. Comparte. Debate." y desde aquí te invito a participar
y conectar con gente con tus mismas inquietudes en la primera #LibreCan2025, y también
a que participes en el foro.&lt;a href="https://librecan.com" target="_blank"&gt;¡Súmate y hagamos crecer esta comunidad entre todos!&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Se agradece muchísimo que compartas el enlace a LibreCan, &lt;a href="https://librecan.com" target="_blank"&gt;https://librecan.com&lt;/a&gt;,
para que le llegue a todas las personas que puedan estar interesadas. Muchas
gracias por tu colaboración.
&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Mon, 03 Mar 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-03-03:/web/posts/2025/librecan-ya-esta-aqui.html</guid><category>Software Libre</category><category>eventos</category><category>librecan</category><category>fsf</category><category>libreplanet</category></item><item><title>LibrePlanet Canarias</title><link>https://lucio.albenga.es/web/posts/2025/libreplanet-canarias.html</link><description>&lt;p&gt;
Con motivo del 40 aniversario de la Free Software Foundation&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; que se celebra este año,
una de las muchas propuestas que hay sobre la mesa es la de realizar eventos locales
de software libre (LibrePlanet) y se me ha ocurrido que &lt;b&gt;podríamos organizar una
LibrePlanet aquí en Canarias o más concretamente en Tenerife, dependiendo de las
personas que se apunten y lo que decidamos entre tod@s&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;La idea principal es hacer una quedada informal&lt;/b&gt; en algún bar, pub, guachinche o dónde
se decida, para conocernos, compartir experiencias, despejar dudas, dar opiniones
sobre el software libre, etc. Si estás interesad@ o conoces a alguien que pueda estarlo
no dudes en contactar conmigo y así entre todos decidir la mejor manera de organizar el
evento.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;No hace falta ser un experto en informática para participar, simplemente hacen falta
ganas y curiosidad por el software libre&lt;/b&gt;. Lo ideal es que participen personas de todo
tipo y condición.
&lt;/p&gt;

&lt;p&gt;
Por favor, compártelo para que pueda llegar a cuantas más personas mejor. También
hay una &lt;a href="https://hostux.social/@lfa/113958838719348451" target="_blank"&gt;publicación en Mastodon&lt;/a&gt; que puedes compartir y en la que puedes participar.
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.fsf.org/fsf40/" target="_blank"&gt;FSF Forty years of commitment to software freedom&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Thu, 06 Feb 2025 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2025-02-06:/web/posts/2025/libreplanet-canarias.html</guid><category>Software Libre</category><category>eventos</category><category>fsf</category><category>libreplanet</category></item><item><title>Textbringer, un Emacs hecho con Ruby</title><link>https://lucio.albenga.es/web/posts/2024/textbringer-un-emacs-hecho-con-ruby.html</link><description>&lt;p&gt;
&lt;b&gt;Recientemente me he encontrado por casualidad con un editor &lt;i&gt;EMACS like&lt;/i&gt; hecho
completamente con Ruby: Textbringer&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/b&gt;. Este editor es extensible como GNU Emacs,
pero en lugar que con &lt;i&gt;elisp&lt;/i&gt;, como es lógico se puede extender con &lt;i&gt;Ruby&lt;/i&gt;&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
En cuanto me he enterado de su existencia me ha picado la curiosidad por
probarlo. &lt;b&gt;La instalación se realiza mediante &lt;i&gt;RubyGems&lt;/i&gt;&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/b&gt; y como no me gusta cargar mi
sistema con software que no utilizo he usado una máquina virtual con Debian
GNU/Linux. Además el uso de la máquina virtual ha servido para tener exactamente
las mismas condiciones para la comparativa que veremos más adelante.
&lt;/p&gt;

&lt;p&gt;
A diferencia del editor &lt;i&gt;mg&lt;/i&gt; del que hablo en otra publicación&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt;, &lt;b&gt;este editor tiene
coloreado de sintaxis para C y Ruby y además soporta UTF-8&lt;/b&gt;. Como ya he
mencionado, también permite extender el editor con Ruby, cosa que con &lt;i&gt;mg&lt;/i&gt; no se
puede hacer con ningún lenguaje. Otras características si son más estándar,
dentro de las características de los &lt;i&gt;"otros EMACS"&lt;/i&gt;, como por ejemplo el hecho
de que la ventana solamente se pueda dividir verticalmente o que, al seleccionar
texto, este no queda resaltado por lo que debemos confiar en haberlo hecho bien
a la primera.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;He querido hacer una prueba con el consumo de memoria entre &lt;i&gt;Textbringer&lt;/i&gt;, &lt;i&gt;mg&lt;/i&gt; y
&lt;i&gt;GNU Emacs&lt;/i&gt;&lt;/b&gt;. Para la prueba, sin pretender hacer un benchmark exhaustivo, he
utilizado el programa &lt;i&gt;pmap(1)&lt;/i&gt; que viene instalado en todos los sistemas
GNU/Linux. Todos los editores se han ejecutado recién instalados en la misma
máquina virtual con los paquetes que vienen por defecto en Debian 12 (excepto
&lt;i&gt;Textbringer&lt;/i&gt; que como hemos visto hay que instalarlo con RubyGems), en una terminal,
sin ningún paquete extra ni configuración personalizada y sin ningún archivo abierto.
Los resultados han sido los que podemos ver en la siguiente tabla:
&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="0" class="table-border"&gt;


&lt;colgroup&gt;
&lt;col  class="org-left"&gt;

&lt;col  class="org-right"&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" class="org-left"&gt;programa&lt;/th&gt;
&lt;th scope="col" class="org-right"&gt;consumo de memoria en kB&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;mg&lt;/td&gt;
&lt;td class="org-right"&gt;6000&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="org-left"&gt;Textbringer&lt;/td&gt;
&lt;td class="org-right"&gt;91000&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="org-left"&gt;GNU Emacs&lt;/td&gt;
&lt;td class="org-right"&gt;172312&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;
Como podemos observar Textbringer consume más de 10 veces lo que &lt;i&gt;mg&lt;/i&gt; y solo
la mitad que GNU Emacs. El hecho de que consuma más que &lt;i&gt;mg&lt;/i&gt; es lo esperado ya
que al ser un programa interpretado tiene la sobrecarga de tener que cargar el
intérprete pero, &lt;b&gt;considerando las pocas características extras que tiene
con respecto de &lt;i&gt;mg&lt;/i&gt; y las grandes carencias que tiene con respecto de GNU Emacs,
el consumo que tiene Textbringer me parece increíblemente elevado&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
Teniendo en cuenta que yo utilizo la última versión de GNU Emacs&lt;sup&gt;&lt;a id="fnr.5" class="footref" href="#fn.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt;, compilada a
mano para mi sistema y que cargándolo en una terminal, con todos los paquetes
extra y mis configuraciones personalizadas, sin tener ningún archivo abierto,
me da un consumo de memoria de 163768 kB que es menos del doble que el consumo
de Textbringer, &lt;b&gt;definitivamente no es un programa que yo vaya a utilizar ni
tampoco es un programa que pueda recomendar&lt;/b&gt;.
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://github.com/shugo/textbringer" target="_blank"&gt;Repositorio de Textbringer en GitHub&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.ruby-lang.org/es/" target="_blank"&gt;Sitio oficial del lenguaje de programación Ruby&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://rubygems.org/" target="_blank"&gt;Sitio oficial de RubyGems&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://lucio.albenga.es/web/posts/2024/mg-el-editor-de-la-familia-emacs-que-deberias-conocer.html"&gt;Publicación sobre &lt;i&gt;mg&lt;/i&gt;&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.5" class="footnum" href="#fnr.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
En realidad yo ejecuto GNU Emacs como demonio y luego uso &lt;i&gt;emacsclient&lt;/i&gt; pero
para hacer esta prueba comparativa lo he ejecutado normalmente.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Wed, 13 Nov 2024 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2024-11-13:/web/posts/2024/textbringer-un-emacs-hecho-con-ruby.html</guid><category>Emacs</category><category>emacs</category><category>software</category><category>editores</category></item><item><title>Sobre el mal uso del término propietario</title><link>https://lucio.albenga.es/web/posts/2024/sobre-el-mal-uso-del-termino-propietario.html</link><description>&lt;p&gt;
Hoy he recibido un correo electrónico de un compañero de la FSF que tuvo la amabilidad de hacerme ver que estaba utilizando
de forma incorrecta el término "propietario" ya que en determinados contextos es más adecuado usar el término "privativo".
También me pasó un enlace de un vídeo, en español, de RMS sobre el tema&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
Sin que sirva de excusa, a veces me pasa que hay algunos términos en inglés que en mi cabeza entiendo perfectamente pero que,
por los malos hábitos de cuando empecé a aprender inglés por mi cuenta, traduzco al español con una palabra similar,
que significa casi lo mismo pero que no significa exactamente lo mismo. En mi caso las palabras con las que cometo este fallo
habitualmente son "librería" por &lt;i&gt;library&lt;/i&gt; en lugar que biblioteca y "propietario" por &lt;i&gt;proprietary&lt;/i&gt;.
&lt;/p&gt;

&lt;p&gt;
Tras el correo he hecho las correcciones necesarias en los contenidos de esta web así que ahora ya no hay propietario
dónde debería ir privativo ni librerías donde deberían haber bibliotecas (aunque con este último estoy tan acostumbrado que
seguro que seguirá pasándome).
&lt;/p&gt;

&lt;p&gt;
Desde aquí quiero darle las gracias a @isf por haberse tomado el tiempo y la molestia de hacerme llegar sus comentarios.
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://video.hardlimit.com/w/tgFsM3fg5HKCdNS3NnFcS2" target="_blank"&gt;Enlace al vídeo de RMS: https://video.hardlimit.com/w/tgFsM3fg5HKCdNS3NnFcS2&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Thu, 24 Oct 2024 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2024-10-24:/web/posts/2024/sobre-el-mal-uso-del-termino-propietario.html</guid><category>Software Libre</category><category>software-libre</category><category>blog</category></item><item><title>mg El editor de la familia Emacs que deberías conocer</title><link>https://lucio.albenga.es/web/posts/2024/mg-el-editor-de-la-familia-emacs-que-deberias-conocer.html</link><description>&lt;p&gt;
&lt;i&gt;mg&lt;/i&gt; es un pequeño, gran, editor que pertenece a la familia EMACS. Está basado
en MicroEMACS y uno de sus objetivos es ser compatible con GNU Emacs (de hecho
su nombre original era MicroGnuEmacs pero se cambió a petición de Richard
Stallman).
&lt;/p&gt;

&lt;p&gt;
Es un programa que está en el dominio público y actualmente se encuentra en los
paquetes del sistema OpenBSD (dónde se mantiene), en los ports de FreeBSD, en
los ports de NetBSD, en Devuan GNU/Linux y en Debian GNU/Linux. Seguramente se
encuentre en más sistemas pero estos son los que yo he podido comprobar.
&lt;/p&gt;


&lt;div id="outline-container-orgda78be6" class="outline-2"&gt;
&lt;h2 id="orgda78be6"&gt;Características&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgda78be6"&gt;
&lt;p&gt;
Es un progama hecho en C por lo que es un editor muy rápido a la hora de
arrancar y que utiliza muy pocos recursos. Incluye &lt;i&gt;dired&lt;/i&gt; lo cual me parece muy
acertado ya que podemos gestionar el sistema de archivos desde dentro del
editor.
&lt;/p&gt;

&lt;p&gt;
A diferencia de GNU Emacs no dispone de un lenguaje para extensiones pero es
configurable y dispone de una cantidad de comandos nada desdeñables para un
editor cuyo objetivo es minimizar el consumo de recursos. Para conocer todos los
comandos y las posibilidades de configuración disponibles pudes consultar la
página de manual oficial en OpenBSD&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;div id="outline-container-org5b83f25" class="outline-2"&gt;
&lt;h2 id="org5b83f25"&gt;¿Qué uso se le puede dar a este editor?&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org5b83f25"&gt;
&lt;p&gt;
Si usas GNU Emacs la curva de aprendizaje es prácticamente cero y, al ser un
editor muy rápido y que consume muy pocos recursos, te resuelve la papeleta en
todas esas circunstancias donde la gente suele tirar de otros editores como
&lt;i&gt;nano&lt;/i&gt; o &lt;i&gt;vi&lt;/i&gt;. Piensa en &lt;i&gt;mg&lt;/i&gt; como el &lt;i&gt;nano&lt;/i&gt; para los usuarios de Emacs.
&lt;/p&gt;

&lt;p&gt;
Yo lo utilizo principalmente en equipos remotos dónde no quiero o no puedo
acceder con el modo TRAMP de GNU Emacs, como editor por defecto para otros
programas que requieren de una edición simple como por ejemplo GIT (cuando no lo
uso a través de Magit) y también lo utilizo en máquinas virtuales y equipos que
tienen muy pocos recursos por lo que usar GNU Emacs es desaconsejable,
imposible, o muy lento.
&lt;/p&gt;

&lt;p&gt;
Sea como sea, lo vayas a utilizar o no, siempre es bueno saber que está ahí para
cuando puedas necesitarlo.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://man.openbsd.org/OpenBSD-current/man1/mg.1" target="_blank"&gt;mg página de manual en OpenBSD&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Mon, 30 Sep 2024 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2024-09-30:/web/posts/2024/mg-el-editor-de-la-familia-emacs-que-deberias-conocer.html</guid><category>Emacs</category><category>emacs</category><category>software</category><category>editores</category></item><item><title>Riesgos y desventajas de usar software privativo</title><link>https://lucio.albenga.es/web/posts/2024/riesgos-y-desventajas-de-usar-software-privativo.html</link><description>&lt;p&gt;
En determinados círculos la noticia del día es que se ha colgado en internet
la última versión de WordStar (7.0d) para sistemas operativos DOS. Este programa
es un editor de textos lanzado en 1978 y desarrollado por la empresa MicroPro,
que ha pasado por varias manos en distintas rondas de adquisiciones a lo largo de los años.
La última versión publicada de este programa, para sistemas DOS, data del año 1992.
&lt;/p&gt;

&lt;p&gt;
WordStar fue muy utilizado en su época y a día de hoy sigue teniendo usuarios entre
los que cabe destacar a los escritores George R. R. Martin y Robert J. Sawyer,
que es la persona responsable de haberlo colgado en internet en un archivo zip&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;
que contiene el programa, los emuladores necesarios para poder ejecutarlo en sistemas
windows, los manuales originales escaneados, y otros materiales diversos.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;El escritor dice que ha subido el paquete porque, cito textualmente:
"&lt;i&gt;The program has never been updated since, and the company that made it has
been defunct for decades; the program is abandonware&lt;/i&gt;." (El programa nunca ha sido
actualizado desde entonces y la empresa que lo hizo lleva muerta décadas;
el programa es abandonware)&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Sin embargo el escritor se arriesga a que le caiga una demanda por infringir derechos
de autor ya que WordStar es un programa privativo cuyo copyright está en manos de alguna
entidad aunque el programa esté "abandonado"&lt;/b&gt;. De hecho no solo está vulnerando el
copyright de quien sea que tenga los derechos del programa WordStar, sino que vulnera los
de todos los demás programas y documentos que vienen incluidos en el archivo zip a excepción
de aquellos cuyos derechos de autor sean propiedad de Robert J. Sawyer y aquellos de los que
este tenga una autorización del propietario de los mismos para distribuir los programas,
manuales y demás recursos que contiene dicho archivo zip.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Probablemente nadie vaya a demandarlo por esto y por eso mismo es por lo que el escritor
ha hecho lo que ha hecho, pero la realidad es que esta acción es ilegal, es demandable
y es punible por la ley&lt;/b&gt;. De hecho supongo que Robert J. Sawyer es consciente de la infracción
porque él mismo tiene en su web una nota de copyright propia&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; para sus propios contenidos
que prohíbe expresamente almacenar o poner a disposición sus contenidos en cualquier sistema
informático destinado a ser accedido por el público o subir sus contenidos a cualquier otro
sistema informático, tablón de anuncios, red o servidor.
&lt;/p&gt;

&lt;p&gt;
Sinceramente creo que el propietario de los derechos de WordStar ni siquiera debe saber que
los tiene, estarán en algún archivo cogiendo polvo y &lt;b&gt;esta es la realidad del software privativo;
cuando deja de ser rentable el propietario se olvida del programa y los que sufren son los usuarios
que lo compraron que se quedan con un software sin soporte abocado a desaparecer&lt;/b&gt; ya que al no
disponer nadie del código fuente no se puede mantener ni portar a otras plataformas. También
es problable que dichos usuarios pierdan todos sus datos porque si estos están almacenados en
archivos con un formato privativo, cabe la posibilidad de que que no se puedan abrir en
ningún otro programa.
&lt;/p&gt;

&lt;p&gt;
Ahora tomemos como ejemplo el programa GNU Emacs&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; que es software libre, licenciado bajo
la licencia GNU GPL&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt;, y cuya documentación oficial también es libre, licenciada bajo la
licencia GNU FDL&lt;sup&gt;&lt;a id="fnr.5" class="footref" href="#fn.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt;. &lt;b&gt;Cada uno de los usuarios de Emacs gracias a las licencias libres tenemos
entre otros los siguientes derechos&lt;/b&gt;:
&lt;/p&gt;
&lt;ol class="org-ol"&gt;
&lt;li&gt;El derecho a tener el código fuente del programa y de la documentación.&lt;/li&gt;
&lt;li&gt;El derecho a modificar dicho código fuente a nuestro antojo.&lt;/li&gt;
&lt;li&gt;El derecho a redistribuir tanto el programa, como la documentación a quien nosotros
queramos bajo las mismas condiciones.&lt;/li&gt;
&lt;li&gt;El derecho a redistribuir nuestras modificaciones del programa y de la documentación
bajo las mismas condiciones.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Esto quiere decir que &lt;b&gt;si se diera el improbable caso de que Emacs se convirtiera en
"abandonware", todos los usuarios podríamos (de hecho podemos) hacer lo que ha hecho
Robert J. Sawyer de forma 100% legal sin tener que preocuparnos porque alguien vea
que estamos compartiendo su software en nuestra web y decida demandarnos por infringir
su copyright. Aún más importante es el hecho de que como todos tenemos el código fuente
y podemos mantener el software y su documentación, o pagar a alguien para que lo haga, es
prácticamente imposible que llegue a darse el caso de que el software quede abandonado y mucho
menos que no podamos acceder a nuestros datos&lt;/b&gt;.
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://sfwriter.com/ws7.htm" target="_blank"&gt;WordStar for DOS 7.0 Archive&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
No enlazo la nota de copyright citada porque enlazar a ella supondría, según el contenido
de la misma, que este artículo está sujeto al copyright de este señor, pero podéis verla
pinchando en el enlace &lt;i&gt;copyright&lt;/i&gt; en el pie de página de &lt;a href="https://sfwriter.com/" target="_blank"&gt;su web&lt;/a&gt;.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.gnu.org/savannah-checkouts/gnu/emacs/emacs.html" target="_blank"&gt;Web oficial de GNU Emacs&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank"&gt;GNU General Public License&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.5" class="footnum" href="#fnr.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.gnu.org/licenses/fdl-1.3.html" target="_blank"&gt;GNU Free Documentation License&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Tue, 06 Aug 2024 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2024-08-06:/web/posts/2024/riesgos-y-desventajas-de-usar-software-privativo.html</guid><category>Ensayos</category><category>software-libre</category><category>ensayos</category></item><item><title>Como crear y publicar tu sitio web con Emacs y Org Mode</title><link>https://lucio.albenga.es/web/posts/2024/como-crear-y-publicar-tu-sitio-web-con-emacs-y-org-mode.html</link><description>&lt;p&gt;
Hace tiempo que están bastante de moda los generadores de sites estáticos
para crear un sitio web y en general estos generadores usan Markdown como
lenguaje de marcas para generar el contenido html del sitio web.
&lt;/p&gt;

&lt;p&gt;
Muchos usuarios de Emacs utilizamos Org Mode en nuestro día a día y la verdad
es que una vez que te has acostumbrado a usarlo es una gozada de utilizar así
que ¿por qué no usarlo también para crear el contenido de nuestro sitio web?
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;En este &lt;i&gt;howto&lt;/i&gt; vamos a ver cómo utilizar el generador de sites estáticos
Pelican para crear un sitio web con documentos de Org Mode en Emacs&lt;/b&gt;. Quiero
dejar claro que no es el objetivo de este &lt;i&gt;howto&lt;/i&gt; el explicar todas las características,
funcionalidades y configuraciones posibles con Pelican, para eso te recomiendo que
utilices su documentación&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; que además es bastante buena y completa.
&lt;/p&gt;

&lt;p&gt;
Doy por hecho de que ya sabes qué es Emacs y qué es Org Mode y que además
sabes utilizar ambos. De hecho si estás leyendo esto es porque probablemente
seas usuario habitual de Org Mode.
&lt;/p&gt;

&lt;div id="outline-container-org47b60a9" class="outline-2"&gt;
&lt;h2 id="org47b60a9"&gt;Instalando Pelican y creando nuestro sitio base&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org47b60a9"&gt;
&lt;p&gt;
&lt;b&gt;Lo primero que debes hacer es descargar e instalar Pelican&lt;/b&gt;. En mi caso yo lo hago con virtualenv
(puedes consultar otros métodos de instalación en el sitio web de Pelican &lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt;), abro una terminal,
voy a la ruta donde guardo mis entornos virtuales y luego ejecuto lo siguiente:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;virtualenv&lt;span class="w"&gt; &lt;/span&gt;pelican&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="c1"&gt;# crea el entorno virtual&lt;/span&gt;
&lt;span class="nb"&gt;source&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pelican/bin/activate&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;# activa el entorno&lt;/span&gt;
pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;pelican&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="c1"&gt;# instala Pelican&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Si no tienes virtualenv en tu sistema seguro que está en el repositorio de paquetes de tu distribución
de GNU/Linux. Si usas otro sistema consulta la documentación oficial de virtualenv&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
El entorno virtual seguirá activo en esta terminal hasta que ejecutemos el comando &lt;code&gt;deactivate&lt;/code&gt;.
&lt;b&gt;No ejecutes el comando porque necesitamos el entorno para ejecutar los siguientes pasos&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
Ahora que ya tenemos Pelican instalado y funcionando seguimos los pasos del inicio rápido
para crear nuestro sitio web:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;/ruta/local/del/proyecto/nuestra-web&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="c1"&gt;# creamos una carpeta para nuestro proyecto web&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/ruta/local/del/proyecto/nuestra-web&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="c1"&gt;# entramos en la carpeta&lt;/span&gt;
pelican-quickstart&lt;span class="w"&gt;                              &lt;/span&gt;&lt;span class="c1"&gt;# ejecutamos el inicio rápido&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Durante el proceso de inicio rápido Pelican nos hará una serie de preguntas para configurar
el proyecto de nuestro sitio web. Las respuestas probablemente serán distintas para tu caso
pero, para que te hagas una idea, esto es lo que nos va a preguntar con unas posibles respuestas
de muestra:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Where&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;create&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;new&lt;span class="w"&gt; &lt;/span&gt;web&lt;span class="w"&gt; &lt;/span&gt;site?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;.&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;What&lt;span class="w"&gt; &lt;/span&gt;will&lt;span class="w"&gt; &lt;/span&gt;be&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;title&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;this&lt;span class="w"&gt; &lt;/span&gt;web&lt;span class="w"&gt; &lt;/span&gt;site?&lt;span class="w"&gt; &lt;/span&gt;Mi&lt;span class="w"&gt; &lt;/span&gt;Sitio&lt;span class="w"&gt; &lt;/span&gt;Web
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Who&lt;span class="w"&gt; &lt;/span&gt;will&lt;span class="w"&gt; &lt;/span&gt;be&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;author&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;this&lt;span class="w"&gt; &lt;/span&gt;web&lt;span class="w"&gt; &lt;/span&gt;site?&lt;span class="w"&gt; &lt;/span&gt;yomismo
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;What&lt;span class="w"&gt; &lt;/span&gt;will&lt;span class="w"&gt; &lt;/span&gt;be&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;default&lt;span class="w"&gt; &lt;/span&gt;language&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;this&lt;span class="w"&gt; &lt;/span&gt;web&lt;span class="w"&gt; &lt;/span&gt;site?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;es&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Do&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;specify&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;URL&lt;span class="w"&gt; &lt;/span&gt;prefix?&lt;span class="w"&gt; &lt;/span&gt;e.g.,&lt;span class="w"&gt; &lt;/span&gt;https://example.com&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;Y/n&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Y
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;What&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;URL&lt;span class="w"&gt; &lt;/span&gt;prefix?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;see&lt;span class="w"&gt; &lt;/span&gt;above&lt;span class="w"&gt; &lt;/span&gt;example&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;no&lt;span class="w"&gt; &lt;/span&gt;trailing&lt;span class="w"&gt; &lt;/span&gt;slash&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;https://misitio.com
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Do&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;article&lt;span class="w"&gt; &lt;/span&gt;pagination?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;Y/n&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Y
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;How&lt;span class="w"&gt; &lt;/span&gt;many&lt;span class="w"&gt; &lt;/span&gt;articles&lt;span class="w"&gt; &lt;/span&gt;per&lt;span class="w"&gt; &lt;/span&gt;page&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;What&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;zone?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;Europe/Rome&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Do&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;generate&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;tasks.py/Makefile&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;automate&lt;span class="w"&gt; &lt;/span&gt;generation&lt;span class="w"&gt; &lt;/span&gt;and&lt;span class="w"&gt; &lt;/span&gt;publishing?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;Y/n&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Y
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Do&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;upload&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;website&lt;span class="w"&gt; &lt;/span&gt;using&lt;span class="w"&gt; &lt;/span&gt;FTP?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;N
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Do&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;upload&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;website&lt;span class="w"&gt; &lt;/span&gt;using&lt;span class="w"&gt; &lt;/span&gt;SSH?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;y
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;What&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;hostname&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;SSH&lt;span class="w"&gt; &lt;/span&gt;server?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;localhost&lt;span class="o"&gt;]&lt;/span&gt;
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;What&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;port&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;SSH&lt;span class="w"&gt; &lt;/span&gt;server?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="m"&gt;22&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;What&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;username&lt;span class="w"&gt; &lt;/span&gt;on&lt;span class="w"&gt; &lt;/span&gt;that&lt;span class="w"&gt; &lt;/span&gt;server?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;root&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;user
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Where&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;put&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;web&lt;span class="w"&gt; &lt;/span&gt;site&lt;span class="w"&gt; &lt;/span&gt;on&lt;span class="w"&gt; &lt;/span&gt;that&lt;span class="w"&gt; &lt;/span&gt;server?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;/var/www&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Do&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;upload&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;website&lt;span class="w"&gt; &lt;/span&gt;using&lt;span class="w"&gt; &lt;/span&gt;Dropbox?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;N
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Do&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;upload&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;website&lt;span class="w"&gt; &lt;/span&gt;using&lt;span class="w"&gt; &lt;/span&gt;S3?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;N
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Do&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;upload&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;website&lt;span class="w"&gt; &lt;/span&gt;using&lt;span class="w"&gt; &lt;/span&gt;Rackspace&lt;span class="w"&gt; &lt;/span&gt;Cloud&lt;span class="w"&gt; &lt;/span&gt;Files?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;N
&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Do&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;want&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;upload&lt;span class="w"&gt; &lt;/span&gt;your&lt;span class="w"&gt; &lt;/span&gt;website&lt;span class="w"&gt; &lt;/span&gt;using&lt;span class="w"&gt; &lt;/span&gt;GitHub&lt;span class="w"&gt; &lt;/span&gt;Pages?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;N
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
De momento podemos ejecutar el comando &lt;code&gt;deactivate&lt;/code&gt; y salir del entorno virtual
ya que tenemos varias cosas que hacer antes de que nos haga falta de nuevo.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org92b9e8b" class="outline-2"&gt;
&lt;h2 id="org92b9e8b"&gt;Configurando Pelican para Org Mode&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org92b9e8b"&gt;
&lt;p&gt;
&lt;b&gt;Para nuestro objetivo necesitamos el plugin &lt;i&gt;org_reader&lt;/i&gt;&lt;/b&gt;&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt;, así que vamos a obtener
los plugins de Pelican. La forma más rápida de obtener los plugins es descargarlos
desde su repositorio en GitHub&lt;sup&gt;&lt;a id="fnr.5" class="footref" href="#fn.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; y ponerlos en la carpeta que queramos. Ya le
indicaremos a Pelican la ruta a esa carpeta en el siguiente paso. Para ello
vamos a la carpeta dónde queramos descargar los plugins y ejecutamos el siguiente
comando:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;--recursive&lt;span class="w"&gt; &lt;/span&gt;https://github.com/getpelican/pelican-plugins
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Una vez que tenemos los plugins, procedemos a configurar Pelican para que use el
plugin &lt;i&gt;org_reader&lt;/i&gt; que es la pieza fundamental para generar nuestro sitio web a partir
de archivos *.org de Org Mode.
&lt;/p&gt;

&lt;p&gt;
Abrimos el archivo &lt;b&gt;pelicanconf.py&lt;/b&gt; y le añadimos lo siguiente justo al principio:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt; &lt;span class="c1"&gt;# esta línea ya está en el archivo&lt;/span&gt;

&lt;span class="n"&gt;PLUGIN_PATHS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/ruta/a/la/carpeta/donde/están/los/plugins/de/pelican&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;PLUGINS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;org_reader&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
En el caso de que tengamos una instalación de Emacs en una ruta distinta a
las habituales también añadimos la siguiente línea:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;ORG_READER_EMACS_LOCATION&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/ruta/al/ejecutable/de/emacs&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-org1f9a417" class="outline-3"&gt;
&lt;h3 id="org1f9a417"&gt;Añadiendo coloreado de sintaxis&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org1f9a417"&gt;
&lt;p&gt;
&lt;b&gt;Para mi sitio web me faltaba una cosa importante que era añadir el coloreado
de sintaxis para las publicaciones que, como esta, contienen código fuente&lt;/b&gt;. Así
que tras buscar di con el sitio web de Anten Linevich&lt;sup&gt;&lt;a id="fnr.6" class="footref" href="#fn.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt;
donde solucionaba el problema creando un &lt;i&gt;export backend&lt;/i&gt; personalizado.
&lt;/p&gt;

&lt;p&gt;
Para hacer esto mismo volvemos a abrir nuestro archivo &lt;b&gt;pelicanconf.py&lt;/b&gt; y añadimos lo siguiente:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;ORG_READER_EMACS_SETTINGS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;abspath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;lisp/pelican-html.el&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ORG_READER_BACKEND&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&amp;#39;pelican-html&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
&lt;b&gt;Ahora vamos a crear nuestro backend personalizado pelican-html siguiendo estos pasos&lt;/b&gt;:
&lt;/p&gt;

&lt;ol class="org-ol"&gt;
&lt;li&gt;Creamos en el raíz de nuestro proyecto web la carpeta &lt;b&gt;lisp/&lt;/b&gt;. Podemos llamarla como queramos pero debe coincidir
con lo que hemos definido en la constante ORG_READER_EMACS_SETTINGS de arriba.&lt;/li&gt;

&lt;li&gt;&lt;p&gt;
Dentro de esa carpeta creamos el archivo &lt;b&gt;pelican-html.el&lt;/b&gt; y dentro del mismo ponemos lo siguiente:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="c1"&gt;;; Este código es (c) 2017 Anten Linevich y está licenciado bajo &lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="c1"&gt;;; Creative Commons Attribution 4.0 Internacional License&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="c1"&gt;;; https://linevi.ch/en/org-pygments.html&lt;/span&gt;

&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;org&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;ox&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;ox-html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-export-define-derived-backend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;pelican-html&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;html&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nb"&gt;:translate-alist&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;src-block&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;pelican/pygments-org-html-code&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;example-block&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;pelican/pygments-org-html-code&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;

&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;defvar&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;pygments-path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pygmentize&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;pelican/pygments-org-html-code&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;code&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;contents&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;info&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Process code block with Pygments See http://pygments.org/ for details&amp;quot;&lt;/span&gt;

&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;;; Generate temp file path by hashing current time and date.&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;setq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;temp-source-file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;/tmp/pygmentize-%s.txt&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;md5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;current-time-string&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;;; Writing temp file&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;with-temp-file&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;temp-source-file&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;insert&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-element-property&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;code&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;;; Processing&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;shell-command-to-string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;%s -l \&amp;quot;%s\&amp;quot; -f html %s&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;                                      &lt;/span&gt;&lt;span class="nv"&gt;pygments-path&lt;/span&gt;
&lt;span class="w"&gt;                                      &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-element-property&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:language&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;code&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;                                          &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;                                      &lt;/span&gt;&lt;span class="nv"&gt;temp-source-file&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;

&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;provide&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;pelican-html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;

&lt;li&gt;Guardamos el archivo y ya lo tenemos todo listo para que nos haga el coloreado de sintaxis.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org5e8b8d0" class="outline-2"&gt;
&lt;h2 id="org5e8b8d0"&gt;Escribiendo nuestra primera publicación&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org5e8b8d0"&gt;
&lt;p&gt;
Vamos a escribir nuestra primera publicación para ver una plantilla básica que nos será
muy útil a la hora de crear nuevas publicaciones.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Hay un montón de propiedades, metadatos en la jerga de Pelican, que podemos usar para "configurar"
una publicación. Aquí solamente aparecen las que yo considero más habituales y/o importantes. Para verlas
todas puedes ir a la documentación de Pelican y del plugin &lt;i&gt;org_reader&lt;/i&gt;&lt;/b&gt; (ver notas al pie).
&lt;/p&gt;

&lt;p&gt;
Dentro de la carpeta &lt;b&gt;content/&lt;/b&gt; de nuestro sitio Pelican vamos a crear un archivo &lt;b&gt;hola-mundo.org&lt;/b&gt;
con el siguiente contenido:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nn"&gt;#+TITLE:&lt;/span&gt; ¡Hola Mundo!
&lt;span class="nn"&gt;#+DATE:&lt;/span&gt; 2024-05-24
&lt;span class="nn"&gt;#+AUTHOR:&lt;/span&gt; admin
&lt;span class="nn"&gt;#+LANGUAGE:&lt;/span&gt; es
&lt;span class="nn"&gt;#+CATEGORY:&lt;/span&gt; Programación
&lt;span class="nn"&gt;#+PROPERTY:&lt;/span&gt; LANGUAGE es
&lt;span class="nn"&gt;#+PROPERTY:&lt;/span&gt; SLUG hola-mundo
&lt;span class="nn"&gt;#+PROPERTY:&lt;/span&gt; SUMMARY Este es el resumen de la publicación
&lt;span class="nn"&gt;#+PROPERTY:&lt;/span&gt; SUMMARY+ que puede ir así en varias líneas
&lt;span class="nn"&gt;#+PROPERTY:&lt;/span&gt; TAGS programación, c

A continuación vamos a ver el código fuente del programa Hola Mundo en C.
&lt;span class="ow"&gt;#+BEGIN_SRC c&lt;/span&gt;
  #include &amp;lt;stdio.h&amp;gt;
  int main(void)
  {
          printf(&amp;quot;¡Hola Mundo!&amp;quot;);
          return 0;
  }
&lt;span class="ow"&gt;#+END_SRC&lt;/span&gt;


#+BEGIN_EXPORT html
&lt;span class="ld"&gt;&amp;lt;hr&amp;gt;&lt;/span&gt;
&lt;span class="ld"&gt;&amp;lt;center&amp;gt;&amp;lt;small&amp;gt;&lt;/span&gt;
Y esto es un bloque HTML a modo de muestra.
&lt;span class="ld"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;
&lt;span class="ld"&gt;&amp;lt;a href=&amp;quot;https://creativecommons.org/licenses/by-nd/4.0/legalcode.es&amp;quot;&amp;gt;&lt;/span&gt;Licencia Creative Commons Atribución-SinDerivadas 4.0 Internacional (CC BY-ND 4.0)&lt;span class="ld"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="ld"&gt;&amp;lt;/p&amp;gt;&amp;lt;/small&amp;gt;&lt;/span&gt;
&lt;span class="ld"&gt;&amp;lt;/center&amp;gt;&lt;/span&gt;
&lt;span class="ld"&gt;&amp;lt;hr&amp;gt;&lt;/span&gt;
#+END_EXPORT
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
A continuación una breve descripción de las propiedades/atributos del documento:
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;&lt;b&gt;#+TITLE: ¡Hola Mundo!&lt;/b&gt; es la única propiedad obligatoria.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;#+DATE: 2024-05-24&lt;/b&gt; la fecha del documento puede ser una fecha en formato iso (como en el ejemplo) o un timestamp de Org Mode.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;#+AUTHOR: admin&lt;/b&gt; el nombre del autor&lt;/li&gt;
&lt;li&gt;&lt;b&gt;#+LANGUAGE: es&lt;/b&gt; el idioma en el que está el documento para Org Mode&lt;/li&gt;
&lt;li&gt;&lt;b&gt;#+CATEGORY: Programación&lt;/b&gt; categoría de la publicación&lt;/li&gt;
&lt;li&gt;&lt;b&gt;#+PROPERTY: LANGUAGE es&lt;/b&gt; el idioma en el que está el documento para Pelican&lt;/li&gt;
&lt;li&gt;&lt;b&gt;#+PROPERTY: SLUG hola-mundo&lt;/b&gt; si no se especifica es el nombre del archivo *.org de la publicación&lt;/li&gt;
&lt;li&gt;&lt;b&gt;#+PROPERTY: SUMMARY&lt;/b&gt; resumen de la publicación&lt;/li&gt;
&lt;li&gt;&lt;b&gt;#+PROPERTY: TAGS programación, c&lt;/b&gt; las etiquetas que queramos ponerle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;b&gt;Aparte de las propiedades que se ven en el ejemplo hay una que a mi me parece fundamental,
la de estado, #+PROPERTY: STATUS&lt;/b&gt;. Esta propiedad puede tener los siguientes valores:
&lt;/p&gt;
&lt;ol class="org-ol"&gt;
&lt;li&gt;&lt;b&gt;published (publicado)&lt;/b&gt;: es el estado por defecto aunque no lo pongamos.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;draft (borrador)&lt;/b&gt;: las publicaciones se guardan en la carpeta &lt;b&gt;drafts/&lt;/b&gt; del sitio web y no están enlazadas en ningún sitio.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;hidden (oculto)&lt;/b&gt;: las publicaciones no aparecen enlazadas en ningún sitio y para acceder a ellas hay que conocer el enlace exacto.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Por lo tanto si queremos tener una publicación oculta añadiríamos esta etiqueta:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nn"&gt;#+PROPERTY:&lt;/span&gt; STATUS hidden
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org9c1698d" class="outline-2"&gt;
&lt;h2 id="org9c1698d"&gt;Previsualizando y publicando nuestro sitio web&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org9c1698d"&gt;
&lt;p&gt;
Ha llegado la hora de la verdad, de ver los resultados de todo el trabajo que hemos hecho,
comprobar si todo funciona y ver como generar y publicar nuestro nuevo sitio web.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Desde la carpeta de nuestro proyecto web hacemos lo siguiente&lt;/b&gt;:
&lt;/p&gt;

&lt;ol class="org-ol"&gt;
&lt;li&gt;&lt;p&gt;
Volvemos a activar el entorno virtual:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nb"&gt;source&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/ruta/a/nuestro/virtualenv/pelican/bin/activate
&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;
Ponemos en marcha la previsualización del sitio:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;devserver
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Si nos fijamos, el comando anterior nos devolverá, entre otras cosas, lo siguiente:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;Serving&lt;span class="w"&gt; &lt;/span&gt;site&lt;span class="w"&gt; &lt;/span&gt;at:&lt;span class="w"&gt; &lt;/span&gt;http://127.0.0.1:8000&lt;span class="w"&gt; &lt;/span&gt;-&lt;span class="w"&gt; &lt;/span&gt;Tap&lt;span class="w"&gt; &lt;/span&gt;CTRL-C&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;stop
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;b&gt;Así que copiamos y pegamos la url&lt;/b&gt; &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt; &lt;b&gt;en nuestro navegador
favorito para poder ver nuestra web&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
Este modo, &lt;i&gt;devserver&lt;/i&gt;, regenera automáticamente nuestro sitio web con cada cambio
que hacemos en nuestro archivo *.org por lo que siempre podremos ver los cambios
recargando nuestro navegador.
&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;
Salimos del modo &lt;i&gt;devserver&lt;/i&gt; pulsando las teclas &lt;b&gt;CTRL-C&lt;/b&gt; y si queremos publicar
nuestro sitio web ejecutamos:
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;rsync_upload
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
Este comando volverá a generar todo el sitio y lo subirá a dónde le hayamos indicado
cuando hicimos la configuración inicial en el inicio rápido. &lt;b&gt;Si por cualquier motivo
no funciona o no existe esta opción, abre el archivo &lt;i&gt;Makefile&lt;/i&gt; en el raíz de tu
proyecto web y al final del mismo deberían de aparecer todas las opciones disponibles
para subir tu sitio web al hosting&lt;/b&gt; (ssh_upload, sftp_upload, etc.).
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orge45bea4" class="outline-2"&gt;
&lt;h2 id="orge45bea4"&gt;Siguientes pasos&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orge45bea4"&gt;
&lt;p&gt;
En este &lt;i&gt;howto&lt;/i&gt; hemos dado los primeros pasos para crear un sitio web con Pelican y
gestionar sus contenidos escribiéndolos con Emacs y Org Mode. &lt;b&gt;Ahora es el momento de
profundizar con Pelican para crear tu sitio web a tu gusto así que utiliza la documentación
de Pelican y busca un tema&lt;sup&gt;&lt;a id="fnr.7" class="footref" href="#fn.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt; que te guste para tu web&lt;/b&gt;, o crea el tuyo propio.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org687354c" class="outline-2"&gt;
&lt;h2 id="org687354c"&gt;Agradecimientos&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org687354c"&gt;
&lt;p&gt;
Quiero darle las gracias a BxCx del canal #emacs-es en Libera.chat&lt;sup&gt;&lt;a id="fnr.8" class="footref" href="#fn.8" role="doc-backlink"&gt;8&lt;/a&gt;&lt;/sup&gt; ya que la idea de
este &lt;i&gt;howto&lt;/i&gt; surgió porque estando en el citado canal empezó a hablar del tema de cómo
crear un sitio estático con Emacs y me estuvo preguntando sobre cómo estaba hecho este sitio.
&lt;/p&gt;

&lt;p&gt;
También quiero darle las gracias a Anten Linevich porque sin su publicación no
habría dado con la tecla para poner el coloreado de sintaxis.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org7809dd5" class="outline-2"&gt;
&lt;h2 id="org7809dd5"&gt;Copyright&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org7809dd5"&gt;
&lt;p&gt;
Este artículo es Copyright &amp;copy; 2024 Lucio F. Albenga y está bajo
&lt;a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank"&gt;Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0)&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
El código del ejemplo/archivo &lt;i&gt;pelican-html.el&lt;/i&gt; es Copyright &amp;copy; 2017-2024 &lt;a href="https://linevi.ch/en/" target="_blank"&gt;Anten Linevich&lt;/a&gt;
y está bajo &lt;a href="https://creativecommons.org/licenses/by/4.0/" target="_blank"&gt;Licencia Creative Commons Attribution 4.0 Internacional License&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://docs.getpelican.com/en/latest/index.html" target="_blank"&gt;Documentación oficial de Pelican&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://docs.getpelican.com/en/latest/install.html" target="_blank"&gt;Documentación oficial de Pelican: Instalación&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://virtualenv.pypa.io/en/latest/installation.html" target="_blank"&gt;Documentación oficial de Virtualenv&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://github.com/getpelican/pelican-plugins/tree/master/org_reader" target="_blank"&gt;Plugin Org Reader&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.5" class="footnum" href="#fnr.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://github.com/getpelican/pelican-plugins" target="_blank"&gt;Plugins de Pelican en GitHub&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.6" class="footnum" href="#fnr.6" role="doc-backlink"&gt;6&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://linevi.ch/en/category/emacs.html" target="_blank"&gt;Sitio web de Anten Linevich&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.7" class="footnum" href="#fnr.7" role="doc-backlink"&gt;7&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://github.com/getpelican/pelican-themes" target="_blank"&gt;Pelican Themes&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.8" class="footnum" href="#fnr.8" role="doc-backlink"&gt;8&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://libera.chat/" target="_blank"&gt;Libera.chat&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Fri, 05 Jul 2024 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2024-07-05:/web/posts/2024/como-crear-y-publicar-tu-sitio-web-con-emacs-y-org-mode.html</guid><category>Emacs</category><category>howto</category><category>emacs</category><category>orgmode</category><category>pelican</category><category>blog</category><category>software-libre</category></item><item><title>Inaugurando versión en inglés</title><link>https://lucio.albenga.es/web/posts/2024/inaugurando-version-en-ingles.html</link><description>&lt;p&gt;
Hoy he puesto en marcha una &lt;a href="https://lucio.albenga.es/web-en/"&gt;versión en inglés de esta web&lt;/a&gt;.
El motivo principal de la versión en inglés es la de tener un lugar
"internacional" donde compartir mis proyectos para un público más
amplio que no sea hispanoparlante.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;En ningún caso pretendo mantener una traducción 1-1 al inglés&lt;/b&gt;,
eso lo intenté en el pasado y nunca salió bien, simplemente no me gusta
traducirme a mí mismo.
&lt;/p&gt;

&lt;p&gt;
Las expectativas ahora mismo son que esta versión en español siga siendo
el sitio principal por lo que tendrá más contenido que la versión en inglés
aunque es probable que en la versión en inglés haya publicaciones que no aparezcan
aquí y viceversa, del mismo modo que en &lt;a href="https://hostux.social/@lfa" target="_blank"&gt;Mastodon&lt;/a&gt; hay publicaciones en uno de los
dos idiomas y a veces hay publicaciones 1-1.
&lt;/p&gt;

&lt;p&gt;
Esto es todo, gracias por leerme.
&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Thu, 16 May 2024 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2024-05-16:/web/posts/2024/inaugurando-version-en-ingles.html</guid><category>Blog</category><category>blog</category></item><item><title>Libre Planet 2024: cultivando la comunidad</title><link>https://lucio.albenga.es/web/posts/2024/libreplanet-2024-cultivando-la-comunidad.html</link><description>&lt;p&gt;
Durante el primer fin de semana de este mes se celebró la Libre Planet 2024&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt;,
el evento de referencia sobre Software Libre organizado por la FSF&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt;. Este evento
se realiza tanto de forma presencial como virtual por lo que no es necesario
viajar para participar y disfrutarlo.
&lt;/p&gt;

&lt;p&gt;
Yo no suelo participar más allá de ver la charla inaugural, que por cierto este
año me he perdido, y la charla de RMS&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt;, que este año  fue una ronda de preguntas y
respuestas que no estaba en el programa y que casi me pierdo, pero gracias a que avisaron
por el IRC llegué a tiempo. Por lo demás lo que suelo hacer es ver, cuando me viene bien,
los vídeos del evento una vez que los publican.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Sin embargo este año sí que decidí asistir de forma online al evento y además
el tema de este año era &lt;i&gt;Cultivating Community&lt;/i&gt; (cultivando la comunidad) por
lo que incluso podemos decir que era una señal para participar ;-)&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;
Había ponencias para todos los gustos: técnicas, filosóficas, &lt;i&gt;workshops&lt;/i&gt;, etc.
y es imposible participar en todas porque se realizan de forma simultánea en 3 salas diferentes:
Jupiter, Saturn y Neptune (esta última solo online), así que tienes que escoger y dejar
para después, cuando se publiquen los vídeos, el resto de ponencias que te interesan.
&lt;b&gt;Hubo ponencias estupendas&lt;/b&gt; y otras me decepcionaron un poco ya que esperaba otra cosa,
pero es lógico no a todos nos gusta todo y a veces una descripción no es suficiente
para hacerte una idea de los derroteros que va a tomar una ponencia.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Una de las cosas que más me gustaron de participar fue que en todo momento puedes
interactuar desde el IRC&lt;/b&gt;&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; y hacer preguntas que después los organizadores pasan al
ponente para que conteste y, en este proceso, también puedes comentar con el resto de la
gente que está en el chat. Esta interacción me sirvió para hacer algunas amistades. Otra de
las cosas que disfruté bastante fue la reunión para miembros de la FSF y ahí
también hice algunos amigos. Estuvo tan interesante que a todos se nos hizo
muy corta.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Para mí  estar ahí con un montón de personas que, a pesar de las muchas diferencias
que pueden tener, comparten unos mismos ideales, puntos de vista e inquietudes ha sido
estupendo, he hecho alguna amistad nueva y, en resumen, es una experiencia que le recomiendo
a cualquiera que tenga interés en el Software Libre&lt;/b&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;El evento iba de cultivar la comunidad y en mi opinión ha sido así al 100%&lt;/b&gt;. Me he
sentido muy bien integrado y desde aquí quiero dar las gracias, otra vez, a la organización
del evento. El año que viene podéis apuntaros y participar vosotros para vivir una
experiencia que espero que os resulte igual de agradable que a mi.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;&lt;i&gt;Happy hacking&lt;/i&gt;.&lt;/b&gt;
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://libreplanet.org/2024/" target="_blank"&gt;Web de Libre Planet 2024&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.fsf.org" target="_blank"&gt;Web de la Free Software Foundation&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://stallman.org/" target="_blank"&gt;Web de Richard M. Stallman&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://libera.chat/" target="_blank"&gt;Libera.chat&lt;/a&gt; es la red IRC donde se alojan los canales de la FSF: #fsf #fsf-members #gnu #gnu-es
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Wed, 15 May 2024 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2024-05-15:/web/posts/2024/libreplanet-2024-cultivando-la-comunidad.html</guid><category>Software Libre</category><category>eventos</category><category>fsf</category><category>libreplanet</category></item><item><title>Ya disponibles las licencias de la FSF en español</title><link>https://lucio.albenga.es/web/posts/2023/ya-disponibles-las-licencias-de-la-fsf.html</link><description>&lt;p&gt;
Para facilitar e impulsar la adopción de las licencias de la FSF&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; por parte de otros
programadores y autores de documentación técnica he traducido al español las
principales licencias de la FSF.
&lt;/p&gt;

&lt;p&gt;
Estas traducciones no son oficiales por lo que a la hora de utilizar la licencia
correspondiente en nuestros proyectos debemos añadir la versión original en inglés de
la FSF. Sin embargo, al ser un documento legal, creo que estas traducciones resultarán
útiles para comprender en qué condiciones liberamos nuestros proyectos de software libre.
&lt;/p&gt;

&lt;p&gt;
En mi caso por ejemplo la elección es sencilla. Yo uso siempre la AGPL&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; ya que hoy en día
es muy fácil que nuestro software acabe formando parte de algún backend en algún servicio
en internet. Con la AGPL nos aseguramos de que siempre se redistribuya el código fuente
con los cambios que haya podido hacer quien sea que lo esté utilizando y, más importante
aún, nos aseguramos (al menos legalmente) de que nadie utilice el trabajo que tan
alegremente donamos a la sociedad para crear un proyecto privativo.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Las traducciones están disponibles en el proyecto: &lt;a href="../../projects/traduccion-de-licencias-de-la-fsf.html"&gt;Traducción de Licencias de la FSF al Español&lt;/a&gt;&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/b&gt;
&lt;b&gt;en esta web.&lt;/b&gt;
&lt;/p&gt;

&lt;p&gt;
Espero que te resulten útiles y que, si no lo estás haciendo ya, te animes a empezar a
usar estas licencias para tus proyectos de software libre. Cualquier corrección o comentario
ya sabes que puedes hacerlo por correo electrónico&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt;
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://www.gnu.org/licenses/license-list.html#DocumentationLicenses" target="_blank"&gt;Página oficial de las licencias de GNU&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="../../projects/licencias-fsf/agpl-3.0-es.html"&gt;AGPL en español&lt;/a&gt; / &lt;a href="https://www.gnu.org/licenses/agpl-3.0.html" target="_blank"&gt;AGPL original en inglés&lt;/a&gt; 
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="../../projects/traduccion-de-licencias-de-la-fsf.html"&gt;Traducción de Licencias de la FSF al Español&lt;/a&gt; 
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
Ver apartado Contacto en la sección &lt;a href="../../pages/sobre-mi.html"&gt;Acerca de&lt;/a&gt; de esta web.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Thu, 12 Oct 2023 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2023-10-12:/web/posts/2023/ya-disponibles-las-licencias-de-la-fsf.html</guid><category>Software Libre</category><category>proyectos</category><category>documentos</category><category>licencias</category><category>traducciones</category><category>fsf</category></item><item><title>Quasijarus2Gzip, cómo se empieza un programa por casualidad</title><link>https://lucio.albenga.es/web/posts/2023/quasijarus2gzip-como-se-empieza-un-programa-por-casualidad.html</link><description>&lt;p&gt;
Resulta que recientemente cayó en mis manos un viejo archivo *.tar que
contenía código fuente de diferentes programas de Unix y entre estos
programas había varios, como una antiquísima versión de sendmail, que
me picaron la curiosidad. Cuando fuí a descomprimir uno de los
archivos me encontré con que no podía.
&lt;/p&gt;

&lt;p&gt;
Anteriormente ya había descomprimido archivos *.tar.Z con gzip así que
lo siguiente que hice fue ver qué era exactamente ese archivo
*.tar.Z. Para ello utilicé el comando &lt;code&gt;file&lt;/code&gt; y me encontré conque era
un archivo del tipo Quasijarus Strong Compression Data. Como no sabía
lo que era, seguí investigando.
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Ahora había que averiguar qué era exactamente el formato Quasijarus
Strong Compression Data.&lt;/b&gt; Primero encontré una breve descripción del
formato&lt;sup&gt;&lt;a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; que contenía enlaces a la web del proyecto Quasijarus.
Estos enlaces ya no están operativos pero gracias a archive.org&lt;sup&gt;&lt;a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt;
pude repescar la web del proyecto Quasijarus&lt;sup&gt;&lt;a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; y concretamente la
información sobre el formato de compresión&lt;sup&gt;&lt;a id="fnr.4" class="footref" href="#fn.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
Tras leerlo todo, lo más importante que averigüé fue que:
&lt;/p&gt;
&lt;ol class="org-ol"&gt;
&lt;li&gt;Este formato de archivo está basado en Gzip y que ambos
formatos solamente difieren en sus cabeceras.&lt;/li&gt;
&lt;li&gt;La cabecera del formato Quasijarus Strong Compression Data
solamente está compuesta por los bytes 0x1f 0xa1 (número
mágico).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
&lt;b&gt;Así que decidí hacerme un conversor de Quasijarus Strong Compression
Data a Gzip ya que no podía ser muy complicado y además iba a
proporcionarme la excusa de echar un rato divertido&lt;/b&gt; ;p.
&lt;/p&gt;

&lt;p&gt;
El siguiente paso fue averiguar el formato de la cabecera del formato
Gzip y según su especificación&lt;sup&gt;&lt;a id="fnr.5" class="footref" href="#fn.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt;, este tiene una cabecera de 10
bytes repartidos del siguiente modo:
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;2 bytes que son el número mágico 0x1f 0x8b&lt;/li&gt;
&lt;li&gt;1 byte que indica el algoritmo de compresión (08 para DEFLATE).&lt;/li&gt;
&lt;li&gt;1 byte que son banderas de cabeceras que, para el caso que nos
ocupa, se podían dejar a 0.&lt;/li&gt;
&lt;li&gt;4 bytes para el timestamp del archivo que también se puede dejar
a 0 porque no es obligatorio indicarlo.&lt;/li&gt;
&lt;li&gt;1 byte para las banderas de compresión que también se puede
dejar sin asignar.&lt;/li&gt;
&lt;li&gt;1 byte para el identificador del sistema operativo (3 para Unix)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;b&gt;Con toda la información clara me hice el conversor de Quasijarus
Strong Compression a Gzip y puedes descargártelo &lt;a href="../../projects/quasijarus-2-gzip.html"&gt;aquí&lt;/a&gt;.&lt;/b&gt;
&lt;/p&gt;
&lt;div id="footnotes"&gt;
&lt;h2 class="footnotes"&gt;Notas al pie de p&amp;aacute;gina: &lt;/h2&gt;
&lt;div id="text-footnotes"&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="http://justsolve.archiveteam.org/wiki/Quasijarus_Strong_Compression" target="_blank"&gt;Quasijarus Strong Compression&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://web.archive.org/%20" target="_blank"&gt;Wayback machine en archive.org&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://web.archive.org/web/20210918003410/https://ifctfvax.superglobalmegacorp.com/" target="_blank"&gt;Quasijarus Project&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.4" class="footnum" href="#fnr.4" role="doc-backlink"&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://web.archive.org/web/20210816085748/https://ifctfvax.superglobalmegacorp.com/compress.html" target="_blank"&gt;Quasijarus Compress&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="footdef"&gt;&lt;sup&gt;&lt;a id="fn.5" class="footnum" href="#fnr.5" role="doc-backlink"&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;div class="footpara" role="doc-footnote"&gt;&lt;p class="footpara"&gt;
&lt;a href="https://datatracker.ietf.org/doc/html/rfc1952" target="_blank"&gt;RFC1952&lt;/a&gt;
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Sat, 19 Aug 2023 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2023-08-19:/web/posts/2023/quasijarus2gzip-como-se-empieza-un-programa-por-casualidad.html</guid><category>Programación</category><category>programación</category><category>proyectos</category><category>C</category></item><item><title>¡Hola Mundo!</title><link>https://lucio.albenga.es/web/posts/2023/hola-mundo.html</link><description>&lt;p&gt;
Cuando uno aprende un nuevo lenguaje de programación es costumbre hacer el programa &lt;i&gt;¡Hola Mundo!&lt;/i&gt;.
Mi primer lenguaje de programación fue &lt;i&gt;BASIC&lt;/i&gt; y no hice el ¡Hola Mundo!, hice un programa que mostraba
en pantalla mi nombre.
&lt;/p&gt;

&lt;p&gt;
Mi primer &lt;i&gt;¡Hola Mundo!&lt;/i&gt;, al igual que el de muchos otros programadores, fue el del libro: &lt;i&gt;El Lenguaje de Programación C&lt;/i&gt;,
también conocido como K&amp;amp;R por las iniciales de los apellidos de sus autores: &lt;i&gt;Brian W. Kernigham&lt;/i&gt; y &lt;i&gt;Dennis M. Ritchie&lt;/i&gt;.
&lt;/p&gt;

&lt;p&gt;
Así que como primera publicación me ha parecido adecuado seguir la tradición y empezar publicando un &lt;i&gt;¡Hola Mundo!&lt;/i&gt; y nada mejor que
publicar un hola mundo en C.
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;¡Hola Mundo!&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">lfa</dc:creator><pubDate>Fri, 31 Mar 2023 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:lucio.albenga.es,2023-03-31:/web/posts/2023/hola-mundo.html</guid><category>Programación</category><category>programación</category><category>C</category></item></channel></rss>