Satin Doll

jul 13, 2026 19:35343 visitas

Después de pasar los últimos seis meses entre algoritmos de inteligencia artificial, redes, sistemas operativos y demás mecanismos empeñados en obedecer estrictamente a la lógica, he decidido volver a entregarme voluntariamente a un lenguaje en el que las reglas existen, sí, pero únicamente para que alguien con suficiente talento las doble sin que se rompan. El primer estándar que ha caído sobre mi atril ha sido Satin Doll. Y apenas veinticuatro horas después de convertirme en estudiante de jazz, ya me he atrevido a grabarlo. Una decisión que probablemente cualquier profesor sensato habría desaconsejado, pero que encaja bastante bien con mi conocida faceta de aprender en público y equivocarme con las luces encendidas.

No es una elección cualquiera. Satin Doll -compuesta por Duke Ellington y Billy Strayhorn, con letra posterior de Johnny Mercer- pertenece a esa reducida aristocracia de estándares que parecen haber existido siempre. Es una melodía elegante, sofisticada y engañosamente amable: sonríe mientras obliga a pensar varios movimientos por delante. Bajo su apariencia de conversación relajada esconde una lección permanente sobre armonía, ritmo y buen gusto. No es una pieza que pretenda impresionar. En su lugar, prefiere enseñar que el jazz no consiste en tocar muchas notas, sino en encontrar exactamente las que merecen ser escuchadas.

La grabación que acompaña esta entrada está hecha exactamente como ha salido de mis manos. Sin trampa ni cartón. Sin preparación previa. Sin detener la grabación para corregir un pasaje. Sin una segunda toma. Lo que se escucha es mi primer encuentro con el tema, con sus inevitables pausas mientras el cerebro intenta convencer a los dedos de que colaboren, con algún pequeño atropello de notas por la falta de soltura y con algún voicing que todavía admite margen de negociación. Soy un principiante y sería ridículo fingir lo contrario. Y precisamente por eso, me parecía más honesto compartir el proceso antes que el resultado. Aquí está. Disfruten.

Satin Doll. Duke Ellington y Billy Strayhorn. Interpretado por José Vicente del Valle Fayos.

jul 14, 2026 19:20

Hoy he sustituido la grabación de ayer por otra ligeramente mejor. Sin embargo, la ausencia de bajo y batería, así como la duración excesiva de algunas pausas, hacen que la interpretación no se perciba tan fluida como sería deseable. Además de eso, hubiera sido interesante incluir una improvisación y una coda.

A excepción de los instrumentos faltantes, estos días trabajaré en mejorar esos aspectos. Mi plan consiste en ensayar más y evitar así las pausas excesivas. También quiero desarrollar habilidades de improvisación basadas en el alcance -a través de cercamientos y pivotes- a las notas objetivo propias de la pieza, según su armonía. Podría, además, combinar esa técnica con el compado.

Una vez lo haya conseguido, el paso siguiente será la transposición de la pieza a todos los tonos y la inclusión de instrumentos faltantes con ayuda de la aplicación iReal Pro.

jul 17, 2026 19:45

La grabación está hecha con un Korg D1 conectado a un ordenador con un cable MIDI-USB. El sonido ha sido generado y grabado con el software Modartt Pianoteq 9.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

Ropa prestada

jun 26, 2026 16:30591 visitas

Hay quien sigue creyendo que las aplicaciones de escritorio nacen en oscuros laboratorios de programadores con barba y problemas de sueño. Como si cada icono del menú fuese el fruto de una compleja alquimia de compiladores, bibliotecas y sacrificios rituales a los dioses del software. Pero la realidad, a veces, no es tan romántica.

Vivimos rodeados de servicios web que han terminado ocupando el lugar que antes pertenecía a las aplicaciones tradicionales. Correo, calendarios, gestores de tareas, editores de texto, etc. Todo sucede en una pestaña del navegador. Todo vive en una URL. Todo es efímero. Y, sin embargo, hay algo incómodamente humano en querer que ciertas herramientas tengan su propio espacio. Su propia ventana. Su propia silla en el salón de nuestra máquina. Para eso existe Nativefier. Primero instalamos la herramienta:

sudo npm install -g nativefier

Y con ella, convertimos cualquier servicio web en una aplicación de escritorio autónoma:

nativefier "https://direccion-del-servicio-web.com" --name "MiAplicacion"

Y entonces ocurre la pequeña magia: Nativefier genera una carpeta con todo lo necesario para ejecutar la aplicación como si hubiese existido allí desde siempre: un ejecutable, sus dependencias y la agradable ilusión de que internet y el escritorio siguen siendo mundos distintos. La carpeta generada puede vivir donde queramos dentro de nuestro directorio personal, aunque resulta razonable moverla a algún lugar civilizado, por ejemplo:

~/Aplicaciones/MiAplicacion-linux-x64/

Porque el orden no evita el desastre, pero al menos permite localizarlo. El siguiente paso consiste en enseñarle al sistema que nuestra criatura existe. Para ello creamos el fichero miaplicacion.desktop dentro de ~/.local/share/applications/. Allí definimos su nombre, el ejecutable que debe lanzar, el icono que utilizará y la categoría donde aparecerá en el menú de aplicaciones:

[Desktop Entry]
Name=MiAplicacion
Exec=/home/usuario/Aplicaciones/MiAplicacion-linux-x64/MiAplicacion
Icon=gnome-mail-send-receive
Type=Application
Categories=Network;Email;
Terminal=false

Después, guardamos el icono correspondiente en ~/.local/share/icons/. Y aquí llega uno de esos detalles absurdamente técnicos que explican por qué la informática sigue siendo una disciplina profundamente artesanal: la ventana que acabamos de crear tiene una identidad secreta. Un nombre interno. Una especie de alias clandestino que el gestor de ventanas utiliza para reconocerla. Para descubrirlo ejecutamos:

xprop WM_CLASS

El cursor se transforma en una cruz, como si estuviésemos a punto de realizar una autopsia digital. Seleccionamos la ventana de la aplicación y la terminal responderá con algo parecido a:

WM_CLASS(STRING) = "miaplicacion-nativefier-xxxxxx", "miaplicacion-nativefier-xxxxxx"

Ese identificador debe añadirse al fichero .desktop mediante la directiva StartupWMClass. Si nos saltamos este paso, durante la ejecución de la aplicación se generará un molesto segundo icono en el dock.

[Desktop Entry]
Name=MiAplicacion
Exec=/home/usuario/Aplicaciones/MiAplicacion-linux-x64/MiAplicacion
Icon=gnome-mail-send-receive
Type=Application
Categories=Network;Email;
Terminal=false
StartupWMClass=miaplicacion-nativefier-xxxxxx

Y entonces, por fin, todas las piezas encajan. El icono abre la ventana correcta. El sistema deja de confundir nuestra aplicación con un navegador disfrazado. La integración parece natural. Y nadie diría que detrás de esa apariencia impecable no hay más que una página web vestida con ropa prestada.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

La exclusión financiera

jun 20, 2026 9:15740 visitas

Hace apenas treinta años, vecinos de zonas rurales acudían a la sucursal bancaria para realizar operaciones rutinarias: transferencias, pagos, ingresos, consultas, etc. Recientemente, muchas sucursales de pueblos pequeños han sido sustituidas por oficinas itinerantes que únicamente prestan servicio un día a la semana. Mantener una oficina física en un pueblo pequeño puede costar decenas o cientos de miles de euros al año y las entidades bancarias han descubierto que, con la creciente digitalización de los servicios financieros, se puede prescindir de ellas. El problema viene cuando usted es una persona mayor que necesita efectivo y tiene dificultades para manejar un smartphone.

Mientras tanto, ahí afuera las fintech hacen el agosto: Revolut aspira a alcanzar los 100 millones de clientes activos diarios en 100 países en el plazo de dos años. A ese ritmo de crecimiento, no es de extrañar que las entidades tradicionales hayan cerrado oficinas físicas y hayan instado a sus clientes a utilizar una aplicación móvil para la operativa diaria. De esa manera consiguen reducir en mantenimiento de sucursales y compiten en mejores condiciones contra N26, Revolut y Wise, imitando un modelo de negocio que ha llegado para quedarse. Sí, para quedarse porque países como Suecia han dejado de aceptar el efectivo como forma de pago para el 90 % de las transacciones y porque el Banco Central Europeo ya está trabajando en la creación de una versión digital del euro. Así están las cosas.

De cualquier modo, no haga demasiado caso a la noticia sobre la marcha atrás de Suecia en el rechazo a los billetes, puesto que esa "marcha atrás" se circunscribe a escenarios de catástrofe o guerra, y se propone para afrontar eventualidades de una duración no superior a la semana. Dicho esto, la evolución de la prestación de servicios financieros al ciudadano se presenta de la siguiente manera:

Pero volviendo al tema central que nos ocupa, en pueblos pequeños, mercados, fiestas locales y entre personas mayores, el efectivo sigue teniendo una utilidad social y práctica difícil de sustituir, así que la verdadera cuestión para esos lugares, no es tanto si llegará el euro digital, sino si se garantizará que todos los vecinos sigan teniendo acceso a dinero y servicios financieros, independientemente de su nivel de digitalización. Esa es una de las preocupaciones centrales de las políticas de inclusión financiera en Europa sobre la que actualmente "se está trabajando". Por otra parte, se prevé que el euro digital se guarde en una cartera del Banco Central Europeo. Y surge entonces una duda más que razonable: si los ciudadanos trasladan sus ahorros de la banca comercial al BCE, ¿en qué queda la estabilidad financiera de la eurozona?

Algunos economistas sostienen que un euro digital amplio podría hacer el sistema más seguro, porque los ciudadanos tendrían acceso directo al dinero del banco central. Otros argumentan que podría debilitar el modelo bancario tradicional, obligando a los bancos a financiarse más en los mercados mayoristas y menos mediante depósitos de particulares. Por eso, el BCE está intentando encontrar un equilibrio: ofrecer una forma pública de dinero digital sin provocar una migración masiva de depósitos fuera de la banca comercial.

La exclusión financiera

Mujer con dinero sacando cuentas. Pexels.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

Pruebe con el cincel

may 27, 2026 16:151.1K visitas

Dentro de la ciberseguridad, existe una idea incómoda que muchos desarrolladores descubren tarde: no basta con revisar el código fuente. Aunque el código haya sido auditado por expertos y no exista una sola línea sospechosa, su trabajo podría estar comprometido. Imaginemos el siguiente escenario: alguien consigue modificar el compilador de C -pongamos GCC- para que se introduzca en el binario del compilador una instrucción maliciosa. El código fuente que usted ha revisado mil veces seguiría pareciendo limpio. Los repositorios permanecerían intactos. Sin embargo, su programa podría contener puertas traseras, vulnerabilidades deliberadas o mecanismos de espionaje.

No es ciencia ficción. La idea fue planteada en 1984 por Ken Thompson, en su célebre conferencia Reflections on Trusting Trust. Thompson describió cómo un compilador puede modificarse para insertar una puerta trasera al compilar el programa de autenticación de Unix. Pero lo más inquietante es que el compilador puede infectarse a sí mismo. ¿Cómo?

  1. El compilador modificado introduce malware en programas concretos.
  2. Cuando recompila su propio código fuente, vuelve a insertar la instrucción maliciosa.
  3. Aunque los desarrolladores eliminen el código malicioso del código fuente del compilador, los binarios compilados siguen infectados.

De este modo, si no puedes confiar en el compilador, tampoco puedes confiar en sus binarios. Entonces aparece uno de los grandes problemas de la informática moderna: la tecnología se sostiene sobre una cadena de confianza imposible de verificar.

Cuando un desarrollador crea una pieza de software, los usuarios quedan a merced del código fuente, del compilador, del sistema operativo, de las bibliotecas, del firmware, de la BIOS / UEFI, del microcódigo del procesador, del hardware físico, de la cadena de suministro, de los fabricantes, de los certificados criptográficos, de las actualizaciones, de los repositorios y de los mantenedores. Todo organizado en una jerarquía de capas imposible de auditar. No porque la criptografía sea inutil. No porque las buenas prácticas sean malas, como usted comprenderá. Sino porque la complejidad tecnológica supera la capacidad humana de verificación.

A todo esto, agregar los problemas debidos a la naturaleza humana: ingeniería social, phishing, empleados descontentos, errores de configuración , contraseñas reutilizadas, actualizaciones comprometidas o un simple descuido. Por eso, los profesionales de la ciberseguridad no hablan de sistemas "invulnerables". Hablan de mitigación, resiliencia, segmentación, defensa en profundidad, detección, respuesta, hardening y gestión del riesgo. Así que, ya sabe... en el mundo de la informática -como en la vida misma- las cosas son seguras hasta que dejan de serlo. Si le parece mal, pruebe con el cincel.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

El editor Vi

abr 5, 2026 13:002.2K visitas

Como estamos en pascua y nadie quiere arder en el infierno de los torpes, vamos a redimir nuestros pecados aprendiendo a manejar Vi, el legendario editor de texto basado en línea de comandos que trae de cabeza a los profanos de la informática. Habrá quienes digan que no hace falta complicarse la vida, que para eso ya tenemos a Nano. Claro, que también se le podría pedir a la vida que no duela, pero es que resulta que Vi -el áspero mesías de la terminal- no está para gustar, sino para salvarte. Imagina: servidor recién instalado, red sin configurar, acceso mínimo, sudor frío. No hay entorno gráfico. No hay internet. No hay Nano. Solo tú, la pantalla negra... y Vi mirándote a los ojos como un gato que sabe que no estás preparado para el asalto. Ahí solo tienes dos opciones: rezas o aprendes.

Primera revelación: Vi no es un editor, es un estado mental. Funciona en dos modos, como las personas que sonríen en público y se rompen en privado: el modo comando y el modo inserción. En uno das órdenes, te mueves, borras, deshaces, huyes, colaboras. En el otro escribes, como en cualquier editor civilizado, como si el mundo aún tuviera sentido. Confundir ambos modos es como declarar tu amor en mitad de una discusión: técnicamente posible, pero profundamente inconveniente. Y ahora, vamos con el catecismo mínimo, para no hacer el ridículo:

# Abrir o crear un documento
vi ruta/nombre-del-documento.ext
# Activar el modo de comando
Esc
# Abrir una nueva línea
o
# Borrar un caracter
x
# Borrar una línea
dd
# Deshacer la última acción
u
# Navegar izquierda, abajo, arriba y derecha
h, j, k, l
# Ir al principio o al final de la línea
0, $
# Ir a la primera o a la última línea
gg, G
# Activar el modo de inserción antes o después del cursor
i, a
# Escribir texto
Texto a escribir
# Guardar y cerrar
:wq Enter
# Cerrar sin guardar
:q! Enter

Con eso y un bizcocho, hasta mañana a las ocho. Ahora ya eres es un entusiasta acreditado de la edición de texto plano en Vi. No te olvides de pasturar la mona esta tarde ni de salir a caminar con los amigos. Eso sí, recuerda: cuando todo se rompa -porque se romperá- Vi seguirá ahí. No para ayudarte, sino para ponerte a prueba.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

Mi nube

mar 12, 2026 17:453.7K visitas

He abandonado mi cuenta de Exchange, sincronizada con Thunderbird a través de Aluco, porque Aluco no gestiona el spam en el lado del usuario. Así que, he vuelto a mi cuenta IMAP + CalDAV + CardDAV + WebDAV -ahora sí- con ActiveSync, para la sincronización entre dispositivos. Para mí, esto supone recuperar el control sobre la gestión del spam, disponer de un espacio extra para el almacenamiento cloud y disfrutar de una reducción en el precio de la factura del groupware.

Sin embargo, me he dado cuenta de que mi proveedor no facilita un espacio de almacenamiento accesible por davs, sino por https, lo que significa que no puedo acceder a ese espacio fuera del navegador. Y por eso, me he puesto manos a la obra y he recuperado mi viejo proyecto de una nube propia, completamente integrada con el sistema operativo.

Antes de continuar, quiero explicar las mejoras que he introducido. En primer lugar, la sincronización se resuelve con sync --delete-during, lo que significa que cuando se actualiza un fichero local, se borra la versión anterior en el contenedor. O si en el contenedor está activado el versioning, se coloca una marca de borrado. En este último caso, el archivo deja de ocupar espacio en la lista de objetos actuales, pero se guarda en el historial de versiones, por si necesitamos recuperarlo después. Y para finalizar, la sincronización con el contenedor es directa, desde la carpeta Documentos. Empezamos definiendo los tipos de ficheros que no queremos guardar con sudo nano ~/.config/rclone/rclone-excludes.txt:

# Carpetas inútiles
- **/.git/**
- **/node_modules/**
- **/.cache/**
- **/.npm/**
- **/target/**
- **/dist/**
- **/build/**

# Archivos temporales
- **/*.tmp
- **/*.swp
- **/*~
- **/.DS_Store
- **/Thumbs.db
- **/._*

# IDEs
- **/.idea/**
- **/.vscode/**

Instalamos rclone con sudo dnf install rclone y nos aseguramos de configurarlo, bien con rclone config, bien almacenando el fichero de configuración en la carpeta ~/.config/rclone. Para probar la conexión, ejecutamos rclone ls storage:usuario-storage. Después creamos el servicio: con sudo nano ~/.config/systemd/user/cloud.service:

[Unit]
Description=Sincronización Mirror a S3
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/rclone sync "/home/usuario/Documentos" storage:usuario-storage \
    --delete-during \
    --checksum \
    --fast-list \
    --transfers 4 \
    --bwlimit 1M \
    --filter-from /home/usuario/.config/rclone/rclone-excludes.txt \
    --log-level INFO

StandardOutput=journal
StandardError=journal

Podemos consultar los logs emitidos con journalctl --user -u cloud.service -f. Creamos el timer que activa la sincronización cada cinco minutos con sudo nano ~/.config/systemd/user/cloud.timer:

[Unit]
Description=Run sync every 5 minutes

[Timer]
OnBootSec=2min
OnUnitActiveSec=5min
Unit=cloud.service
Persistent=true

[Install]
WantedBy=timers.target

Reiniciamos los demonios y activamos el timer:

systemctl --user daemon-reload
systemctl --user enable --now cloud.timer
systemctl --user restart cloud.timer

Para comprobar que todo está en orden y que no hay sorpresas, podemos introducir los comandos systemctl --user list-timers y systemctl --user status cloud.service que listarán los timers de usuario activos y el estado de la sincronización, respectivamente.

Ahora ya tenemos nuestra propia nube, hecha de software libre, infraestructura de primer nivel e integración absoluta con el sistema operativo, lista para ser usada. Pero ¿qué pasa si se apaga la máquina mientras el sistema está sincronizando? Si la máquina se apaga mientras rclone sync está en curso:

Los archivos parcialmente subidos podrán quedar incompletos, pero rclone los detectará y reintentará la sincronización en otro momento. Y para finalizar -en caso de accidente- si queremos restaurar los archivos en la carpeta local, basta con:

rclone sync storage:usuario-storage /home/usuario/carpeta-restaurada-en-local \
  --progress \
  --fast-list \
  --transfers 4 \
  --checkers 8 \
  --bwlimit 1M \
  --filter-from /home/usuario/.config/rclone/rclone-excludes.txt

Actualización: Si queremos una capa extra de seguridad, podemos activar el versioning, lo que nos permitirá guardar versiones diferentes de los ficheros, que incluyan los cambios que vamos introduciendo. También podemos controlar el ciclo de vida de nuestro contenedor, limpiando el disco de archivos incompletos y borrando automáticamente versiones de cierta antigüedad. Para ello, creamos el archivo lifecycle.json en ~/.config/rclone:

{
  "Rules": [
    {
      "ID": "regla-1",
      "Status": "Enabled",
      "Filter": { },
      "Expiration": {
        "Days": 20
      },
      "NoncurrentVersionExpiration": {
        "NoncurrentDays": 10
      }
    },
    {
      "ID": "regla-2",
      "Status": "Enabled",
      "Filter": { },
      "Expiration": {
        "ExpiredObjectDeleteMarker": true
      }
    },
    {
      "ID": "regla-3",
      "Status": "Enabled",
      "Filter": { },
      "AbortIncompleteMultipartUpload": {
        "DaysAfterInitiation": 10
      }
    }
  ]
}

Instalamos el CLI de AWS con sudo dnf install awscli y lo configuramos con aws configure, introduciendo el access key, el secret key, la region por defecto y el output por defecto. Después aplicamos el lifecycle rule:

aws --endpoint-url url-del-endpoint \
    s3api put-bucket-lifecycle-configuration \
    --bucket usuario-storage \
    --lifecycle-configuration file:///home/usuario/.config/rclone/lifecycle.json

Y verificamos que se ha aplicado:

aws --endpoint-url url-del-endpoint \
    s3api get-bucket-lifecycle-configuration \
    --bucket usuario-storage

Para finalizar, si queremos recuperar todas las versiones con 10 días de antigüedad, empezamos listando y guardando una lista de todas las versiones disponibles:

aws --endpoint-url url-del-endpoint \
  s3api list-object-versions --bucket usuario-storage \
  > ~/.config/rclone/versions.json

Y después mostramos qué se copiará al directorio local:

TARGET_DATE=$(date -u -d "10 days ago" +%s)

jq -r --argjson target "$TARGET_DATE" '
  .Versions[]
  | select((.LastModified | sub("\\+00:00$";"Z") | strptime("%Y-%m-%dT%H:%M:%SZ") | mktime) <= $target)
  | "\(.Key) \(.VersionId)"' ~/.config/rclone/versions.json

Lo que dará un listado del tipo:

recetas/boquerones-en-vinagre.md 1769932289.488867
recetas/costillas-al-horno.md 1769932289.491374
recetas/pure-de-calabacin.md 1769932291.014892

Ahora sí, para terminar, copiamos al directorio local los ficheros que queremos recuperar, es decir los que tienen más de 10 días de antigüedad:

TARGET_DATE=$(date -u -d "10 days ago" +%s)

jq -r --argjson target "$TARGET_DATE" '
  .Versions[]
  | select((.LastModified
            | sub("\\+00:00$"; "Z")
            | strptime("%Y-%m-%dT%H:%M:%SZ")
            | mktime) <= $target)
  | "\(.Key) \(.VersionId)"' ~/.config/rclone/versions.json |
while read key version; do
  DEST="/home/usuario/restauracion-10-dias-antiguedad/$key"
  mkdir -p "$(dirname "$DEST")"
  echo "Descargando $key (versión $version)"
  aws --endpoint-url url-del-endpoint \
    s3api get-object \
    --bucket usuario-storage \
    --key "$key" \
    --version-id "$version" \
    "$DEST"
done

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

El tostón

mar 4, 2026 14:452.8K visitas

despertar, te susurra al oído como oráculo resfriado: wifi firmware missing.** Traducción del informático romance: aquí falta algo y no voy a decírtelo con cariño. ¿Se dejaron los chicos de IBM el wifi en la lavadora? No. No son descuidados, son poetas del comprimido. El firmware está ahí, sí, pero empaquetado al vacío, como el jamón. Y el kernel, que es muy suyo, se niega a morderlo en esas condiciones. Primer acto: ir a la despensa y abrir el envase:

cd /lib/firmware
sudo unxz -f iwlwifi-so-a0-gf-a0-*.xz

Descomprimir ahora es un gesto político que consiste en liberar los bits oprimidos por el .xz. Pero la cosa no acaba ahí. El sistema también se pone existencialista con unos avisos sobre iSCSI, esa tecnología que sirve para conectar discos lejanos como si fueran propios, en una especie de relación a distancia entre bloques:

Warning: Unmantained driver is detected cnic
Warning: Unmantained driver is detected cnic_init
Warning: Unmantained driver is detected bnx2i
Warning: Unmantained driver is detected bnx2i_mod_init

Lo que viene a decirnos -con voz de notario cansado- es que esos controladores existen, pero han sido abandonados en la cuneta digital. Nadie los mantiene. Nadie los cuida. Son perros viejos del kernel: muerden si pueden, pero ya no aprenden trucos nuevos. Así que, si no vas a montar una red SAN -y va a ser que no-, puedes silenciar el coro de plañideras angustiadas desactivando los módulos. Se hace así: editas la profecía de dracut, escribes la lista negra y regeneras con initramfs:

sudo nano /etc/dracut.conf.d/kernel-module.conf
omit_drivers+=" bnx2i cnic "

sudo dracut -f

El conjuro queda guardado en /etc, ese lugar donde viven las decisiones que no quieres repetir. Resultado final: wifi despierto, kernel en paz, iSCSI desterrado. La máquina ya no se queja, arranca con dignidad y funciona como debe: en silencio, que para dar el tostón ya estoy yo.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

Seguridad básica

feb 5, 2026 18:451.9K visitas

La seguridad en un servidor no es importante. Es vital. Como el oxígeno. Como el café. Como evitar que entren por la ventana mientras duermes y te cambien los muebles de sitio. Un servidor sin seguridad es un local abierto a las tres de la mañana: cualquiera entra, nadie paga y todos dejan huella, por eso, cuando un sysadmin levanta una máquina, lo primero que debería hacer no es celebrar el evento, sino cerrar con llave.

Empezamos el ritual conectándonos vía ssh y pidiéndole al sistema que recuerde quién es, porque suele olvidarlo:

ssh username@IP_SERVER_ADDR
sudo apt update
sudo apt upgrade

Después, el primer acto de camuflaje: cambiar el puerto por defecto. No es que esto convierta tu servidor en invisible, pero al menos deja de llevar el cartel luminoso de "Hola, soy el 22, pégame". Abrimos el confesionario con sudo nano /etc/ssh/sshd_config:

Port 23
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

Reiniciamos el servicio con sudo systemctl restart sshd. Ahora toca levantar un muro. Un cortafuegos. Un portero con cara de pocos amigos. Uno ligero, educado y con porra: Uncomplicated Firewall (ufw):

sudo apt install ufw
sudo export PATH=$PATH:/usr/sbin # Add route to PATH
uwf --version
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 23/tcp    # SSH/sFTP
sudo ufw allow 25/tcp    # SMTP
sudo ufw allow 587/tcp   # SMTPs
sudo ufw allow 993/tcp   # IMAPs
sudo ufw allow 80/tcp    # HTTP
sudo ufw allow 443/tcp   # HTTPS
sudo ufw enable

Aquí el servidor aprende una palabra nueva: "no". No a lo que no conoce. No a lo que no toca. No a los que llaman a las tres de la mañana. Pero aún queda la fauna persistente: los que prueban contraseñas como quien mete monedas en una tragaperras esperando premio. Para ellos existe fail2ban: la memoria rencorosa del sistema.

sudo apt install fail2ban
fail2ban --version
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
sudo systemctl enable --now fail2ban

Una configuración sencilla para sshd sería la que se indica más abajo, seguida de un reinicio del servicio y de la comprobación de su estado:

[sshd]
enabled = true
mode    = normal
port    = 23
logpath = %(sshd_log)s
maxretry= 10
bantime = 1d
backend = %(sshd_backend)s
action = ufw
sudo systemctl restart fail2ban
sudo systemctl status fail2ban
sudo systemctl status fail2ban sshd

Y cuando el servidor ya sabe decir "no" en varios idiomas, le damos un nombre propio: apuntamos el dominio a su IP y lo vestimos con un certificado SSL, que viene a ser como ponerle traje y corbata criptográfica:

sudo apt update
sudo apt install certbot
certbot --version
sudo apt install python3-certbot-nginx
sudo certbot --nginx -d your_domain

Certbot, eso sí, exige silencio por el puerto :80 durante el ritual. Como un sacerdote en plena ceremonia dominical. Después editamos la configuración del sitio en Nginx: /etc/nginx/sites-available/your_domain.conf:

server {
    listen 443 ssl;
    server_name your_domain;

    ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;

    # Additional security parameters
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # HTTP Redirection versus HTTPS
    location / {
        try_files $uri $uri/ =404;
    }
}
server {
    listen 80;
    server_name your_domain;
    return 301 https://$host$request_uri;
}

Y reiniciamos:

sudo nginx -t
sudo systemctl reload nginx

Y con esto, el servidor deja de ser un adolescente ingenuo y pasa a ser un adulto desconfiado. No es invulnerable -nadie lo es-, pero ya no abre la puerta en bata ni contesta a desconocidos. Porque la seguridad no es una opción avanzada del menú. Es el menú. No es un "ya lo miraré". Es un "si no lo hago hoy, otro lo hará mañana... pero desde fuera". Un servidor sin defensa es una promesa sin cifrar, una puerta sin cerrojo y una confianza sin memoria. Así que endurecerlo no es un mero cumplimiento: es un acto moral. Es una forma de decirle al mundo: aquí se entra con permiso, o no se entra. Y eso, en la red, es casi un poema.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

Organizarse

ene 20, 2026 15:151.8K visitas

Abandoné mi cuaderno digital como quien deja un amor tóxico: no por falta de cariño, sino por pura supervivencia. Ocurrió tras un ingreso hospitalario a finales del año pasado, cuando descubrí -en bata y con suero- que no podía acceder a mi agenda desde la web. La modernidad, ya saben: es muy inteligente, pero solo cuando le apetece. Descarté también la agenda de papel por motivos higiénico-existenciales: se ensucia, se arruga, se moja y acaba oliendo a derrota. Así que hice lo que haría cualquier adulto responsable con conexión a internet: pagar. Contraté el servicio Pro de OVH, que resultó ser tan "Pro" como una bicicleta sin pedales. El calendario, eso sí, podía leerse. De tocarlo, ni hablar.

Entonces tomé una decisión drástica, casi dramática: contraté una cuenta de Exchange alojada en Francia, porque todo parece más serio si pasa por Francia. Correo, calendario, tareas y contactos funcionando... digamos que razonablemente bien, esa expresión que usamos cuando algo no falla lo suficiente como para devolverlo. Aunque tampoco se podía devolver.

Durante unas semanas me sentí organizado. No feliz, pero organizado, que es una especie de felicidad de baja intensidad. Sin embargo, empezó a crecer en mí una tristeza extraña, una pena tecnológica: la pena de estar usando software privativo para hacer peor lo que los estándares abiertos -IMAP, CalDAV, CardDAV- llevan años haciendo mejor, más rápido y sin pedirte el alma. A esa pena se sumó algo de vergüenza. Y la vergüenza, cuando madura, se convierte en decisión.

No me arrepiento de haber contratado Exchange. Para saber si te gustan las lentejas, tienes que comerlas. Ahora bien: Exchange no hace nada esencialmente distinto a lo que ya ofrece el software libre, salvo ponerte la zancadilla con complementos obligatorios, importaciones capadas y carpetas infernales como "Historial de conversaciones" o "Tareas", que viven en la bandeja de entrada como okupas conceptuales. Las tareas, por cierto, deberían estar en el calendario, aunque quizá eso sería demasiado sensato. Y luego está la licencia: unos sesenta euros anuales para un servicio que los estándares abiertos te dan por menos de seis. Diez veces más caro, diez veces menos libre. Una ecuación impecable... si vendes jaulas.

Es cierto que muchos de esos problemas desaparecen si usas Outlook, el hábitat natural de Exchange. Pero ahí surge el verdadero problema: la retención deliberada del usuario en un ecosistema cerrado que convierte tus datos en materia prima y tu dependencia en modelo de negocio. Entiendo que la gente quiera ganarse la vida, ¡pero no así, recórcholis!

Organizarse

Buzones para correo. Pexels.

feb 27, 2026 13:35

Después de estar unos meses usando una alternativa libre al calendario de Exchange, me he dado cuenta de que si borras un evento desde el teléfono móvil, no se actualiza en el ordenador. Es por ello que ahora -con la experiencia acumulada- entiendo que Exchange sincroniza mejor entre distintos dispositivos.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

La fragmentación

ene 15, 2026 18:301.5K visitas

Llevo poco más de dos meses ocupado en casa con Fedora Silverblue y hoy toca hablar de los cambios que he notado respecto a otras distribuciones. Son solo dos pequeños detalles, uno de los cuales ya ha sido tratado en este diario, así que me centraré en el segundo, que es el que está relacionado con la gestión de paquetes. Parece poco creíble que una familia de sistemas operativos como GNU/Linux rinda más y provea una mejor experiencia de uso que otros sistemas y que -aún así- no haya conseguido alcanzar una cuota mayoritaria en entornos de escritorio. Poco creíble, pero es así.

Una de las razones por las que GNU/Linux no ha conseguido imponerse en el mercado doméstico es la que se atribuye a la fragmentación: GNU/Linux no es un sistema operativo, sino un conjunto de sistemas operativos que se derivan unos de otros y que están hechos de innumerables contribuciones de pequeños y grandes grupos de desarrolladores. Cuando un desarrollador prepara una aplicación, debe compilar versiones distintas de esa misma aplicación para todas y cada una de las distintas distribuciones de GNU/Linux que existen en el mundo. ¡Y se cuentan por centenares!

Esta situación provoca la huida de instituciones y empresas que reniegan de desarrollar nuevo software para GNU/Linux. Y así, cuando compras un GPS para tu automóvil -por poner un ejemplo- verás que la actualización de los mapas se puede realizar desde macOS y desde Windows... ¡pero no desde GNU/Linux! Dejamos para otro momento la consideración de quienes ven a GNU/Linux como un competidor desleal, dado que la mayor parte de distribuciones son gratuitas.

Pero volviendo al tema de la fragmentación, a día de hoy, GNU/Linux está tratando de resolver la situación distribuyendo sus aplicaciones en contenedores. Para que usted me entienda, un contenedor contiene las partes imprescindibles de un sistema operativo necesarias para ejecutar la aplicación contenerizada, virtualizada dentro de GNU/Linux. Esto hace que dicha aplicación pueda funcionar correctamente en cualquier distribución y quede así solventado el problema de la fragmentación.

¿Y qué tiene esto que ver con los cambios que he detectado en Fedora Silverblue durante los dos meses que llevo usándolo? Pues que al instalar la versión contenerizada de LibreOffice en Silverblue, me he encontrado con que no se guarda la fuente necesaria para la inserción de fórmulas matemáticas. ¿Por qué no? Por que Silverblue es inmutable. ¿Tiene solución? ¿Es grave? Para nada. Vamos a ver cómo se soluciona.

Lo primero que necesitamos es descargar la fuente OpenSymbol y extraerla del RPM como fichero .ttf:

curl -O https://dl.fedoraproject.org/pub/fedora/linux/updates/43/Everything/x86_64/Packages/l/libreoffice-opensymbol-fonts-25.8.3.2-2.fc43.noarch.rpm

rpm2cpio libreoffice-opensymbol-fonts*.rpm | cpio -idmv

Después, creamos una carpeta de fuentes en el directorio local -que en Fedora Silverblue sí es mutable- y la copiamos al directorio que hemos creado anteriormente:

mkdir -p ~/.local/share/fonts

cp usr/share/fonts/opensymbol/OpenSymbol.ttf ~/.local/share/fonts/

Actualizamos la caché de fuentes con fc-cache -f -v, et voilà! Ya tenemos la fuente disponible para su uso en la aplicación de LibreOffice (Flatpak) y en cualquier otra aplicación. No ha sido difícil, ¿verdad? ¿Crees que en el futuro -con la contenerización de aplicaciones- veremos llegar GNU/Linux a entornos de escritorio de uso masivo? ¿O piensas que hemos llegado tarde? ¡Haz tu apuesta ahora!

La fragmentación

Cristal roto. Pexels.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

Elegir ordenador

ene 6, 2026 17:451.2K visitas

Hay una pregunta que siempre vuelve, como la gripe, el horóscopo o los villancicos mal cantados: "¿qué ordenador debería comprarme?". La formulan, casi siempre, quienes llaman "la informática" a todo lo que no se puede arreglar soplando dentro del aparato. Y la respuesta -siento empezar rompiendo la ilusión- es que no existe una respuesta. No una sola. No una universal. No una que puedas imprimir y pegar en la nevera con un imán de la Caixa. Porque personas distintas tienen necesidades distintas. Y porque un ordenador no es un electrodoméstico: es una prótesis mental. Aun así, como se acerca el seis de enero y quizá hayas dejado caer un portátil en la carta a los Reyes Magos, conviene poner algo de orden en este pequeño caos silíceo.

Lo primero -y lo más cruel- es preguntarse si realmente puedes elegir. Sí, porque no siempre podrás. Si el ordenador es de trabajo, lo normal es que la decisión haya recaído sobre alguien de TI que quiere verte usar ese modelo concreto de ordenador de marca con teclado espartano y ventilador asmático. Si trabajas con software de Dassault Systèmes, por ejemplo, quizá puedas elegir el color del ratón, pero no el sistema operativo. La libertad tiene límites y a veces los límites vienen definidos por las licencias. Aclarado esto, pasemos al desfile de candidatos.

Windows es el gran supermercado de los sistemas operativos: funciona en casi cualquier cosa que tenga electricidad y una placa base con autoestima. Esa versatilidad colosal es -precisamente- su condena. Un PC con Windows no está pensado para ser eficiente ni longevo, sino compatible. Compatible con todo, incluso con sus propios errores. Vive en un estado de alerta permanente, vigilado por antivirus, cortafuegos y asistentes que te preguntan cosas obvias mientras consumen recursos como si fueran palomitas. Es el precio de la promiscuidad tecnológica. Ya sabes.

Apple, en cambio, juega a otro deporte: sus ordenadores funcionan sobre una variedad de hardware cuidadosamente restringida, casi monástica, y eso les permite una integración exquisita entre sistema y máquina. Parecen caros, sí, como todo lo que no está hecho para durar dos años, pero incluyen aplicaciones básicas que funcionan sin pedirte una suscripción, un riñón o tu primogénito, y ofrecen una experiencia coherente, estable y razonablemente segura. ¿Problemas de compatibilidad? Algunos. Pero solo deberían preocuparte si sabes qué software necesitas.

Y luego está GNU/Linux, la opción que separa a los curiosos de los consumidores. Su kernel monolítico reduce llamadas al sistema, cambios de contexto y otras cosas que no salen en los anuncios, pero que hacen que el ordenador vuele donde otros gatean. Es abierto, transparente y radicalmente honesto: puedes ver el código, modificarlo, romperlo y arreglarlo. Eso sí, no es un sistema que te lleve de la mano. Te enseña, te expone, te obliga a entender. A cambio, te abre las puertas al verdadero corazón de la informática: servidores, contenedores, acceso remoto, automatización y control. Incluso sin grandes conocimientos, usar GNU/Linux es como asomarse al motor de un mundo digital fascinante. Y una vez miras adentro, ya no hay vuelta atrás.

Elegir un ordenador no es elegir una marca: es elegir una relación. Windows es cómodo pero ruidoso, Apple es elegante y exigente, GNU/Linux es honesto. La pregunta correcta no es "¿cuál es el mejor?" sino "¿qué estoy dispuesto a tolerar, ignorar o aprender?". Porque al final, el ordenador que compres no dice tanto de tu presupuesto como de tu forma de pensar. Y eso no viene en la ficha técnica, por muchos kilos que pese o por muchos núcleos que tenga.

Elegir ordenador

Hombres caminando por la ciudad. Pexels.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

El abuelo

dic 30, 2025 16:15998 visitas

Mi abuelo fue hombre de manos incansables y mirada serena, de esos que parecen hechos del mismo material que el tiempo. Durante la guerra, cuando las palabras viajaban en hilos invisibles y el miedo se colaba en cada silencio, fue telegrafista: guardián de mensajes... puente humano entre destinos rotos y esperanzas frágiles. Supo escuchar el pulso de su tierra a través del metal y el código. Y quizá por eso aprendió a valorar tanto el peso de cada palabra.

Su casa albergaba una biblioteca viva. Libros leídos y releídos. Páginas gastadas por amor al conocimiento. Leía como quien riega un huerto interior, por eso sus huertas florecían con árboles frutales y hortalizas generosas. La tierra le respondía porque él la trataba con respeto, igual que trataba a las personas: con constancia, cuidado y honestidad. Vendía embutidos, jamones y polvorones, llevando a los vecinos, no solo alimento, sino cercanía. Instalaba persianas y cristales, abriendo y cerrando luces, protegiendo los hogares del frío y del ruido. Tenía colmenas. Las abejas -sabias y laboriosas- parecían reconocer en él a uno de los suyos: alguien que entiende que el esfuerzo compartido da frutos dulces.

Ayudaba a su hermana en la cacharrería, entre loza humilde y objetos cotidianos que pasaban de mano en mano como pequeñas historias domésticas. Allí aprendió que el trabajo también es cuidado y que la dignidad habita en lo sencillo. En los ratos de calma movía piezas de ajedrez con la misma inteligencia con la que había movido su vida: pensando, anticipando... respetando al adversario y al destino. Cada partida era un diálogo silencioso. Un ejercicio de paciencia y lucidez. Trabajó en una estación de trenes, ese lugar donde la vida siempre está de paso. Vio llegar y partir a muchos. Aprendió que nada es del todo permanente, salvo el cariño que uno deja sembrado. Alto y delgado, con una inteligencia tranquila, fue un hombre sociable, culto y honrado. En el pueblo lo querían porque él supo querer primero: con gestos, con palabras justas y con una presencia sincera.

Fue buen marido y buen padre, y aunque la vida lo reclamó demasiado pronto, no pudo llevarse lo esencial. Falleció joven, sí, pero dejó una estela profunda. Su recuerdo no envejece: vive en nuestra devoción, en el respeto que nos evoca y en la certeza de que hay personas cuya vida -aunque breve- ilumina generaciones enteras. Mi abuelo no se fue del todo. Se quedó en la tierra que trabajó, en los libros que hizo suyos, en los trenes que partieron bajo su mirada y en nosotros, que lo seguimos recordando con gratitud y amor. Te queremos, abuelo.

El abuelo

Pedro Fayos Marín junto al guardaagujas en la estación de RENFE en Buñol (Valencia). Imagen de álbum familiar.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

Agendas

dic 22, 2025 19:25927 visitas

Mientras algunos se quejan de la falta de oportunidades en España, otros se buscan la vida trabajando las tierras del vecino o prestando servicios por cuenta propia. No seré yo quien arregle los problemas de los demás cuando apenas me veo capaz de abordar los míos, pero dada mi faceta académica y la llegada inminente del año nuevo, quiero dedicar una entrada a las agendas. Sí, las agendas: esos cuadernos que la gente utiliza para planificarse la vida y organizarse un poco.

De un tiempo a esta parte he dejado de utilizar agendas de papel porque el papel se emborrona, se ensucia, se arruga y se moja. Y en su lugar utilizo un cuaderno de tinta electrónica sobre el que cargo la maqueta PDF de un planner digital. ¿Cuál es el problema? El problema es que la variedad de agendas digitales disponibles en español es muy limitada. Las que hay carecen de enlaces internos, están llenas de páginas que jamás usarás y disponen de vistas semanales con columnas de seis o siete caracteres. A menudo ocupan más espacio en memoria del necesario, cargan con lentitud y son igual de caras que las de papel.

Después de eso y de que nuestro gobierno haya anunciado un crecimiento en el número de afiliaciones a la Seguridad Social del 10.5 % desde la última reforma, no seré yo quien se queje de la falta de oportunidades en España. Así que, ya sabes: si eres diseñador y buscas un filón, aquí tienes uno. Eso sí, si quieres hacerlo bien te va a costar. Y otra cosa: mejor olvídate del Canva, ¿vale?

Agendas

Planificador anual junto a un bolígrafo. Pexels.

dic 22, 2025 19:35

Este es el segundo año que me veo en la situación de no encontrar un planner digital que me guste, así que no descarto empezar a diseñar uno con herramientas de software libre -seguramente Scribus- en verano de 2026, cuando tenga algo más de tiempo libre. Quizá lo distribuya gratuitamente. Si tienes interés en el proyecto, contacta conmigo.

dic 24, 2025 18:15

El acceso a los documentos del cuaderno digital solo se tiene desde el propio cuaderno, entonces usaré una agenda ICS estándar.

dic 25, 2025 13:05

El ICS del servicio Pro de OVH -gestionado desde Thunderbird- tiene permisos de solo lectura. Entonces no me ha quedado otra que renunciar también a ICS y contratar un plan de Exchange. Me organizaré con Exchange porque es accesible desde cualquier dispositivo, es compatible con Thunderbird y lo incluye todo: correo, contactos, calendario y tareas.

ene 1, 2026 12:45

Algunas personas me han preguntado por la compatibilidad de Exchange con Thunderbird. La mejor compatibilidad se consigue con el complemento Aluco. ¡Feliz 2026!

ene 20, 2026 10:20

He encontrado una alternativa libre para la organización de mi correo, calendario, tareas y contactos. Y me gusta más que Exchange.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

Inteligencia artificial

dic 14, 2025 19:45768 visitas

A veces da la sensación de que la inteligencia artificial no se aplica: se derrama. Como si alguien hubiera descubierto una botella milagrosa y -presa del entusiasmo- la estuviera vaciando sobre cualquier superficie disponible: problemas, no-problemas, rutinas, manías y, si te descuidas, sobre la siesta. De ahí que las computadoras fabriquen "recuerdos" que nadie pidió a partir de fotos borrosas y vídeos de cumpleaños que uno preferiría mantener en el sótano de la memoria. O que el teléfono, con una ternura inquietante, te pregunte si quieres activar el modo "tiempo libre" cuando estás roncando, confirmando que no solo te acompaña: te vigila.

El correo electrónico, por su parte, ha decidido que tu bandeja de entrada es demasiado tuya y se ha propuesto emanciparla con clasificaciones automáticas, jerarquías morales y prioridades que no recuerdas haber votado. Y el corrector ortográfico -esa criatura que presume de saber- te sugiere "voy ha estudiar", demostrando que la máquina puede tener mala educación y faltas de ortografía a partes iguales.

No es paranoia: esos recuerdos ocupan un espacio que no quieres llenar, esa atención constante roza el espionaje doméstico, esa clasificación es una intromisión sentimental y, seamos sinceros, nadie quiere escribir a su profesor de Literatura Hispánica como si hubiera aprendido a escribir en una servilleta mojada. Que no, que no reniego de la inteligencia artificial. Lo que pasa es que da la impresión de que hemos inventado la rueda y, en lugar de usarla para avanzar, unos intentan clavarle tachuelas y otros freír huevos encima. Todo muy innovador, muy disruptivo y bastante inútil.

Quizá por eso, tras pasar unos días ingresado en el hospital, lo que más he lamentado ha sido enviar correos electrónicos con un iPhone. Porque en mi PC con Linux no pasa eso. Allí la máquina obedece, no opina. Funciona, no recuerda. Y sobre todo, no intenta ser más lista que tú.

Inteligencia artificial

Placa de la habitación 103 del Hospital de Manises (Valencia). Elaboración propia.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme

Toolbox

nov 18, 2025 9:251.0K visitas

Si alguna vez te has despertado en mitad de la noche preguntándote cómo demonios se desarrolla software en un sistema inmutable como Fedora Silverblue -ese monolito zen que no quiere que toques nada-, enhorabuena. Hoy es tu día. Voy a iluminarte con un tutorial enviado por los dioses de GNU/Linux, pero con menos modestia. Lo primero: necesitas toolbox. Sin toolbox, eres como un pintor sin brocha, un cocinero sin sartén o un programador sin sentido de superioridad moral. Comprueba que está ahí y crea tu primer contenedor:

user@box:~$ toolbox --version
user@box:~$ toolbox create --container dev-linux
user@box:~$ toolbox enter dev-linux

Si las órdenes funcionan, felicidades. Ya estás dentro de un contenedor: un espacio seguro, mutable y calentito... como una pequeña habitación donde puedes romper cosas sin que Fedora te mire mal desde el pasillo. Eso sí, ahora mismo no puedes escribir ni un printf, porque no tienes compiladores. Estás en un piso vacío de esos que hacen eco. Así que, instala las herramientas necesarias: todas esas cosas imprescindibles que, seamos sinceros, no siempre usarás, pero dan un aire profesional que queda bien:

[user@toolbx:~]$ sudo dnf5 install @development-tools

Muy bien. Ya tienes herramientas. Ahora te falta la vergüenza de escribir un "hola mundo". Pero no te preocupes, que todos empezamos saludando al vacío.

#include <stdio.h>

int main() {
    printf("Hola mundo!\n");
    return 0;
}

Guarda el archivo como hola-mundo.c. Compílalo con gcc hola-mundo.c -o hola-mundo y ejecútalo con ./hola-mundo. Si todo ha ido bien verás algo como esto:

[user@toolbx:~]$ ./hola-mundo
"Hola mundo!"

Y ya que estamos: para ver todos los toolboxes que has ido generando mientras jugabas a ser dios de contenedores, usa toolbox list. Y cuando quieras volver a tu vida normal, sin tanta emoción... exit.

Así, casi sin darte cuenta, has pasado de temer, a manejar un sistema inmutable como quien doma a un gato callejero: con paciencia, algunos arañazos y la convicción de que, al final, eres tú quien manda. Ahora ya sabes crear contenedores, instalar herramientas y saludar al mundo desde una terminal encapsulada. No está mal para alguien que hace un rato miraba a Silverblue como si fuera un enigma de monjes medievales con acceso root. Disfruta de tu poder. Úsalo con responsabilidad. O no. Total, siempre puedes crear otro contenedor y fingir que aquí no ha pasado nada.

Toolbox

Madera de empresario. Pexels.

nov 18, 2025 10:35

Si tienes problemas para ejecutar ./hola-mundo, recuerda que el binario debe tener permisos de ejecución. Para ello usa sudo chmod 755 hola-mundo.

Antes de continuar...

Detrás de cada artículo de Bitácora hay tiempo, investigación y desarrollo continuo. Si quiere ayudar a mantener este proyecto libre e independiente, apóyeme:

Apóyeme