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.

Organizar los e-mails de GitHub

Minientrada

Pude poner orden hoy en la carpeta de archivo en la que normalmente vuelco todos los e-mails de notificaciones de GitHub una vez los he procesado, y que estaba empezando a acumular un tamaño no poco considerable. (Sobre por qué archivo todo en vez de eliminar algunos tipos de notificaciones, es otro asunto.)

En las notificaciones que tienen que ver con un repositorio (como un issue, un PR o una release), GitHub rellena la cabecera List-Id con el identificador del repositorio del que procede. List-Id es una cabecera estandar que la mayoría de clientes de correo usa para reconocer listas. En el caso de GitHub, la List-Id de un repositorio es <repo>.<user>.github.com.

De modo que con un poco de análisis, he podido organizar automáticamente por carpetas todas las notificaciones, para que las notificaciones de makigas/clank (cuya List-Id será clank.makigas.github.com) vayan a Archivo/github.com/makigas/clank, o las del repositorio danirod/rectball vayan a Archivo/github.com/danirod/rectball.

Un par de filtros automáticos se van a asegurar de que futuras notificaciones vayan directamente a esas carpetas, ya que normalmente las notificaciones llegan en momentos en los que no les puedo dedicar tiempo y luego es complicado escarbar mi bandeja de correo para localizar todos estos correos cuando sí tengo tiempo de ponerme con ello.

Un exceso de newsletters

Minientrada

Twitter anunció la compra de Revue, y ha pasado a modo gratuito buena parte del servicio, bajando también los costes de la versión premium. ¿Que qué es Revue? Una alternativa a Substack.

Ya he hablado sobre estas cosas. Las newsletters en sí no están mal como alternativa a las redes sociales, pero resulta complicado de gestionar todo lo que se recibe a larga escala. Pueden quedarse en la bandeja de entrada esperando días su momento de ser leídas, pero mi experiencia haciendo esto es que al final elimino de golpe 10-15 e-mails una vez por semana. Aparte, le veo varios problemas:

  • No es anónimo, porque tengo que dar mi e-mail para formar parte de una lista.
  • No es gratis para quien publica, porque muchos proveedores cobran cuotas por tener más de un determinado número de suscriptores en esa lista. Esto quita voces interesantes que podrían crear una newsletter y no lo hacen porque hay que pagar, o provoca que algunas newsletters busquen estrategias de monetización (esperemos que sin involucrar hacer cosas feas con la lista de e-mails).
  • Algunas newsletters se han “desuscrito” de mí automáticamente simplemente porque, como mi e-mail lo leo en modo texto plano, no puedo descargar y ver los pixel beacons, por lo que cuento en sus listas como un seguidor inactivo.

Emitir en Twitch vs Emitir en YouTube

Minientrada

Durante 2020 he pasado bastantes horas emitiendo en vivo por internet a través de YouTube, y eso ha cambiado mucho mi percepción ante el arte de emitir en directo frente a lo que hacía en años anteriores.

Eso significa que he empezado a ver Twitch con otros ojos. Sobre todo comparado con lo que tengo más acostumbrado actualmente.

No sé si voy a quedarme en Twitch o no, pero he encontrado algunas cosas interesantes sobre la plataforma que lo hacen un poco más atractivo comparado con YouTube.

  • No quemo la marca. Ciertos contenidos que tengo en mente emitir entran en conflicto con lo que representa la marca makigas y no me parece prudente emitirlos en mi canal de YouTube.
  • No estropeo tanto las estadísticas de mi canal de YouTube. Este es uno de los puntos que más me interesan, porque últimamente estoy intentando subir contenido de calidad que me facilite el plan de expansión, el cual debería llegar este año por fin. Como no estropeo las estadísticas; por lo tanto:
  • No enfado al algoritmo. El algoritmo de YouTube se ofende fácilmente y con los planes a futuro que tengo para mi canal, eso no me interesa, porque eso podría suponer menos impresiones y menos ocasiones de aparecer en los buscadores. (A mi canal no le interesa la relevancia en el tiempo, le interesan los buscadores)

Y sobre todo, un aspecto que no pensé hasta 2020 que me iba a importar tanto:

  • No le tengo que prestar tanta importancia al VOD. Quizá haya contenido que valga la pena preservar de forma seleccionada, pero conservar íntegramente y de forma infinita streams de 2 horas de duración en los que tampoco pasa gran cosa.

Homebrew Cask sin avisos de seguridad

Minientrada

Seguramente esto sea contrario a la política de seguridad de macOS, pero hoy no me ha quedado otra que instalar con Homebrew Cask una aplicación GUI que no está firmada y que por lo tanto no pasa la política de seguridad de macOS. Educadamente, macOS me invita a tirar el instalador a la papelera pero hace fallar a Cask, que no se espera esto.

Si hubiese descargado a mano el instalador, podría seguir las instrucciones habituales para abrir aplicaciones no firmadas: click derecho – Abrir, y olvidarme por hoy de este asunto. Pero, ¿click derecho en Homebrew? ¿Eh?

Bueno, mirando la página de ayuda del comando brew cask install, la opción que busco es --no-quarantine. Homebrew respeta las opciones de seguridad del sistema operativo y por defecto pone en cuarentena las descargas, igual que hacen los navegadores web, para que salte el sistema de seguridad de macOS al intentar usar el archivo y rechazarlo si no se puede identificar el origen de la aplicación.

% brew cask install foo --no-quarantine

Recomendaría usar con cautela esta opción, de todos modos, no sea que se instalen sorpresas en el ordenador por accidente.

Móviles, cajas, cargadores, auriculares

Minientrada

Mi segundo teléfono inteligente de la era moderna fue el Moto G1 en 2014. Un teléfono de la Motorola de 2013, cuya división de móviles era propiedad de Google. Fue un experimento para crear un móvil a precio de gama baja con prestaciones de una gama superior, antes de que otras marcas como Xiaomi o OnePlus lo hicieran. Antes de envejecer fatal, fue un buen teléfono para costar menos de 200 euros.

Para ahorrar costes, la caja del Moto G1 no traía ni auriculares ni cargador. He ido a consultar vídeos de unboxings de la época para comprobar que este dato es correcto. En su momento recuerdo comentarios en redes del tipo «no los vas a necesitar, seguro que ya tienes auriculares y cargadores por casa o que puedes comprar uno».

Mi tercer teléfono inteligente fue el Moto G4+ en 2016. Seguía sin traer auriculares, pero ya me daba igual, porque empezaba a tener mejores auriculares que usar. Traía cargador de pared compatible con Turbo Power. La notificación «Turbo Power conectado» sólo aparecía cuando se ponía a cargar con ese cargador concreto. En otros cargadores, tardaba horas en hacer una carga completa.

Me pregunto si el Moto G4+ hubiese traído cargador si los objetivos de la Motorola de Lenovo hubiesen sido otros. El mercado de móviles de precio bajo ya tenía nuevos competidores. La cuarta generación no buscaba ser un móvil barato, como generaciones anteriores. Además, sin un cargador no se podría presumir de la carga rápida, que empezaba a despegar por entonces.

Me hacen mucha gracia los memes al respecto de la ausencia de cargador y auriculares en el nuevo iPhone 12. Sin embargo, no es un concepto nuevo. Lo he estado viviendo en mis propias carnes en años anteriores. No quiero disculparles por esta decisión. Preveo que otras marcas que ahora ridiculizan esta decisión se subirán al carro dentro de un tiempo. Cuando se cargaron el jack de auriculares analógicos, el resto de marcas se burlaron de esta decisión también, pero a día de hoy muchísimos móviles Android se fabrican sin jack de auriculares. Hoy día esa decisión me duele menos, porque uso auriculares Bluetooth el 99% del tiempo. Pero de vez en cuando me encuentro con el caso en el que poder enchufar unos auriculares analógicos estándar a mi móvil me vendría bien, pero al ser un iPhone 11, eso me es imposible.