# Check Thunderbolt devices
sudo dmesg | grep -i thunderbolt | head -10
# Should show:
# thunderbolt 0-3: CalDigit, Inc. Thunderbolt Station 2
# No more "device link creation failed" errors
# Verify device listing
ls -la /sys/bus/thunderbolt/devices/
Step 3: Device Authorization with Bolt
Install and configure bolt for Thunderbolt device management:
# Install bolt (if not already installed)
sudo apt update && sudo apt install bolt
# Check device status
sudo boltctl list
# The CalDigit should show as "authorized"
Step 4: Verify USB Functionality
Connect USB devices to the CalDigit and verify recognition:
# Check USB device tree
lsusb -t
# Check connected storage devices
lsblk
# Verify USB devices by-id
ls -la /dev/disk/by-id/ | grep usb
Expected Results
After applying the solution:
Thunderbolt Detection: CalDigit appears as thunderbolt 0-3: CalDigit, Inc. Thunderbolt Station 2
Authorization Status: Device shows as authorized in bolt
USB Devices: Connected USB devices appear normally in lsusb and lsblk
No Error Messages: No more «device link creation failed» or port timeout errors
Troubleshooting Commands
Diagnostic Commands
# View Thunderbolt module parameters
cat /sys/module/thunderbolt/parameters/*
# Check PCI tree for Thunderbolt devices
sudo lspci -tv | grep -A 5 -B 5 Thunderbolt
# Monitor real-time device connections
sudo dmesg -w
# Check device authorization status
cat /sys/bus/thunderbolt/devices/0-3/authorized
# View detailed PCI bridge information
sudo lspci -vvv -s 06:00.0
The solution addresses the core compatibility issues between MacBook Pro 11,1, Liquorix kernel, and CalDigit Thunderbolt Station 2
All kernel parameters are essential for proper operation
USB devices connected to the CalDigit should work normally after applying the solution
The fix is persistent across reboots once GRUB is updated
Monitor dmesg logs if any issues arise with new USB devices
Success Indicators
CalDigit Detection: Device appears in bolt list as authorized No Error Messages: Clean dmesg output for Thunderbolt events USB Functionality: Connected devices appear in lsusb and lsblk Stable Operation: No disconnect/reconnect cycles Storage Access: USB storage devices mount and operate normally
Hardware: MacBook Pro 11,1 (Mid 2013) Software: Kali Linux Rolling 2025.4 + Liquorix kernel 6.17.8 Device: CalDigit Thunderbolt Station 2 + Various USB devices
Cómo rescaté un juego de USENET de 1987, rastreé a sus creadores a través del tiempo y lo llevé a la era moderna
Autor: Juan Méndez (vejeta) | Septiembre 2025
PRÓLOGO: El Eco de un Mundo Perdido
«I heard news of the request to release the code. I grant permission to release the code under GPL.» — Adam Bryant, 23 de febrero de 2011
«I enjoyed the article and liked seeing the map images in particular. It definitely brought back very fond memories! If only working a job to pay the bills hadn’t gotten in the way…» — Adam Bryant, septiembre de 2025
Catorce años separan estos dos mensajes. El primero rescató un proyecto estancado; el segundo reveló la profundidad emocional de una era digital que ya no existe. Esta es la historia de cómo una obsesión de dos décadas devolvió la voz a los pioneros del software y tendió un puente entre dos Internet irreconciliables.
CAPÍTULO 1: La Cápsula del Tiempo Digital (1987)
Imagen: Captura completa del posting original de «conquest» mostrando el código shar.
26 de octubre de 1987. Mientras la mayoría del mundo ni siquiera imaginaba Internet, en los servidores de USENET un usuario llamado ihnp4!mhuxd!smile (Edward Barlow) publicaba en comp.sources.games:
Este mensaje era más que un anuncio; era un artefacto de una filosofía que definiría una era.
La Logística del shar: Cuando el Software Viajaba en Fragmentos
Descargar Conquer en 1987 no era un clic. Era un rito de iniciación técnica:
bash
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing «sh file».
Cada una de las 5 partes era un script que contenía el código codificado como texto. El proceso requería:
Descargar manualmente cada parte desde USENET
Ejecutar sh parte01 para reconstruir los archivos
Repetir para las partes 2-5
Compilar manualmente con cc -o conquer *.c -lcurses
Si fallaba la parte 3, el proceso se detenía. No había resume download. Se esperaba días o semanas hasta que reapareciera en el feed.
El Acto de Fe Colectivo
Publicar en comp.sources.games era enviar tu trabajo al escrutinio de miles de los mejores ingenieros del mundo. No había tiendas curadas ni revisiones previas. La comunidad era el control de calidad.
Ed Barlow incluía esta nota en el README:
«What you have here is a copyrighted beta test version of CONQUEST.»
No existían las «betas cerradas». Se confiaba en que usuarios anónimos en universidades de todo el mundo probarían, reportarían errores y mejorarían el código. Era el open source antes de que el término existiera.
CAPÍTULO 2: Días Universitarios – El Descubrimiento (1990s)
A mediados de los 90, siendo estudiante en Sevilla, pasé incontables horas en los laboratorios Unix explorando un mundo digital emergente: terminales verdes, USENET, links, news, msgs – y, por supuesto, Conquer.
El juego era revolucionario. Como líder de una nación, controlabas tu reino élfico, imperio orco o ejércitos humanos a través de un mapa renderizado en caracteres ASCII. La profundidad era asombrosa:
Gestión económica detallada por sectores
Sistemas diplomáticos complejos entre razas
Magia y hechizos con efectos en el mundo
Exploración de territorios desconocidos
El Ritual Social del Juego
No era un juego solitario. El ritual era profundamente social:
Conectar por SSH a una máquina Unix compartida
Hacer movimientos durante el día entre clases
Esperar el conqrun nocturno que procesaba los turnos
Recibir emails con los resultados cada mañana
Organizamos partidas que duraban semanas, con turnos diarios o semanales. La lentitud era una característica, no un defecto. Permitía la estrategia profunda y creaba comunidad alrededor del texto.
No he encontrado fotos de la época de la sala, pero he encontrado su descripción en las antiguas páginas de la facultad:
CAPÍTULO 3: La Búsqueda Comienza – Detective Digital (2006)
Imagen: Captura completa del hilo en debian-legal mostrando la consulta inicial.
Para 2006, esta pieza de historia computacional estaba atrapada en un limbo legal. Comencé lo que pensé que sería un proyecto simple: obtener permiso para relicenciar el código bajo GPL y empaquetarlo para distribuciones Linux modernas.
Encontrar a los autores originales fue arqueología digital. Los emails de los 80 llevaban años muertos. Examiné directorios universitarios antiguos, seguí migas de pan digitales y eventualmente contacté a Ed Barlow.
La Filosofía del «Hazlo y Ve Qué Pasa»
Nuestra conversación por mensajería en 2006 reveló la mentalidad de la era:
(18:08:58) vejeta:Sorry if I catch you busy. While trying to investigate if I could relicense old conquer as free software I discovered it was complex. (18:14:00) Ed Barlow:i personally would say that you should do it and nobody will know the difference (18:18:52) vejeta:Indeed, I feel like a detective 🙂 (18:21:23) Ed Barlow:v4 was both of ours… i wrote v4 he wrote v5…
Cuando pregunté sobre arreglos comerciales previos, su respuesta fue reveladora:
«i dont know… i dont have adams mail address at all… dunno if they did anythign with the license tho»
Esta actitud encapsulaba la era pre-comercial de Internet: construir por pasión, compartir por defecto.
Pero Adam Bryant había desaparecido en el éter digital. Documenté todo en las listas de Debian Legal y creé la tarea GNU Savannah #5945. El proyecto se estancó.
CAPÍTULO 4: La Larga Espera y el Avance Inesperado (2006-2011)
Imagen: Captura del email de Adam Bryant de 2011 llegando espontáneamente.
Pasaron años. Entonces, el 23 de febrero de 2011, ocurrió la magia. Mi teléfono vibró con un envío de formulario de contacto:
«I heard news of the request to release the code. I grant permission to release the code under GPL.» – Adam Bryant
Había encontrado uno de mis artículos en línea y contactó espontáneamente. Después de cinco años de búsqueda, la barrera principal había desaparecido.
La Comunidad como Memoria Colectiva
Mientras tanto, conversaciones informales mantuvieron viva la llama. En 2011, mientras explicaba el proyecto a un amigo, su entusiasmo fue contagioso:
kike:killo me has dejao to intringao con el conquer no le puedes hacer eso a un puto ludópata como yo XDDD vejeta:…Esto fue la epoca pre-internet. Y nos entreteniamos con otras cosas: saltarnos las protecciones, juegos como el conquer, dominion, el arte ascii :). El irc acabó con todo eso. kike:si necesitas mano de obra barata para algo del conquer, cueneta conmigo…
Estos diálogos muestran que el proyecto nunca fue un fin en sí mismo, sino un vehículo para revivir una forma de entender la tecnología.
CAPÍTULO 5: La Trama se Complica – Versión 5 Emerge (2025)
Imagen: Comparación lado a lado de las interfaces de Conquer v4 y v5.
Justo cuando la historia parecía completa, Stephen Smoogen me contactó en 2025 sobre mis esfuerzos de relicenciamiento de 2006. Estaba particularmente interesado en Conquer Versión 5 – la reescritura completa de Adam Bryant con características avanzadas:
Conversión automática de datos entre versiones
Estabilidad mejorada y herramientas administrativas
Sistemas de eventos sofisticados
Interfaz de administración expandida
Pero V5 tenía una historia legal diferente, incluyendo arreglos comerciales de los 90. ¿Aceptaría Adam licenciar GPL esta versión también?
Su respuesta: «I have no issues with applying a new GPL license to Version 5 as well.»
El Arco de 14 Años
El viaje de Adam entre sus dos mensajes cuenta una historia universal:
2011:«I grant permission to release the code under GPL.» 2025:«If only working a job to pay the bills hadn’t gotten in the way…»
Este arco de 14 años revela la tensión eterna entre pasión y responsabilidad que todo creador enfrenta.
CAPÍTULO 6: Las Piezas Perdidas – Magia PostScript y una Pérdida Trágica
Imagen: Ejemplo de salida PostScript de las utilidades de MaF.
La red de contribuyentes se expandió. Descubrí a MaF (Martin Forssen), quien creó utilidades PostScript para generar mapas imprimibles del juego – crucial en la era pre-GUI cuando los jugadores necesitaban copias físicas para estrategizar.
Rastrear a MaF en 2025 me llevó a su nueva dirección de correo electrónico. Su respuesta fue inmediata y generosa: «Oh, that was a long time ago. But yes, that was me. And I have no problem with relicensing it to GPL.»
Richard Caley: No Solo un Pie de Página Legal
Captura de la página principal de Richard Caley preservada mostrando el anuncio.
Pero no todas las búsquedas terminan con una respuesta. Algunas terminan con silencio.
Mi investigación sobre Richard Caley siguió las mismas migas de pan digitales. Lo tracé hasta la Universidad de Edimburgo, donde trabajó en síntesis de voz. Encontré sus contribuciones técnicas a FreeBSD. Pero el rastro se enfrió alrededor de 2005.
«Richard Caley suffered a fatal heart attack on the 22nd of April, 2005. He was only 41, but had been an undiagnosed diabetic, probably for some considerable time. His web pages remain as he left them.»
Leer esas palabras se sintió diferente a encontrar un registro histórico. Esto no era investigación archivística – era entrar a la casa de alguien años después de que se hubiera ido y encontrar una nota en la mesa.
La página continuaba:
«Over and above his tremendous ability with computers and programming, Richard had a keen mind and knowledge of an extraordinary range of topics, both of which he used in frequent contributions to on-line discussions. Despite his unique approach to speling, his prolific contributions to various news group debates informed and amused many over the years.»
Los «Caleyisms» – El Hombre Detrás del Código
Captura de la página «Caleyisms» mostrando sus respuestas ingeniosas.
Y entonces descubrí sus «Caleyisms» – una colección curada de sus respuestas más brillantes en USENET que revelaban no solo a un programador, sino a una persona:
What’s a shell suit? «Oil company executive.»
How do you prepare for a pyroclastic flow hitting Edinburgh? «Hang 1000 battered Mars bars on strings and stand back?»
On his book addiction: «I never got the hang of libraries, they keep wanting the things back and get upset when they need a crowbar to force it out of my hands.»
Su humor era seco, inteligente y únicamente británico. En discusiones técnicas, podía ser brutalmente preciso:
«Lack of proper punctuation, spacing, line breaks, capitalisation etc. is like bad handwriting, it doesn’t make it impossible to read what was written, just harder. But you probably write in green crayon anyway.»*
El Oficina Digital Preservada
Explorar su sitio web preservado se sintió como caminar por su oficina digital. La estructura de directorios revelaba sus pasiones: how-tos de FreeBSD, experimentos con POVRAY, imágenes de fondo, proyectos técnicos. Su humor auto-despreciativo brillaba en su sección «About»:
«Thankfully I don’t have a photograph to inflict on you. Just use the picture of Iman Bowie to the left and then imagine someone who looks exactly the opposite in every possible way. This probably explains why she is married to David Bowie and I’m not.»*
Aquí había una persona completa – director técnico en Interactive Information Ltd, investigador de síntesis de voz, entusiasta de FreeBSD, fan de Kate Bush, y un ingenio que alegró incontables discusiones en línea.
La realidad legal era dura: las contribuciones de Richard a Conquer no podían ser relicenciadas. La universidad no pudo ayudar a contactar herederos debido a leyes de privacidad.
Imagen: El arte ASCII RIP de la página de Richard.
Sus amigos habían preservado su memoria con un simple tributo ASCII al final de su página:
text
^_^ (O O) \_/@@\ \\~~/ ~~ - RJC RIP
En la documentación del proyecto Conquer, Richard Caley no es recordado como un «caso problemático» o «código no liberable». Es honrado como la persona vibrante que fue – la mente brillante detrás de los «Caleyisms», el investigador que contribuyó a la síntesis de voz, el defensor de FreeBSD, y el participante ingenioso en comunidades en línea tempranas cuyas palabras continúan divirtiendo e informando, décadas después de que las escribiera.
CAPÍTULO 7: Renacimiento Técnico – Del USENET al CI/CD
Imagen: Comparación lado a lado mostrando el archivo shar de 1987 y la configuración de GitHub Actions de 2025.
La transformación técnica ha sido notable. Modernizar código de 1987 presenta desafíos únicos que requieren tanto respeto por el original como adopción de tecnologías modernas.
Arqueología del Makefile
# Original 1987 - Dependencias hardcodeadas conquer: conquer.c utils.c cc -o conquer conquer.c utils.c -lcurses -ltermcap # Moderno 2025 - Autotools y detección automática AC_INIT([conquer], [4.6]) AC_PROG_CC AC_CHECK_LIB([ncurses], [initscr])
Tuve que reemplazar assumptions de sistemas antiguos con detección automática de bibliotecas. Los Makefiles originales asumían versiones específicas de curses y ubicaciones de bibliotecas que ya no existen.
La Magia de ttyd – Terminales en la Web
# Dockerfile fragment - Puente tecnológico perfecto FROM alpine:latest RUN apk add ttyd ncurses COPY conquer /usr/local/bin/ CMD ["ttyd", "-p", "7681", "conquer"]
Esta configuración permite que la interfaz de curses original se renderice en navegadores modernos sin modificar una línea del código de 1987. Es un puente tecnológico que respeta el original mientras permite acceso moderno.
El mismo juego que viajaba en 5 partes de USENET ahora genera paquetes binarios con hashes criptográficos y procedencia verificable. La ironía: descubrí Melange cuando un amigo empezó a trabajar para la empresa que lo creó.
Base de código C actualizada para soportar ANSI C99 moderno
Empaquetado Debian integración
Empaquetado APK con Melange para Alpine Linux
Contenedores Docker con emulación de terminal via WebSockets
CAPÍTULO 8: Contexto Histórico – Conquer en el Ecosistema de Juegos Unix
Imagen: Fragmento de la lista «versions of empire» de 1989 mostrando a Conquer entre otros juegos.
Conquer no existía en el vacío. La lista «versions of empire» de 1989 revela un ecosistema floreciente de juegos de estrategia multiplayer:
Empire (PSL, UCB, UCSD): Diferentes variantes mantenidas por universidades
Galactic Bloodshed: Enfocado en exploración y terraformación
xconq: Uno de los primeros en ofrecer interfaz X Window
Buck Empire: Mejoras y debugging de una versión de PSL Empire
¿Por qué Conquer Sobrevivió Cuando Otros Desaparecieron?
Arquitectura Modular: Fácil de extender con nuevas razas y hechizos
Documentación Completa: Incluía guías de administración y formato de datos
Comunidad Activa: Adam Bryant mantuvo parches durante años
Portabilidad: Escrito en C estándar, sin dependencias exóticas
Mientras juegos comerciales de la misma época desaparecieron con sus plataformas, Conquer sobrevivió porque era texto plano y código abierto antes de que el término existiera.
La lista de 1989 presentaba a Conquer así:
«A multiplayer fantasy wargame written from scratch by Ed Barlow… Not really empire, but close enough to be easily understood by those used to empire. Currently supported by co-author Adam Bryant.»
Esto revela una cultura donde los «competidores» se listaban unos a otros en un espíritu de comunidad. El valor no estaba en la propiedad intelectual, sino en la contribución a un ecosistema común.
CAPÍTULO 9: El Elemento Humano – Por Qué Esta Odisea de 20 Años Importa
Imagen: Collage mostrando el código original de Ed Barlow, el email de Adam Bryant de 2011, y la conversación del equipo de 2025.
Esto no es solo sobre preservar juegos. Es sobre preservar la historia misma de la computación.
Los Pioneros del Software
Ed Barlow y Adam Bryant construyeron experiencias multiplayer sofisticadas cuando la mayoría de la gente nunca había oído hablar de Internet. Distribuyeron software a través de USENET porque eso era lo que se hacía – compartías cosas geniales con la comunidad.
Martin Forssen y sus utilidades PostScript representan el ingenio de los desarrolladores tempranos que resolvían problemas con las herramientas disponibles. ¿Querías visualizar el estado del juego? ¡Escribías un generador PostScript!
Comunidad y Continuidad
El esfuerzo de relicenciamiento de 20 años demuestra algo crucial sobre el open source: no es solo sobre código, es sobre comunidad y continuidad. Cada vez que alguien mantiene un proyecto legacy, documenta su historia, o rastrea contribuidores perdidos, está tejiendo los hilos que conectan el pasado computacional con su futuro.
El viaje de Adam entre sus dos mensajes – desde el permiso técnico hasta la reflexión emocional – encapsula por qué la preservación importa: el código sobrevive, pero las historias humanas se pierden si no las capturamos.
EPÍLOGO: Lecciones de la Arqueología de Software
1. Documenta Todo Esos posts casuales de USENET se convirtieron en evidencia legal crucial décadas después.
2. Licencia Claramente El comentario de Ed de que «copyleft didnt exist when i wrote it» resalta cómo los panoramas de licencias evolucionan.
3. La Comunidad es Todo Adam encontró mis artículos porque la comunidad de preservación estaba hablando del proyecto.
4. Las Herramientas Modernas Pueden Revivir Código Antiguo Melange y CI/CD le dieron al software de 1987 un renacimiento en 2025.
5. La Deuda Técnica es Temporal Lo que parece tecnología legacy hoy podría ser el tesoro arqueológico de mañana.
6. Preserva las Historias, No Solo el Código Los «Caleyisms» de Richard son tan valiosos como sus contribuciones técnicas.
LA HISTORIA CONTINÚA
Ambos juegos Conquer están ahora completamente licenciados bajo GPLv3 con empaquetado moderno. No son solo software jugable, sino un caso de estudio completo en:
Arqueología de software
Marcos legales para preservación
Evolución de prácticas de desarrollo a través de cuatro décadas
El próximo capítulo: enseñar estos juegos de estrategia clásicos a una nueva generación de desarrolladores y jugadores, mientras demostramos que los marcos legales apropiados y las herramientas modernas pueden dar una segunda vida a cualquier software histórico.
A veces la mejor manera de aprender tecnología de vanguardia es aplicándola para preservar la historia computacional.
¿Qué software histórico merece preservación en tu campo? ¿Has rastreado alguna vez el linaje del código hasta sus creadores originales?
How I spent two decades tracking down the creators of a 1987 USENET game and learned modern packaging tools in the process.
The Discovery: A Digital Time Capsule from 1987
Picture this: October 26, 1987. The Berlin Wall still stands, the World Wide Web is just text, and software is distributed through USENET newsgroups in text files split across multiple posts. On that day, Edward Barlow posted something special to comp.sources.games:
That’s how Ed Barlow announced it at the time, before quickly changed the name to Conquer.
This was Conquer – a sophisticated multi-player strategy game that would influence countless others. Players controlled nations in Middle Earth, managing resources, armies, magic systems, and diplomatic relations. What made it remarkable wasn’t just the gameplay, but how it was built and distributed in an era when «open source» wasn’t even a term yet.
Chapter 0: University Days.
It was during these days, in the middle of the 90s, that my fellow students and I spent hours experimenting with terminals in the Computer Unix Labs, USENET, links, news, msgs, and of course: conquer. That game was a gem that required to be the leader of a country, and with a map representing as characters each player could control their elven kingdom, orcish empire, or human armies to fight each other while controlling all the details of the economy.
But by 2006, this piece of computing history was trapped in legal limbo.
Chapter 1: The Quest Begins (2006)
As a university student in Spain in the early ’90s, I’d encountered Conquer in the Unix labs. Fast forward to 2006, and I realized this pioneering game was at risk of being lost forever. The source code existed, scattered across ancient USENET archives, but its licensing was unclear – typical of the «post it and see what happens» era of early internet software distribution.
I started what I thought would be a simple project: get permission from the original authors to relicense the code under GPL so it could be properly preserved and packaged for modern Linux distributions.
Simple, right?
Chapter 2: Digital Detective Work
Finding Edward Barlow and Adam Bryant in 2006 was like archaeological work. Email addresses from the 1980s were long dead. USENET posts provided few clues. I scoured old university directories, googled fragments of names, and followed digital breadcrumbs across decades-old forums.
The breakthrough came through pure persistence and a bit of luck. After months of searching, I managed to contact Ed Barlow. His response was refreshingly casual: «Yes i delegated it all to adam aeons ago. Im easy on it all…. copyleft didnt exist when i wrote it and it was all for fun so…»
But there was a catch – I needed permission from Adam Bryant too, and he seemed to have vanished into the digital ether.
Chapter 3: The Long Wait (2006-2011)
I documented everything on the Debian Legal mailing lists, created a GNU Savannah task (#5945), and even wrote blog posts hoping Adam would find them. The legal experts were clear: I needed explicit written permission from both copyright holders.
Years passed. The project stalled.
Then, on February 23, 2011, something magical happened. My phone buzzed with a contact form submission:
«I heard news of the request to release the code. I grant permission to release the code under GPL.» – Adam Bryant
He had found one of my articles online and reached out on his own.
Chapter 4: The Plot Twist – Version 5 Emerges (2025)
Fast forward to 2025, and Stephen Smoogen contacts me about my relicesing efforts in 2006 and how he was particularly interested in reviving: Conquer Version 5 – a complete rewrite by Adam with advanced features like automatic data conversion, enhanced stability, and sophisticated administrative tools. This wasn’t just an update; it was a complete reimagining of the game.
But V5 had a different legal history. In the ’90s, there had been commercial arrangements. Would Adam agree to GPL this version too?
His response: «I have no issues with applying a new GPL license to Version 5 as well.»
Chapter 5: The Missing Piece – PostScript Magic
Just when I thought the story was complete, I discovered another contributor: MaF (Martin Forssen), who had created PostScript utilities for generating printable game maps – a crucial feature in the pre-GUI era when players needed physical printouts to strategize.
Tracking down MaF in 2025 led me to his new email. His response: «Oh, that was a long time ago. But yes, that was me. And I have no problem with relicensing it to GPL.»
Richard Caley: More Than Just a Legal Footnote
But not all searches end with an answer. Some end with silence.
My investigation of Richard Caley followed the same digital breadcrumbs. I traced him to the University of Edinburgh, where he worked on speech synthesis. I found his technical contributions to FreeBSD. But the trail went cold around 2005.
Then I found him – not in a USENET archive, but on the front page of his own website, preserved exactly as he left it in web.archive.org.
«Richard Caley suffered a fatal heart attack on the 22nd of April, 2005. He was only 41, but had been an undiagnosed diabetic, probably for some considerable time. His web pages remain as he left them.»
Reading those words felt different from finding a historical record. This wasn’t archival research – this was walking into someone’s house years after they’d gone and finding a note on the table.
The page continued:
«Over and above his tremendous ability with computers and programming, Richard had a keen mind and knowledge of an extraordinary range of topics, both of which he used in frequent contributions to on-line discussions. Despite his unique approach to speling, his prolific contributions to various news group debates informed and amused many over the years.»
The «Caleyisms» – The Man Behind the Code
And then I discovered his «Caleyisms» – a curated collection of his most brilliant USENET responses that revealed not just a programmer, but a person:
What’s a shell suit?
«Oil company executive.»
How do you prepare for a pyroclastic flow hitting Edinburgh?
«Hang 1000 battered Mars bars on strings and stand back?»
On his book addiction:
«I never got the hang of libraries, they keep wanting the things back and get upset when they need a crowbar to force it out of my hands.»
His humor was dry, intelligent, and uniquely British. In technical discussions, he could be brutally precise:
«Lack of proper punctuation, spacing, line breaks, capitalisation etc. is like bad handwriting, it doesn’t make it impossible to read what was written, just harder. But you probably write in green crayon anyway.»
A Digital Office Preserved
Exploring his preserved website felt like walking through his digital office. The directory structure revealed his passions: FreeBSD how-tos, POVRAY experiments, wallpaper images, technical projects. His self-deprecating humor shone through in his «About» section:
«Thankfully I don’t have a photograph to inflict on you. Just use the picture of Iman Bowie to the left and then imagine someone who looks exactly the opposite in every possible way. This probably explains why she is married to David Bowie and I’m not.»
Here was a complete person – technical director at Interactive Information Ltd, speech synthesis researcher, FreeBSD enthusiast, Kate Bush fan, and a wit who brightened countless online discussions.
The legal reality was harsh: Richard’s contributions to Conquer couldn’t be relicensed. The university couldn’t help contact heirs due to privacy laws.
His friends had preserved his memory with a simple ASCII tribute at the end of his page:
^_^ (O O) \_/@@\ \\~~/ ~~ - RJC RIP
In the Conquer project documentation, Richard Caley isn’t remembered as a «problem case» or «unlicensable code.» He’s honored as the vibrant person he was – the brilliant mind behind the «Caleyisms,» the researcher who contributed to speech synthesis, the FreeBSD advocate, and the witty participant in early online communities whose words continue to amuse and inform, decades after he wrote them.
Chapter 6: Modern Renaissance – Enter GitHub, CICD and Modern Distributions
Here’s where the story gets really interesting. While working on preserving these Unix classics, I decided to learn modern packaging techniques. I chose to implement both APK (Alpine Linux) and Debian packaging for the games.
For APK packages, I used Melange – a sophisticated build system that creates provenance-tracked, reproducible packages for the Wolfi «undistro». The irony? I discovered this tool when some friend started to work for the company that created it.
Chapter 7: The Technical Journey: From USENET to Modern CI/CD
Original Conquer v4 code, by Ed Barlow and Adam Bryant
(Conquer running in docker container alongside Apache, Curses to WebSockets output thanks to ttyd. Now we can play through the web!)
Conquer Version 5 – The evolution of the classical Conquer, by Adam Bryant
Chapter 8: The Human Element: Why This Matters
This isn’t just about preserving old games – it’s about preserving the story of computing itself. Ed Barlow and Adam Bryant were pioneers who built sophisticated multiplayer experiences when most people had never heard of the internet. They distributed software through USENET because that’s what you did – you shared cool things with the community.
Martin Forssen’s PostScript utilities represent the ingenuity of early developers who solved problems with whatever tools were available. Want to visualize your game state? Write a PostScript generator!
The 20-year relicensing effort demonstrates something crucial about open source: it’s not just about code, it’s about community and continuity. Every time someone maintains a legacy project, documents its history, or tracks down long-lost contributors, they’re weaving the threads that connect computing’s past to its future.
Lessons for Modern Developers
Document everything: Those casual USENET posts became crucial legal evidence decades later
License clearly: Ed’s comment that «copyleft didnt exist when i wrote it» highlights how licensing landscapes evolve
Community matters: Adam found my articles because the community was talking about preservation
Technical debt is temporal: What seems like legacy tech today might be tomorrow’s archaeological treasure
Modern tools can revive ancient code: Melange and modern CI/CD gave 1987 software a 2025 renaissance
The Continuing Story
Both Conquer games are now fully GPL v3 licensed and available with modern packaging. They represent not just playable software, but a complete case study in software archaeology, legal frameworks for preservation, and the evolution of development practices across four decades.
The next chapter? Teaching these classic strategy games to a new generation of developers and gamers, while demonstrating that proper legal frameworks and modern tooling can give any historical software a second life.
Sometimes the best way to learn cutting-edge technology is by applying it to preserve computing history.
What historical software deserves preservation in your field? Have you ever traced the lineage of code back to its original creators?
On September 9, 2023 I will participate in the Alpine tour for CliniClowns. They can ensure that more people with disabilities or dementia feel seen and understood. Will you also help and sponsor me? Thank you very much in advance.
En Septiembre de 2023 participaré en un evento, un tour donde se recogen donaciones para CliniClowns. CliniClowns es una ONG donde se atiende a personas con demencia o distintas capacidades. Si quieres colaborar con una donación:
Últimamente estoy usando KDE/Plasma(X11) en mi Debian GNU/Linux y me dí cuenta que el púntero no desplazaba (scroll) el contenido arriba o abajo en las ventanas al usar dos dedos en el panel táctil.
En mi caso, fue instalar éste módulo lo que solucionó el problema:
sudo apt install xserver-xorg-input-multitouch
Por último, reiniciar el escritorio para que hiciera efecto.
(Enable Multi Touch in Debian with KDE and Plasma)
Uno de ellos es pertenecer al Insider Program de Windows. Si no puedes hacerlo desde la configuración, puede que lo más rápido sea bajarte la ISO, montarla, y ejecutar el Setup:
⚠️ Actualización Octubre 2025: Freenode dejó de existir en 2021 tras un hostile takeover de la red (anuncio del staff original). La comunidad de software libre migró masivamente a Libera.Chat, una nueva red fundada por el staff original de Freenode. Este artículo ha sido actualizado para reflejar la configuración moderna.
Redes IRC actuales para FLOSS:
Libera.Chat – Reemplazo oficial de Freenode para proyectos de software libre (anuncio oficial)
GNU Emacs viene de base con el paquete ERC para poder conectarnos al IRC.
En este artículo publicamos como automatizar el proceso de conectarnos a las redes de FreenodeLibera.Chat y OFTC, autenticación de nuestro nick con NickServ, y entrar en los canales que definamos.
A su vez, para más seguridad, las claves van a ser encriptadas con GPG.
Se asume que previamente:
Se ha configurado GPG en el sistema
Los usuarios han sido registrados en los respectivos NickServ de cada servidor de IRC
Nota: omitimos los valores reales del nick y el password.
2. Encriptar el fichero .authinfo
Desde Emacs:
M-x epa-encrypt-file
Seleccionamos .authinfo
Esto creará el fichero .authinfo.gpg
Nota 1: El módulo que hace posible esto se llama EasyPG. Nota 2: A partir de ahora, podemos borrar .authinfo. Cada vez que Emacs abra el fichero .authinfo.gpg lo desencriptará automáticamente para poder editarlo y lo encriptará al guardar.
3. Automatizar la conexión a los servidores de ERC
📁 ¿Dónde poner esta configuración?
Doom Emacs:
Añade el código en ~/.doom.d/config.el
Después ejecuta: doom sync y reinicia Emacs
Spacemacs:
Añade el código en ~/.spacemacs dentro de la función dotspacemacs/user-config
Emacs Vanilla (sin distribución):
Añade el código en ~/.emacs o ~/.emacs.d/init.el
use-package (recomendado para configuración modular):
Crea un archivo separado como ~/.emacs.d/lisp/setup-erc.el y cárgalo desde tu init.el con: (load "~/.emacs.d/lisp/setup-erc.el")
Configuración Básica
;; Lectura de las claves encriptadas en .authinfo.gpg
(setq auth-sources
'((:source "~/.authinfo.gpg")))
(setq erc-autojoin-timing 'ident)
(setq erc-prompt-for-nickserv-password nil)
Entrada automática a los canales de cada servidor IRC
(setq erc-autojoin-channels-alist
'(("freenode.net" "#emacs-es" "#debian" "#nethack""libera.chat" "#emacs-es" "#debian" "#nethack" "#emacs" "#guix" "#lisp")
("oftc.net" "#debian-next" "#oftc"
"#debian-mentors" ; Para aspirantes Debian Maintainer"#debian-devel" ; Desarrollo general Debian"#debian-multimedia" ; Paquetes multimedia"#debian-qa" ; Quality Assurance"#debian-es"))) ; Comunidad Debian española
Identificación con cada servidor
Cambiar el valor del nick apropiadamente en cada caso.
4. Usar certificado personal con OFTC (alternativa a NickServ)
📁 Ubicación del certificado:
Los archivos keyfile y certfile generalmente se guardan en: ~/.ssl/oftc/ o ~/.config/ssl/oftc/
Reemplaza /path/to/your/keyfile y /path/to/your/certfile con las rutas reales, por ejemplo: ("/home/tuusuario/.ssl/oftc/nick.key" "/home/tuusuario/.ssl/oftc/nick.crt")
Como alternativa a la validación por clave o password, existe la posibilidad de usar certificados para conectarse al servidor.
Creamos el certificado tal como se indica en la página de oftc.net y añadimos esto a nuestros ficheros init de emacs:
(with-eval-after-load 'erc
;; erc hack for gnutls for client cert.
(defvar *uconf/erc-certs* nil
"erc client certs used by gnutls package for :keylist.")
;; copied from the gnutls lib but set :keylist to client certs.
;; this function is called from `open-network-stream' with :type tls.
(defun uconf/open-gnutls-stream (name buffer host service &optional nowait)
(let ((process (open-network-stream
name buffer host service
:nowait nowait
:tls-parameters
(and nowait
(cons 'gnutls-x509pki
(gnutls-boot-parameters
:type 'gnutls-x509pki
:keylist *uconf/erc-certs* ;;added parameter to pass the cert.
:hostname (puny-encode-domain host)))))))
(if nowait
process
(gnutls-negotiate :process process
:type 'gnutls-x509pki
:keylist *uconf/erc-certs* ;;added parameter to pass the cert.
:hostname (puny-encode-domain host)))))
;; only set the global variable when used from `erc-tls'.
(defun uconf/erc-open-tls-stream (name buffer host port)
(unwind-protect
(progn
(setq *uconf/erc-certs*
'(("/path/to/your/keyfile" "/path/to/your/certfile")))
(open-network-stream name buffer host port
:nowait t
:type 'tls))
(setq *uconf/erc-certs* nil)))
(advice-add 'open-gnutls-stream :override #'uconf/open-gnutls-stream)
(advice-add 'erc-open-tls-stream :override #'uconf/erc-open-tls-stream)
)
Configuración Avanzada (Opcional)
💡 Nota sobre configuración modular:
Para Doom Emacs:
Toda esta configuración avanzada va en ~/.doom.d/config.el
Para organización limpia (cualquier Emacs):
Puedes crear un archivo separado ~/.emacs.d/erc-config.el con toda la configuración de ERC y cargarlo desde tu init principal:
;; En tu ~/.emacs o ~/.doom.d/config.el
(when (file-exists-p "~/.emacs.d/erc-config.el")
(load "~/.emacs.d/erc-config.el"))
Esto mantiene tu configuración modular y fácil de mantener.
Logging y Tracking Mejorado
;; Guardar logs de conversaciones
(setq erc-log-channels-directory "~/.erc/logs/"
erc-save-buffer-on-part t
erc-save-queries-on-quit t
erc-log-write-after-send t
erc-log-write-after-insert t)
;; Tracking mejorado - ignora mensajes de sistema
(setq erc-track-exclude-types '("JOIN" "NICK" "PART" "QUIT" "MODE"
"324" "329" "332" "333" "353" "477")
erc-track-enable-keybindings t
erc-track-visibility nil)
;; Timestamps visibles
(setq erc-timestamp-format "[%H:%M]"
erc-insert-timestamp-function 'erc-insert-timestamp-left)
Recientemente, me encontré en la tesitura de enviar un parche al kernel linux, concretamente, una corrección menor de documentación. Seguí la sugerencia de este tutorial https://opensource.com/article/18/8/first-linux-kernel-patch de enviar el parche a través de Mutt
Para configurar mutt, creé el el fichero .muttrc en la carpeta $HOME de mi usuario con el siguiente contenido, sustituyendo __your_user__ por mi usuario y __your_app_password por mi clave de aplicación (lo explicaré más adelante).
# ================ IMAP ====================
set imap_user = '__youruser__@gmail.com'
set imap_pass = '__your_app_password__'
set spoolfile = imaps://imap.gmail.com/INBOX
set folder = "imaps://imap.gmail.com:993"
set record="imaps://imap.gmail.com/[Gmail]/Sent Mail"
set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
set mbox="imaps://imap.gmail.com/[Gmail]/All Mail"
# ================ SMTP ====================
set smtp_url = "smtp://__youruser__@gmail.com@smtp.gmail.com:587/"
set smtp_pass = $imap_pass
set ssl_starttls = yes # activate TLS if available
set ssl_force_tls = yes # Require encrypted connection
# ================ Composition ====================
set editor = `echo \$EDITOR`
set edit_headers = yes # See the headers when editing
set charset = UTF-8 # value of $LANG; also fallback for send_charset
# Sender, email address, and sign-off line must match
unset use_domain # because joe@localhost is just embarrassing
set realname = "John Smith"
set from = "__your_user__@gmail.com"
set use_from = yes
1. En el menú a la derecha, pinchar en «Seguridad». A continuación, en la sección «Iniciar sesión en Google», activar «Verificación en dos pasos».
2. En el menú a la derecha, pinchar en «Seguridad». A continuación, en la sección «Iniciar sesión en Google», seleccionar Contraseñas de aplicaciones, genera una nueva para usarla con Mutt.
Y ejecutandolo desde la carpeta o directorio donde hemos descargado el código del kernel, obtendremos la lista de direcciones de email a los que podriamos enviar el parche para su revisión.
¿Que pasa si no tienes clave o carnet de biblioteca?
A la derecha tendrás las instrucciones por si has olvidado o no tienes clave. Las bibliotecas están ofreciendo este servicio online y puedes solicitarlo tanto si tienes el certificado digital o no, en esta dirección.
Una vez has conseguido entrar en https://andalucia.ebiblio.es/, puedes solicitar prestamos de libros, los cuales puedes leerlos online, o pueden descargarse para leerse durante el tiempo del prestamo, instalando Adobe Digital Editions.
Instalar Adobe Digital Editions en Debian GNU/Linux
Sigue leyendo si quieres saber como instalar Adobe Digital Editions (ADE) en Debian GNU/Linux.
Éste tipo de herramientas no tienen versión para GNU/Linux, sin embargo podemos descargar el ejecutable de windows y ejecutarlo con wine.
En este portátil he trasteado bastante reparticionando su disco duro, por lo que es probable que ello haya influido en modificar los identificadores de las particiones swap usadas al hibernar.
Al hibernarlo:
El arrancar de nuevo el ordenador era igual que si no lo hubiera hibernado antes.
La solución estaba en modificar el archivo /etc/initramfs-tools/conf.d/resume
y especificar correctamente el identificador UUID de la partición de swap a usar.
Los identificadores pueden comprobarse en el directorio:
/dev/disk/by-uuid/
Ejemplo:
Comprobar donde está la partición de espacio de intercambio (swap)
En este caso, el principal inconveniente que estaba teniendo era que al volver de la suspensión perdía las conexiones de redes, sea por cable ethernet o inalámbrica por wifi.
Esto me estaba obligando a reiniciar el network-manager, y con frecuencia varias veces seguidas tras volver de una suspensión.
Tras jugar con ajustes de energía en los paneles de control, los archivos de interfaces, systemd, etc…
Al final, la solución estuvo en evitar conflictos entre varios gestores de red. En mi caso opté por eliminar el paquete wicd-daemon y dejar que network-manager se encargue de las conexiones.
Manage Cookie Consent
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional
Siempre activo
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Statistics
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos.The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.