Esta es la primera entrada que creo en mi blog en el Geminiespacio (¿Gemeloespacio? ¿Geminispacio? Dudo que la RAE o la Fundéu me ayuden con esto). El Geminiespacio es un fascinante proyecto del que ya os hablé[1] anteriormente que define un protocolo parecido a la web, pero simplificado al máximo- los que recuerden el protocolo Gopher les sonará- pero el Geminiespacio está modernizado (requiere TLS, por ejemplo) y aprende unas cuantas lecciones de la web.
Es un protocolo muy inflexible (si quisiesemos implementar un buscador, por ejemplo, no permite formularios aunque sí permite pedir al usuario una cadena de texto) que impide todo lo que odiamos de la web moderna. Una cápsula Gemini sólo es hipertexto y nada más, ni lo bueno ni lo maligno.
He publicado el código fuente del terrible invento rubegoldberesco que me ha permitido migrar este blog de WordPress a un extraño injerto estático y el proxy a través del cuál muy probablemente estéis leyendo esta entrada mediante un navegador convencional. Lo podéis encontrar aquí:
El repositorio con el código de sostiene este blog
Espero no provocar demasiados problemas con esta migración. Me temo que los que uséis RSS seguramente veréis republicadas las últimas diez entradas del blog, eso sí.
[1] La entrada del blog en la que mencioné por primera vez el Geminiespacio
Para inaugurar el blog, el típico post periódico donde recopilo lo que voy encontrando por Internet.
La verdad que en vez de citaros [2] y [3], en realidad debería de dejar de republicar contenido de Quanta Magazine[4] y recomendaros que os suscribáis, creo que me encanta uno de cada cuatro de sus artículos como mínimo.
[3] Sobre lo difícil que es saber qué es la vida
Ken cumple 60 años [5], y para celebrarlo os recomiendo ver el episodio sobre la Barbie del documental de Netflix "The Toys That Made Us" [6], ya que es de los puntos álgidos de lo que ya es una buena serie documental en general.
[6] The Toys That Made Us, en Netflix
Hace tiempo me quedé decepcionado con las herramientas básicas UNIX porque me parecía que no había un mecanismo elegante para filtrar los resultados del comando find. Quería ejecutar una función sobre los archivos x.ext1 para los que no existiese un archivo x.ext2 más moderno, y acabé haciendo esta barbaridad.
function filter { while read line ; do test "$line" -nt "${line%.ext1}.ext2" && echo "$line" done } function transform { while read line ; do transform <"$line" >"${line%.ext1}.ext2" done } find x/ -name "*.ext1" | filter | transform
, cuando resulta ser que el -execdir de find (que por motivos de seguridad debería usarse en vez del tradicional -exec) ya permite hacer esto de una manera mucho más elegante:
find x/ \ -name "*.ext1" \ -execdir sh -c 'test "$0" -nt "${0%.ext1}.ext2" ]' {} \; \ -execdir sh -c 'transform <"${0}" >"${0%.ext1}.ext2"' {} \;
, ya que la acción -execdir actúa como el resto de filtros de find, y si la ejecución del comando fracasa, no se ejecutan las acciones siguientes.
Esto me lo tuvo que decir un amable ser, aunque la verdad que estaba claramente documentado [6].