eMule en 2021

Estuve jugando este fin de semana con eMule, como en los viejos tiempos. En líneas generales, abrir el programa parece lanzar una máquina del tiempo contra 2007, y es que todo sigue exactamente igual que hace una década (y pico). Cosa que tampoco es difícil, porque la última versión para descargar, la v0.50a, salió en abril de 2010.

Captura de pantalla de eMule
eMule 0.50a recién abierto

Mi crónica del proceso

Conectarlo a las redes fue complicado. Recordaba eMule como un software más plug and play. Instalar, pulsar Conectar y entrar a la red. Admisiblemente fue más dificil que en otros tiempos, imagino que porque la lista de servidores que se preinstala está anticuada. La sección Kad me sale en blanco.

Tras un poco de lectura de guías que no recuerdo si el Dani del pasado leería o no, me encuentro descargando un nodes.dat y un server.met que de repente llenan de vida ambas pestañas. O eso pienso yo. Aunque soy capaz de conectarme a un servidor eD2K, no consigo inicialmente entrar a la red Kad. De hecho, ninguna flecha se pone verde y el icono de la mula aparece con los ojos vendados. Creo recordar que eso quería decir que no está correctamente conectado. Supongo que el que mi proveedor de internet use CG-NAT y por lo tanto convierta abrir puertos a internet en todo un trámite burocrático que no sé si estoy dispuesto a hacer, tendrá que ver.

Buscador de eMule
No sé si es que ya no queda nadie compartiendo archivos, o si es que no tengo bien configurado el programa.

Salto a la sección Buscar y pienso en algo que buscar. Apple Music, Steam, Netflix y Prime Video han convertido la piratería en una cosa del pasado, así que no se me ocurre nada que tenga necesidad de obtener digitalmente. Que alguien busque una máquina del tiempo y se lo diga al Dani de otros tiempos: algún día no necesitarás nada de esto. Por poner algo, pongo «debian 10» en el buscador y le doy a Buscar. Obtengo pocos resultados pero aparecen un par de CDs. (También un par de archivos .torrent, curiosamente.)

En algún momento, mientras estoy haciendo todo esto, mi cliente se conecta finalmente a la red Kad. Doble flecha amarilla (que no verde). Aprovecho para buscar en la red Kad pero no encuentro resultados. Hago un par de búsquedas más. Encuentro bastantes CDs y DVDs de FreeBSD 13. En el momento de escribir esto, no hace ni dos meses que ha visto la luz, así que lo considero también un indicador de que al menos hay gente que hoy día sigue subiendo contenido actualizado. Lo trato de descargar también.

Y entonces es cuando empiezan los flashbacks intensos.

Sección de descargas de eMule
Hacía años que no veía esta pantalla.

Hacía años que no veía la pantalla de descargas. La recordaba más colorida, aunque también es cierto que por entonces tendría más uso que ahora, tanto por mi como por otros pares. La única descarga que parece avanzar es la de FreeBSD. La otra permanece en un azul claro simbolizando que dependo de una única fuente que no se digna a compartir conmigo.

Recuerdo que en otros tiempos, una vez que aparecían fuentes suficientes, uno se podía ir a las propiedades de cada descarga para ver como esos pares habían decidido llamar a los archivos que estaba descargando. Era una forma inteligente de prevenir sustos y de no perder el tiempo, porque si descargabas un archivo y al ver cómo lo llamaban los demás te encontrabas con otro, sabías que estabas descargando otra cosa que no fuese lo que habías buscado.

Ahora mismo, poco hay que consultar. Me vuelvo al buscador, busco más cosas. Encuentro PDFs para descargar (posiblemente de forma no muy legal) libros que han sido descatalogados de Amazon. Pongo a descargar un PDF, pero se mantiene de color rojo por minutos, indicando que no hay nadie que pueda compartir conmigo en este momento.

Pasa el rato y veo que mi descarga de FreeBSD continúa lentamente a ritmo de 100 kB/s. Como en los viejos tiempos, ponías a descargar algo por la noche y te ibas a dormir con la esperanza de tenerlo completo a la mañana siguiente. Excepto que hoy día, con una conexión de fibra de 500 MB/s, podría haber tenido este archivo descargado hace ya un buen rato si lo hubiese descargado desde el sitio web oficial.

Cancelo las descargas, cierro el software y lo desinstalo.

¿Y bien?

Es bonito ver que sigue habiendo gente todavía conectada a esta red, esforzándose por compartir contenido. Sin embargo, muchos de nosotros ya pasamos página, dado el abanico de posibilidades legales que tenemos hoy en día, sin estar dispuestos a volver atrás. A tiempos más simples, tal vez también más nostálgicos de otra época que no va a volver, pero también menos avanzados que lo que tenemos hoy en día.

En defensa de SQLite

Minientrada

Recientemente en Ruby on Rails incorporaron un cambio que genera un aviso al arrancar la aplicación en modo producción si el driver de base de datos que está configurado es el de SQLite. El aviso se puede desactivar cambiando un flag de configuración en el production.rb para confirmar que no es un accidente, sino una decisión.

You are running SQLite in production, this is generally not recommended.

Debo romper una lanza a favor de SQLite. Tiene sus issues, claro está, pero muchos de ellos pueden entenderse si se lee la documentación técnica.

Por ejemplo, si nunca te has leído su guía sobre tipos de datos y afinidad de columnas probablemente te sorprenda lo blando que es para validar los tipos de datos durante el INSERT (puedes guardar enteros en columnas creadas como VARCHAR, y viceversa).

No vale para todo, pero lo he visto muchas veces en producción en circunstancias en las que tiene sentido que esté en producción, y si está justificado, seguiré defendiéndolo con fuerza como alternativa ligera.

¿Qué hacemos cuando hay conflicto en el Gemfile.lock?

Minientrada

Pues esta es fácil pero como todo en Git nunca aparente. Va a pasar cuando haga cambios al Gemfile en dos ramas a la vez.

git checkout HEAD -- Gemfile.lock

Esto es para traerme el Gemfile.lock que había antes de obtener mi conflicto. Lo importante es que podemos confirmar con un git status que se preserva el Gemfile, así que los cambios en las versiones o librerías siguen ahí.

Si he metido o quitado una dependencia del Gemfile, ahora ejecuto bundle para que se descargue o se retire del lock por encima de la última versión que había en la rama en la que estoy intentando hacer el merge.

Si he actualizado la versión de una dependencia del Gemfile, ahora ejecuto bundle update para que se vuelva a reflejar ese cambio en el lock por encima de la última versión que había en la rama en la que estoy intentando hacer el merge.

La caída de Freenode

Minientrada

Veo estos días la caída de Freenode como quien ve la caída del imperio romano. Cuando empecé a programar, Freenode era el lugar en el que todo proyecto abierto que se precie debía participar. Hoy muchos proyectos ya no están en IRC: migraron a Matrix, Discord o Slack, y los que aún quedan, huyen estos días de FreeNode como gacelas ante los leones.

Nunca me gustó la interfaz de IRC. Siempre tuve miedo de equivocarme y mandarle un mensaje privado a alguien con mi contraseña intentándome comunicar con NickServ. Los modos, las contraseñas en plano, ChanServ. Admito que IRC es de las pocas tecnologías «clásicas» que menos pena me da que desaparezcan.

Portapapeles del sistema y VIM

Minientrada

El registro de Vim + (PLUS) interactúa con el portapapeles del sistema operativo (el que te permite luego hacer Ctrl-V en otra aplicación).

Si hago un yank en Vim poniendo "+ primero (por ejemplo, "+yy para copiar una línea o una selección visual), luego puedo pegarlo en otra aplicación gráfica de macOS con Cmd+V. Es bidireccional, así que puedo pegar del portapapeles del sistema si he copiado de otra app con "+p.

Hasta ahora utilizaba el modo selección y luego ejecutaba !pbcopy para enviarle mi buffer a pbcopy (un comando de terminal de macOS que envía su stdin al portapapeles), pero esto es más cómodo y no me borra el buffer.

El RSS se quiere poner de moda

Enlace

Google tiene planes para integrar un lector RSS en Google Chrome. Podría ser interesante para ver si se pone de moda RSS otra vez. O al menos que los sitios vuelvan a señalizar con la etiqueta de descubrimiento para que los que usamos extensiones podamos capturar el feed.

Hubo una época en la que los navegadores tenían lectores RSS integrados. Internet Explorer, Firefox, hasta Safari. Poco a poco fueron perdiendo esta funcionalidad, siendo Firefox el último en traicionar eliminando los marcadores dinámicos y el botón RSS.

Sobre FLoC

Minientrada

Mozilla pareció anunciar la semana pasada su oposición a implementar FLoC, la nueva solución propuesta por Google para su nuevo adtech de vigilancia. Mandaría cojones que uno de los navegadores que más tarda en implementar cualquier estandar nuevo y legítimo de repente le diese alta prioridad a esta pantomima.

Es un ejercicio de optimismo el cruzar los dedos y esperar que FLoC fracase. Blink ya tiene virtualmente el monopolio de navegadores tan asumido que se ha vuelto lo normal ver ingenieros de Google convertir los RFC de nuevos estándares web en la documentación de su roadmap. El resto de navegadores está por el momento en contra y algunas plataformas como WordPress parece que han anunciado que también van a oponerse por defecto. ?

Apagar FLoC es tan sencillo como modificar la configuración del servidor para incluir la siguiente cabecera en la request: permissions-policy: interest-cohort=().

Case-sensitivity y HFS+ (macOS)

Minientrada

Un archivo TypeScript con el siguiente código fuente compila en mi ordenador:

import Member from "../../Member";

Sin embargo, mi código de CI de GitHub Actions falló con el siguiente mensaje de error:

Error: src/lib/http/middlewares/member.ts(6,20): error TS2307: Cannot find module '../../Member' or its corresponding type declarations.

Después de darle un par de vueltas, el veredicto es que, como por defecto el sistema de archivos de macOS no diferencia entre mayúsculas y minúsculas, en macOS, import Member from "../../member" e import Member from "../../Member" son equivalentes. GitHub Actions por defecto utiliza GNU/Linux, donde sí se diferencia por defecto entre mayúsculas y minúsculas, así que no lo tiene tan claro.

Ugh. Lo peor es que hay software para macOS que espera que el sistema operativo no sea case-sensitive y que puede dar problemas si el disco duro en el que se instala macOS se configura para sí diferenciar mayúsculas de minúsculas.

Downgradeando a macOS Mojave

Después de hacer una balanza de beneficios vs incompatibilidades, estoy haciendo rollback a mi ordenador portátil para dejar de usar macOS Big Sur. En vez de volver a macOS Catalina, que sería la versión inmediatamente anterior a la Big Sur, voy a volver a macOS Mojave. En el fondo Catalina nunca funcionó bien, mientras que macOS Mojave sí funcionaba bien.

Algunos de los problemas que me encuentro usando macOS Big Sur en mi MacBook Pro de 2014; viejo pero que intenta dar todavía:

  • Lentitud general de toda la interfaz de usuario y de las aplicaciones principales del sistema operativo. También al levantar la tapa y sacarlo del modo sueño tarda bastante en pedirme la contraseña.
  • Entiendo que en nombre de la seguridad me pida algunas confirmaciones o me intente impedir que haga ciertas cosas avanzadas de vez en cuando. Sin embargo, cuando el sistema de seguridad pone la zancadilla cada dos por tres y cuando ya estás acostumbrado a hacer clic derecho + Abrir en vez de doble clic para abrir aplicaciones y lo haces mecánicamente, igual es que algo no va bien.
  • El proceso kernel_task escribe en disco una cantidad absurda de bytes, y temo que esté haciendo daño a mi SSD. Aquí una captura de pantalla teniendo un uptime del sistema de 20 minutos.
Monitor de actividad.

La interfaz de usuario es cuca, debo admitirlo. Normalmente soy muy crítico con los cambios hechos en las interfaces de usuario y suelo tratar estos cambios como regresiones, pero el diseño estético de macOS Big Sur me gusta. Una pena que lo haga a cambio de comprometer el rendimiento del sistema. Funciones como «Tintar las ventanas con el color del fondo de escritorio» noto que hacen que vaya todo aún más lento de lo que debería.

Incompatibilidades que me voy a encontrar al bajar a Mojave:

  • Recordatorios para iCloud no funcionará, ya que cambió el formato con el que se sincronizan en macOS Catalina. Como uso Recordatorios vía CalDAV a través de Fastmail, no será un problema.
  • Probablemente Pages, Keynote y Numbers funcionen raro, ya que las últimas versiones de ese software requieren mínimo Catalina. Como prácticamente mi portátil se ha convertido en una máquina de grabación y edición de vídeo y a veces de programación, no espero notarlo demasiado. Donde hoy en día uso Keynote, Pages y Numbers es en mi iPad de todos modos.
  • iTunes. Sigue funcionando, porque en Windows también existe iTunes todavía, pero probablemente Apple Music no funcione para siempre.

Sorprendentemente, aunque macOS Mojave ha desaparecido del buscador de la AppStore y de la lista de aplicaciones compradas, se puede encontrar el enlace en el sitio web de Apple, ya que tienen un artículo dedicado a descargar versiones viejas de macOS y MacOS X. ?

Una vez se descarga a través del sistema de actualizaciones, te avisa de que no puede ejecutar automáticamente lo que ha descargado porque los downgrades no están soportados oficialmente, pero en la carpeta Aplicaciones queda la descarga igualmente.

Para crear un pendrive booteable, se pueden seguir las instrucciones que también están en el sitio web de Apple. Esencialmente pasa por formatear un pendrive de tal modo que se pueda montar desde el sistema operativo (la guía pide formatealo como HFS+, MacOS Extended, pero yo lo he formateado como MS-DOS), y luego desde la terminal ejecutar:

sudo /Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

Cambiando /Volumes/MyVolume por el nombre del volumen, como podría ser /Volumes/Dani o /Volumes/TDK.

Por supuesto hay que hacer backup antes de los archivos, cosa que en mi caso es fácil gracias a que tengo pocos archivos en el sistema de todos modos. No he utilizado mucho este ordenador portátil para cacharrear desde que instale Big Sur en noviembre, de todos modos y el resto está en la nube, por lo que mi backup local se limita a mis claves SSH, la carpeta con mis repos, y hacer git push de mis dotfiles y de mi vimrc.

Con el pendrive grabado, se reinicia el ordenador manteniendo pulsada la tecla ALT para que salte el cargador de arranque extendido y en el menú se elige la unidad USB conectada. A partir de ahí, a instalar.

¿Alguna vez dejamos de estar en guerra con el Excel?

Estado

¿Alguna vez dejamos de estar en guerra con el Excel? Piénsalo. En muchas ocasiones, tu trabajo como desarrollador consiste en crear software que resuelva problemas mejor que lo que puede hacerlo una hoja llena de fórmulas en Microsoft Excel.

(Corolario: un sistema informático nunca está completo hasta que no tiene un botón para descargar una snapshot de los datos cargados en él como CSV.)