<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Un blog</title><link>https://nachof.blog/posts/</link><description>Recent content in Posts on Un blog</description><generator>Hugo</generator><language>es-UY</language><lastBuildDate>Fri, 04 Sep 2026 08:45:14 -0300</lastBuildDate><atom:link href="https://nachof.blog/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Cosas aprendidas en agosto</title><link>https://nachof.blog/posts/2026/cosas-aprendidas-en-agosto/</link><pubDate>Fri, 04 Sep 2026 08:45:14 -0300</pubDate><guid>https://nachof.blog/posts/2026/cosas-aprendidas-en-agosto/</guid><description>&lt;p&gt;Otro mes, otra lista de boludeces que aprendo.&lt;/p&gt;
&lt;h2 id="its-the-end-of-the-world-as-we-know-it"&gt;It&amp;rsquo;s the end of the world as we know it&lt;/h2&gt;
&lt;p&gt;La escena de Gremlins 2 en la que muestran un video grabado específicamente para emitir en caso de fin del mundo no es sólo un chiste de la película, referencia lo que en ese momento era una leyenda urbana: Ted Turner, fundador de CNN, tenía una grabación para emitir en esa eventualidad. Resultó que la leyenda urbana era real, y eventualmente se filtró.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo escuché&lt;/strong&gt;: En el podcast &lt;a href="https://yourewrongabout.com/" target="_blank"&gt;You&amp;rsquo;re Wrong About&lt;/a&gt;. Lo confirmé en &lt;a href="https://en.wikipedia.org/wiki/Turner_Doomsday_Video" target="_blank"&gt;Wikipedia&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="federalismo-asimétrico"&gt;Federalismo asimétrico&lt;/h2&gt;
&lt;p&gt;En una de esas maratones de hacer click en Wikipedia, me encontré con el concepto de &amp;ldquo;&lt;a href="https://en.wikipedia.org/wiki/Asymmetric_federalism" target="_blank"&gt;federalismo asimétrico&lt;/a&gt;&amp;rdquo;. Normalmente, pensamos en las federaciones como una asociación de estados, todos iguales. En la realidad eso no pasa. El ejemplo más clásico es separar la capital de la federación (como en el caso de Buenos Aires, Brasilia, Washington, Delhi), y en general tiene una forma de gobierno diferente (suele tener más control directo del gobierno central). Igualmente, hay casos con diferencias bastante más grandes, y tiene un nombre (sí, federalismo asimétrico, ya lo dije).&lt;/p&gt;
&lt;p&gt;Un par de ejemplos, sacados de Wikipedia.&lt;/p&gt;
&lt;h3 id="alemania"&gt;Alemania&lt;/h3&gt;
&lt;p&gt;Alemania tiene un requerimiento de que ciertas escuelas públicas tengan instrucción religiosa, pero Bremen puede ignorarlo.&lt;/p&gt;
&lt;p&gt;Además, en los estados del sur, las reglas que gobiernan la profesión de los escribanos tienen que pasar por la legislatura estatal. No, no entiendo por qué específicamente escribanos.&lt;/p&gt;
&lt;h3 id="la-corte-suprema-de-canadá"&gt;La corte suprema de Canadá&lt;/h3&gt;
&lt;p&gt;La corte suprema de Canadá tiene nueve miembros. Canadá es una federación, con diez provincias. Sin embargo, de esos nueve miembros, tres tienen que ser de Quebec, una de las diez provincias. Esto es por ley, &lt;em&gt;tiene&lt;/em&gt; que ser así. Por convención, o sea, la ley no obliga, pero &lt;em&gt;así es como se hace&lt;/em&gt;, otros tres son de Ontario. Los tres que quedan se reparten entre otras provincias, pero también hay convenciones de cómo se reparten.&lt;/p&gt;
&lt;h2 id="compartiendo-capital"&gt;Compartiendo capital&lt;/h2&gt;
&lt;p&gt;Chandigarh es una ciudad en India. Es la capital del estado de Punjab. Y del estado de Haryana. ¿En cuál de los dos estados está? Excelente pregunta. En ninguno, es su propio territorio aparte (del cual, técnicamente, también es la capital).&lt;/p&gt;
&lt;p&gt;Chandigarh tiene varios lugares interesantes. El Palacio de Justicia alberga al Tribunal Superior de Panjab y Haryana, que es el máximo órgano judicial de los dos estados (sí, es el mismo). La Asamblea Legislativa de Haryana sesiona en el Palacio de la Asamblea, mientras que por su parte la Asamblea Legislativa de Punjab sesiona en el Palacio de la Asamblea. Sí, el mismo edificio. En cuanto al ejecutivo, el Edificio del Secretariado alberga oficinas para los Secretarios en Jefe de ambos estados, aunque hasta donde puedo ver, son oficinas separadas.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cosas-aprendidas-en-agosto/chandigarh.jpg"
 alt="Foto del palacio de la asamblea de Chandigarh"&gt;&lt;figcaption&gt;
 &lt;p&gt;El Palacio de la Asamblea. Lo comparten porque es lindo. Foto de Wikipedia.&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Por su parte, los gobernadores tienen cada uno su propia residencia, desde donde gobiernan. Eso sí: están las dos una al lado de la otra, no sea cosa que se extrañen mucho.&lt;/p&gt;
&lt;p&gt;Todo esto viene de cuando se construyó Chandrigarh, para ser la capital de Punjab. La capital anterior, Lahore, es parte de Pakistán, así que después de la partición necesitaban una nueva, y construyeron Chandrigarh. Pero después resultó que los hablantes del idioma punjabi querían su propio estado, y después de un poco de lío, en 1966 Punjab se separó en tres: una parte el estado actual de Punjab, otra Haryana (de mayoría hablantes de hindi), y el resto al territorio de Himachal Pradesh (que hoy es un estado). Ahí se planteó el tema de qué hacer con Chandrigarh. Provisoriamente, mientras se decidían, quedó como un territorio de la unión (una parte de India gobernada directamente por el gobierno central). Bueno, la cosa es que nunca se decidieron, así que ya no es tan provisorio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo escuché&lt;/strong&gt;: &lt;a href="https://en.wikipedia.org/wiki/Chandigarh" target="_blank"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="suiza-y-las-naciones-unidas"&gt;Suiza y las Naciones Unidas&lt;/h2&gt;
&lt;p&gt;Solemos pensar en las Naciones Unidas como un organismo que reúne a todos los países soberanos del mundo. Obviamente no siempre fue así, e incluso hoy hay montones de casos borde que no están en las Naciones Unidas: estados parcialmente reconocidos (como Kosovo por ejemplo), o el caso de la República de China, que dice ser el único gobierno legítimo de todo China pero sólo controla Taiwán. También está el caso raro del Vaticano, que es una anomalía histórica.&lt;/p&gt;
&lt;p&gt;Pero lo interesante es que hay países que se unieron mucho más tarde de lo que uno esperaría. Por ejemplo, Suiza. Suiza recién se unió a las Naciones Unidas en el 2002. El tema es que la constitución suiza no les permitía unirse, por aquello de la neutralidad. Hicieron un plebiscito, y ganó el unirse, por relativamente poco (54% aprobó). El anterior intento, en 1982, había perdido por bastante.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo escuché&lt;/strong&gt;: &lt;a href="https://en.wikipedia.org/wiki/2002_Swiss_referendums" target="_blank"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="nintendo-no-quiere-cosas-chanchas-en-los-passwords"&gt;Nintendo no quiere cosas chanchas en los passwords&lt;/h2&gt;
&lt;p&gt;Muchos juegos viejos de Nintendo te permitían &amp;ldquo;guardar&amp;rdquo; el progreso en forma de un password que después podías meter y volver al punto en el que estaba. Este &amp;ldquo;password&amp;rdquo; en realidad tenía toda la información, codificada en base 32. Pero si usás algún sistema estándar (hay varios) para generar strings en base 32, corrés el riesgo de que te aparezcan malas palabras (por ejemplo, usando el sistema del RFC 3548, el string en base 32 MIERDA corresponde a los bytes 62 09 11 (en hexadecimal)). A Nintendo no le caía simpática la idea de poder generar accidentalmente malas palabras, así que usó una codificación que no contiene vocales, y problema solucionado (a menos que haya algún idioma con malas palabras sin vocales, capaz que serbio, si tengo que adivinar).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo escuché&lt;/strong&gt;: &lt;a href="https://en.wikipedia.org/wiki/Base32#Video_games" target="_blank"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="los-caracoles-de-meo-salvan-vidas-tal-vez"&gt;Los caracoles de meo salvan vidas, tal vez&lt;/h2&gt;
&lt;p&gt;Me topé con una &lt;a href="https://infosec.exchange/@0xabad1dea/116974261430210180" target="_blank"&gt;publicación en Mastodon&lt;/a&gt; que dice que en Ámsterdam se construyeron más baños públicos con el objetivo explícito de reducir la cantidad de muertes de turistas borrachos que se caen a un canal intentando orinar. No lo pude confirmar, no encontré nada al respecto, pero sí me encontré con que en Ámsterdam hay urinales públicos con forma de espiral. Se llaman &amp;ldquo;plaskrul&amp;rdquo;, que podría también ser el nombre de una banda de Death Metal. La parte superior de la espiral tiene agujeritos para que puedas ver si está ocupado, y también podés verle la cara al que está meando.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cosas-aprendidas-en-agosto/plaskrul.jpg"
 alt="Foto de un plaskrul en Ámsterdam"&gt;&lt;figcaption&gt;
 &lt;p&gt;Esta foto se puede &lt;em&gt;oler&lt;/em&gt;. Foto de Wikipedia.&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Es una excelente idea, si no te importa la privacidad, y el olor no te molesta, y siempre que puedas mear parado, lo cual deja afuera, ya de entrada, a la mitad de la población. Obviamente esta desigualdad ha generado protestas, y por eso están en proceso de sacarlos de a poco y reemplazarlos por baños públicos más usables por todo el mundo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo escuché&lt;/strong&gt;: &lt;a href="https://en.wikipedia.org/wiki/Pee_curl" target="_blank"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="muerte-al-tirano"&gt;Muerte al tirano&lt;/h2&gt;
&lt;p&gt;El 16 de agosto de 1972 un grupo de militares marroquíes decidieron intentar derrocar al rey. Un grupo de aviones atacaron el avión en el que viajaba el rey, y ocho personas murieron. El ataque paró cuando desde el avión del rey alguien transmitió el mensaje &amp;ldquo;¡El tirano ha muerto!&amp;rdquo; Pero el rey no estaba muerto, había sido el rey mismo que mandó ese mensaje, y con eso logró sobrevivir, y mantenerse en el trono.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo escuché&lt;/strong&gt;: En Wikipedia.&lt;/p&gt;
</description></item><item><title>Montreal, pero en verano</title><link>https://nachof.blog/posts/2026/montreal-pero-en-verano/</link><pubDate>Fri, 28 Aug 2026 08:32:53 -0300</pubDate><guid>https://nachof.blog/posts/2026/montreal-pero-en-verano/</guid><description>&lt;p&gt;Resulta que tuve la oportunidad de viajar a Montreal de nuevo, pero esta vez en verano. De allá, que es invierno de acá. El cambio de temperatura cambia de dirección, pero no lo esquivás tan fácil.&lt;/p&gt;
&lt;p&gt;Todas las ciudades cambian mucho dependiendo de la temporada. Por ejemplo, Montevideo en invierno es una ciudad gris, triste, húmeda, y fría, mientras que en verano hace calor y no hay nadie. Pero Montreal cambia bastante más.&lt;/p&gt;
&lt;p&gt;Primero que nada, vamos a aclarar algo: el verano en Montreal es &lt;em&gt;verano&lt;/em&gt;. Bastantes personas me dijeron &amp;ldquo;ah, pero es Canadá, verano allá qué es, tipo 10 grados&amp;rdquo;, y no, a ver, Montreal no es el polo norte. Montreal está a 45 grados de latitud norte. Eso es más al sur que muchas capitales europeas, como Paris (48 grados), Berlin (52), Viena (48), y ni que hablar de los países nórdicos. Sí, Montreal en invierno es &lt;em&gt;frío&lt;/em&gt;, pero en verano hace calor, porque le da bastante el sol.&lt;/p&gt;
&lt;p&gt;Ahora, en cuanto a las diferencias, obviamente la temperatura es la más grande, y es lo que causa todas las demás diferencias. Eso, y la duración del día. Al estar más lejos del ecuador que nosotros, en Montreal hay más diferencia entre la longitud del día en verano y en invierno que la que hay en Uruguay.&lt;/p&gt;
&lt;p&gt;Esa diferencia enorme en temperatura genera una cultura interesante. Básicamente, en invierno la ciudad entera está en un estado de hibernación. Nadie se mueve, no hay nada afuera, excepto algunas pistas de patinaje. La gente anda por la calle, principalmente, para ir del punto A al punto B. Durante esos meses, guardan toda la energía, y cuando llega el verano &lt;em&gt;explota&lt;/em&gt;.&lt;/p&gt;
&lt;div style="float: right"&gt;
 
	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/peatonal-pride.jpg"&gt;
	&lt;/figure&gt;


&lt;/div&gt;

&lt;p&gt;En verano, todo el mundo está afuera. La mitad de las calles se vuelven peatonales, con muebles instalados en el medio de la calle, y eventos culturales por todos lados. En la zona en la que estaba (en el barrio latino), había por lo menos tres festivales de música al aire libre. Cerca del puerto viejo, que era una desolación blanca en invierno, en verano estaba lleno de gente, con un montón de actividades, ferias artesanales, comida, etc.&lt;/p&gt;
&lt;div style="clear: both;"&gt;&lt;/div&gt;

&lt;h2 id="fotos-comparativas"&gt;Fotos comparativas&lt;/h2&gt;
&lt;p&gt;Una cosa que hice fue ir a algunos de los lugares que había fotografiado en enero, y sacar fotos desde ángulos similares.&lt;/p&gt;
&lt;figure class="flexfigure"&gt;
 &lt;div class="flexfigurecontent"&gt;
 
	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/calle-enero.jpg"&gt;
	&lt;/figure&gt;

	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/calle-julio.jpg"&gt;
	&lt;/figure&gt;


 &lt;/div&gt;
 &lt;figcaption&gt;Esta es la calle frente a Le Valet D&amp;#39;Coeur&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure class="flexfigure"&gt;
 &lt;div class="flexfigurecontent"&gt;
 
	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/edificios-enero.jpg"&gt;
	&lt;/figure&gt;

	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/edificios-julio.jpg"&gt;
	&lt;/figure&gt;


 &lt;/div&gt;
 &lt;figcaption&gt;La vista desde la oficina (se mudaron tres pisos más abajo)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure class="flexfigure"&gt;
 &lt;div class="flexfigurecontent"&gt;
 
	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/montroyal-enero.jpg"&gt;
	&lt;/figure&gt;

	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/montroyal-julio.jpg"&gt;
	&lt;/figure&gt;


 &lt;/div&gt;
 &lt;figcaption&gt;Cerca de Mont Royal&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure class="flexfigure"&gt;
 &lt;div class="flexfigurecontent"&gt;
 
	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/parque-enero.jpg"&gt;
	&lt;/figure&gt;

	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/parque-julio.jpg"&gt;
	&lt;/figure&gt;


 &lt;/div&gt;
 &lt;figcaption&gt;Un parquecito cerca de la oficina&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure class="flexfigure"&gt;
 &lt;div class="flexfigurecontent"&gt;
 
	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/plaza-enero.jpg"&gt;
	&lt;/figure&gt;

	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/plaza-julio.jpg"&gt;
	&lt;/figure&gt;


 &lt;/div&gt;
 &lt;figcaption&gt;Una placita en la esquina del hotel en que me quedé en enero&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure class="flexfigure"&gt;
 &lt;div class="flexfigurecontent"&gt;
 
	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/puertoviejo-enero.jpg"&gt;
	&lt;/figure&gt;

	
	&lt;figure
	 
	 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/puertoviejo-julio.jpg"&gt;
	&lt;/figure&gt;


 &lt;/div&gt;
 &lt;figcaption&gt;El Puerto Viejo de Montreal, una zona bastante turística&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="un-poco-de-go"&gt;Un poco de go&lt;/h2&gt;
&lt;p&gt;Esta vez, lamentablemente, no pude ir a las &lt;a href="https://nachof.blog/posts/2026/juegos-de-mesa-en-montreal/#downtown-montreal-board-game-group"&gt;reuniones de juegos de mesa de la Universidad Concordia&lt;/a&gt;, no me coincidían las fechas. Lo que sí pude fue encontrar un par de grupos que se juntaban a jugar go. Uno de ellos era en un parque, y como el día estaba muy lindo, pude ir y jugar un partido.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/baduk_1.jpg"&gt;
&lt;/figure&gt;


&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/montreal-pero-en-verano/baduk_2.jpg"&gt;
&lt;/figure&gt;

&lt;p&gt;La verdad que re bien la gente, y uno de ellos tenía una remera re linda de &amp;ldquo;Go is harmony&amp;rdquo;, y me dijo dónde comprarla, así que al día siguiente pasé por la tienda y me compré una.&lt;/p&gt;
&lt;p&gt;Los otros grupos que encontré se juntaban entre semana, lo cual era un problema para mí, porque entre semana iba a estar trabajando. Pero bueno, algo es algo.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Estuvo divertido poder ver una faceta totalmente diferente de la misma ciudad. Según me dijeron, en otoño es todavía más linda la ciudad, así que esperemos que en algún momento tenga esa oportunidad.&lt;/p&gt;
</description></item><item><title>The Message from Deep Space</title><link>https://nachof.blog/posts/2026/the-message-from-deep-space/</link><pubDate>Wed, 26 Aug 2026 08:30:18 -0300</pubDate><guid>https://nachof.blog/posts/2026/the-message-from-deep-space/</guid><description>
&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/the-message-from-deep-space/cover.jpg"
 alt="Título del juego The Message from Deep Space"&gt;
&lt;/figure&gt;

&lt;p&gt;Dejá de leer esto y andá a jugar a &lt;a href="https://store.steampowered.com/app/4080030/The_Message_from_Deep_Space/" target="_blank"&gt;The Message from Deep Space&lt;/a&gt;. En serio, vale la pena. Y la verdad es que tampoco quiero spoilear mucho, vale la pena entrar al juego a ciegas.&lt;/p&gt;
&lt;p&gt;The Message from Deep Space es un juego de puzzles/programación. Es, posiblemente, el juego más nerd que jugué en mi vida. Sí, más nerd que los de &lt;a href="https://en.wikipedia.org/wiki/Zachtronics" target="_blank"&gt;Zachtronics&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La premisa del juego es que encontraron un meteorito en la Antártida (o en el Ártico, o capaz que en el fondo del mar, la verdad es que no dí mucha bola a eso, tampooco es importante). El tema es que el meteorito transmite una señal de radio durante unos 0.8 segundos, después para, y de nuevo, así sucesivamente. Así que armaron un equipo con un programador (Bautista), una lingüista (Collins), un radioastrónomo (Akers), y un traductor (acá es donde entrás vos) para intentar entender qué es lo que está pasando.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/the-message-from-deep-space/message.jpg"
 alt="Screenshot del juego, con un mensaje con tres números secuenciales recibidos"&gt;&lt;figcaption&gt;
 &lt;p&gt;Uno de los primeros mensajes&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Así que arrancás el juego, y hacés lo obvio: le respondés con la misma frecuencia: ¡y cambia! Así que de nuevo, lo obvio, respondés con la frecuencia nueva, y cambia de nuevo. Y de a poco vas estableciendo una comunicación básica, y construyendo conceptos, y cuando te querés acordar, estás recibiendo e interpretando información. Cada mensaje espera una respuesta, y cuando enviás la respuesta correcta, tenés un mensaje nuevo.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/the-message-from-deep-space/newsequence.jpg"
 alt="Screenshot del juego: nueva secuencia recibida"&gt;&lt;figcaption&gt;
 &lt;p&gt;Así se ve el éxito&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;El juego es eso, un puzzle atrás de otro. Hasta que&amp;hellip; bueno, no sé, no lo terminé, todavía. En el medio, tenés unos cuantos diálogos entre los distintos personajes, y cada tanto una reunión de los cuatro con Doppler, el jefe, que está ansioso por saber si lograron descifrar el mensaje.&lt;/p&gt;
&lt;p&gt;Algunos comentarios en Steam dicen que el final del juego se vuelve un poco tedioso. No sabría decirlo. Por ahora, alrededor de 400 mensajes en el juego, no me pasó.&lt;/p&gt;
&lt;p&gt;The Message from Deep Space está en &lt;a href="https://store.steampowered.com/app/4080030/The_Message_from_Deep_Space/" target="_blank"&gt;Steam&lt;/a&gt; a $310 (uruguayos), y vale cada peso.&lt;/p&gt;





&lt;span style="font-size: 1.5em; color: yellow; font-weight: 50;"&gt;

★

★

★

★

★



&lt;/span&gt;

</description></item><item><title>Historial de navegación en Yacy</title><link>https://nachof.blog/posts/2026/historial-de-navegacion-en-yacy/</link><pubDate>Fri, 21 Aug 2026 20:05:13 -0300</pubDate><guid>https://nachof.blog/posts/2026/historial-de-navegacion-en-yacy/</guid><description>&lt;p&gt;Hace un tiempo vengo usando &lt;a href="https://docs.searxng.org/" target="_blank"&gt;SearXNG&lt;/a&gt;. Es un &amp;ldquo;metabuscador&amp;rdquo;: no tiene su propia base de datos, sino que delega la búsqueda a distintos buscadores, compila los resultados, y te arma la lista. La principal ventaja que tiene es que te sacás de arriba todos los resúmenes de &amp;ldquo;IA&amp;rdquo; de Google y esas cosas. La principal desventaja es&amp;hellip; bueno, todo lo demás. Al final del día, seguís teniendo los resultados de los grandes buscadores. La mitad de los motores fallan un día sí y otro también, porque se rompe el scraping. La búsqueda en Google hace un tiempo que ya no me funciona. O sea, todo una tranza. Por eso entré a mirar Yacy con un poco más de cariño.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://yacy.net/" target="_blank"&gt;Yacy&lt;/a&gt; es un buscador peer-to-peer, abierto, que te permite no depender de servicios de terceros. En su configuración por defecto, se conecta a otras instancias de Yacy, y mantiene un índice distribuido. Está bastante bien la idea. Podés, si querés, indexar los sitios que quieras para que estén en tu instancia local. El problema es que, en su configuración por defecto, los resultados son una cagada. Así que no, no lo estoy usando en su configuración por defecto. Estoy, esencialmente, ignorando la parte de &amp;ldquo;peer to peer&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Podés configurar Yacy para que tenga un índice local, nada más. Las búsquedas son sólo dentro de los sitios que vos indexes, no pide resultados al resto de la red. Obviamente como buscador primario eso tiene sus problemas: nunca vas a encontrar algo &amp;ldquo;nuevo&amp;rdquo; así. Pero una cosa que he notado es que muchas veces termino yendo a los mismos sitios. Las mismas documentaciones. Claro, podría tener marcadores y buscar ahí, pero eso requeriría que guarde marcadores y los mantenga organizados. Eso no sería yo.&lt;/p&gt;
&lt;p&gt;Entonces el plan es seguir usando SearXNG, y también tener mi propio Yacy corriendo, y que sea una más de las fuentes de SearXNG. Mi idea es &amp;ldquo;alimentar&amp;rdquo; Yacy con mi historial de navegación.&lt;/p&gt;
&lt;p&gt;Yacy tiene una forma sencilla de hacer eso: tiene un proxy HTTP. Simplemente levantás Yacy, activás el proxy, apuntás tu navegador a ese proxy, y listo, todo lo que visites se agrega al índice de Yacy. Es excelente, si sos de esas personas que está usando internet por allá por los 90, cuando nadie usaba conexiones encriptadas, y todo viajaba por texto plano, y el proxy podía ver lo que pasaba por ahí. El proxy de Yacy simplemente no funciona con HTTPS.&lt;/p&gt;
&lt;p&gt;Así que necesitaba otra solución. Lo que quería era leer mi historial de Firefox de las últimas 24 horas, y mandarle la lista de URLs a Yacy para que las indexe.&lt;/p&gt;
&lt;p&gt;Lo primero de todo es instalar &lt;a href="https://github.com/Mikescher/firefox-sync-client" target="_blank"&gt;ffsclient&lt;/a&gt; para poder leer tu historial de Firefox desde el sync. Después de hacer &lt;code&gt;ffsclient login&lt;/code&gt;, ya está, ya podés hacer requests. Para traerte el historial, el comando es &lt;code&gt;ffsclient history list&lt;/code&gt;. Eso acepta un par de parámetros, para decirle desde cuándo, el formato, y esas cosas.&lt;/p&gt;
&lt;p&gt;Después, es sólo hacer un scriptcito:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 7
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 8
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt; 9
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;10
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;11
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;12
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;13
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;14
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;15
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;16
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;17
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;18
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;19
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;20
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;21
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;22
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;23
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;24
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;25
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;26
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;27
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;28
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;29
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;30
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;31
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;32
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;33
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;34
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;35
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;36
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;37
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;38
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;39
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;40
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;41
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;42
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;43
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;44
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;45
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;46
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;47
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;48
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;49
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SINCE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;25 hours ago&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CUTOFF_DATE_UNIX&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date --date&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$SINCE&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; +&lt;span style="color:#e6db74"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CUTOFF_DATE_ISO&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date --date&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;@&lt;/span&gt;$CUTOFF_DATE_UNIX&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; -Iseconds&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;read -r -d &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt; JQ_SCRIPT &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt;-SCRIPT
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; .[] |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; {uri, visit: .visits[]} |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; {uri, visit_date: .visit.date, visit_unix: .visit.date_unix} |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; select(.visit_unix &amp;gt;= $CUTOFF_DATE_UNIX) |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; .uri
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;SCRIPT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;URL_LIST&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;ffsclient history list --after &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$CUTOFF_DATE_ISO&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; --format json |&lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; jq -r &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$JQ_SCRIPT&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; |&lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; sort | uniq |&lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; grep -Ev &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$EXCLUDE_REGEXP&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;API_URL&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$YACY_HOST&lt;span style="color:#e6db74"&gt;/Crawler_p.html&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -XPOST -F crawlingDomMaxPages&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10000&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F range&lt;span style="color:#f92672"&gt;=&lt;/span&gt;wide &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F intention&lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F sitemapURL&lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingQ&lt;span style="color:#f92672"&gt;=&lt;/span&gt;off &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingMode&lt;span style="color:#f92672"&gt;=&lt;/span&gt;url &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingFile&lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F mustnotmatch&lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingFile%24file&lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingstart&lt;span style="color:#f92672"&gt;=&lt;/span&gt;Neuen%20Crawl%20starten &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F mustmatch&lt;span style="color:#f92672"&gt;=&lt;/span&gt;.* &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F createBookmark&lt;span style="color:#f92672"&gt;=&lt;/span&gt;on &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F bookmarkFolder&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/crawlStart &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F xsstopw&lt;span style="color:#f92672"&gt;=&lt;/span&gt;on &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F indexMedia&lt;span style="color:#f92672"&gt;=&lt;/span&gt;on &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingIfOlderUnit&lt;span style="color:#f92672"&gt;=&lt;/span&gt;hour &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F cachePolicy&lt;span style="color:#f92672"&gt;=&lt;/span&gt;iffresh &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F indexText&lt;span style="color:#f92672"&gt;=&lt;/span&gt;on &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingIfOlderCheck&lt;span style="color:#f92672"&gt;=&lt;/span&gt;on &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F bookmarkTitle&lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingDomFilterDepth&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingDomFilterCheck&lt;span style="color:#f92672"&gt;=&lt;/span&gt;on &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingIfOlderNumber&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingDepth&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; -F crawlingURL&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$URL_LIST&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; --digest --user $YACY_CREDENTIALS &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;&lt;/span&gt; $API_URL
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Básicamente, lo que hace ese script es traer todos los registros del historial modificados desde hace 25 horas (la superposición es intencional, así nada queda afuera), filtra por aquellos que &lt;em&gt;realmente&lt;/em&gt; fueron visitados (los modificados son muchos más), elimina duplicados, y manda la lista a Yacy para que indexe.&lt;/p&gt;
&lt;p&gt;Para que funcione, necesita tres variables de entorno:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;YACY_HOST&lt;/code&gt;: el host de Yacy (por ejemplo, &lt;code&gt;http://localhost:8090&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EXCLUDE_REGEXP&lt;/code&gt;: expresión regular para excluir sitios. Por ejemplo, no quiero indexar resultados de búsqueda, así que acá meto google, duckduckgo, y mi instancia de SearXNG.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;YACY_CREDENTIALS&lt;/code&gt;: usuario y password de Yacy, para poder indexar. Por ejemplo: &lt;code&gt;admin:password&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Luego de que tenés autenticado &lt;code&gt;ffsclient&lt;/code&gt;, es cuestión de meter un cron y listo. Tenés todos los días tu historial agregado a Yacy.&lt;/p&gt;
&lt;p&gt;Todavía tengo un drama con algunos sitios atrás de Cloudflare (en particular, &lt;a href="https://boardgamegeek.com/" target="_blank"&gt;BGG&lt;/a&gt; no lo puedo indexar), pero para la mayoría, funciona.&lt;/p&gt;
</description></item><item><title>Nitrokey (o cualquier otra llave de hardware) para bloquear o desbloquear la computadora</title><link>https://nachof.blog/posts/2026/nitrokey-o-cualquier-otra-llave-de-hardware-para-bloquear-o-desbloquear-la-computadora/</link><pubDate>Fri, 14 Aug 2026 20:45:49 -0300</pubDate><guid>https://nachof.blog/posts/2026/nitrokey-o-cualquier-otra-llave-de-hardware-para-bloquear-o-desbloquear-la-computadora/</guid><description>&lt;p&gt;Hace un tiempo comenté que &lt;a href="https://nachof.blog/posts/2026/claves-ssh-en-nitrokey/"&gt;tengo una llave USB Nitrokey&lt;/a&gt;, y la estaba usando para guardar claves SSH. La verdad que viene re bien para eso. También la estoy usando para un par de TOTP que quiero tener más seguros que en Keepass, o en el teléfono (y además es más cómodo si ya lo voy a tener enchufado siempre para usar git).&lt;/p&gt;
&lt;p&gt;Lo que había visto hace un tiempo era una sugerencia en el sitio de Nitrokey de bloquear la computadora cuando desenchufás la llave. Y bueno, combinando eso con la posibilidad de desbloquear, me sirve.&lt;/p&gt;
&lt;h2 id="bloquear-cuando-sacás-la-llave"&gt;Bloquear cuando sacás la llave&lt;/h2&gt;
&lt;p&gt;Esta es la más fácil. El sitio de Nitrokey &lt;a href="https://docs.nitrokey.com/nitrokeys/features/misc/automatic-screen-lock" target="_blank"&gt;tiene una explicación&lt;/a&gt;. Pero lo que no dice, y que capaz que te sirve, es que podés usar el mismo método para bloquear la computadora (o potencialmente hacer otras cosas) cuando desenchufás &lt;em&gt;cualquier&lt;/em&gt; cosa, no sólo una llave Nitrokey. Podés hacer que suene un grito de dolor desgarrador cuando desenchufás el teclado si querés. No sé por qué lo harías, pero si querés, podés.&lt;/p&gt;
&lt;p&gt;El truco está en udev. Lo que tenés que hacer es agregar una regla en udev para que cuando desenchufes el dispositivo se bloquee la pantalla. El ejemplo en la web es específico de Gnome, pero se puede modificar un poco. Yo lo cambié para usar &lt;code&gt;loginctl&lt;/code&gt;. El tema es que &lt;code&gt;loginctl lock-sessions&lt;/code&gt; requiere contraseña, y obviamente eso no me sirve. Pero, por alguna razón, &lt;code&gt;loginctl lock-session &amp;lt;id&amp;gt;&lt;/code&gt; sí funciona sin contraseña. Así que hice esto:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sessionids&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;loginctl -j list-sessions | jq &lt;span style="color:#e6db74"&gt;&amp;#39;.[] | select(.class == &amp;#34;user&amp;#34; and .user == &amp;#34;nacho&amp;#34;) | .session | tonumber&amp;#39;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;loginctl lock-session $sessionids
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La primera línea se encarga de listar todas las sesiones abiertas por mí, y la segunda línea las bloquea a todas.&lt;/p&gt;
&lt;p&gt;Por partes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;loginctl -j list-sessions&lt;/code&gt; lista todas las sesiones abiertas, y devuelve en formato json (&lt;code&gt;-j&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jq '.[] | select(.class == &amp;quot;user&amp;quot; and .user == &amp;quot;nacho&amp;quot;) | .session | tonumber'&lt;/code&gt; procesa el json, pasándolo por varios selectores.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.[]&lt;/code&gt; toma cada elemento del array raíz y lo procesa aparte&lt;/li&gt;
&lt;li&gt;&lt;code&gt;select(...)&lt;/code&gt; descarta los elementos que no coincidan con la condición (en este caso, quiero sólo &lt;em&gt;mis&lt;/em&gt; sesiones, y que sean de la clase &lt;em&gt;user&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.session&lt;/code&gt; selecciona el atributo &lt;code&gt;session&lt;/code&gt;, que tiene el id de sesión&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tonumber&lt;/code&gt; por último convierte el string a un número, para que la salida de &lt;code&gt;jq&lt;/code&gt; no me lo muestre entre comillas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loginctl lock-session $sessionids&lt;/code&gt; simplemente pasa los ids de sesiones seleccionados antes (típicamente sólo uno) a &lt;code&gt;loginctl lock-session&lt;/code&gt;, y bloquea la sesión.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo siguiente es decirle a udev que corra ese script cuando desenchufo el dispositivo. Para eso, hay que crear un archivo en &lt;code&gt;/etc/udev/rules.d/&lt;/code&gt;. El nombre no importa, siempre que termine en &lt;code&gt;.rules&lt;/code&gt; (yo usé lo que sugiere Nitrokey, &lt;code&gt;85-nitrokey.rules&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;El contenido:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ACTION==&amp;#34;remove&amp;#34;, ENV{PRODUCT}==&amp;#34;20a0/42b2/108&amp;#34; RUN+=&amp;#34;/home/nacho/bin/lock-sessions.sh&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Eso le dice que cuando se desconecte (&lt;code&gt;ACTION==&amp;quot;remove&amp;quot;&lt;/code&gt;) el dispositivo con el id de producto especificado, corra el script de arriba.&lt;/p&gt;
&lt;p&gt;El dato que falta es el número mágico del id de producto. La página de Nitrokey lista algunos, pero obviamente para otros casos no es lo que querés. Para saber cuál es el id de producto que tenés que poner, podés monitorear eventos con este comando:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;udevadm monitor --property --udev
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Desenchufá, y fijate lo que sale. Te va a tirar un montón de basura, pero entre todo eso, está lo que buscás.&lt;/p&gt;
&lt;p&gt;Y con eso ya está: la computadora se bloquea automáticamente cuando sacás la llave.&lt;/p&gt;
&lt;h2 id="desbloquear-con-la-llave"&gt;Desbloquear con la llave&lt;/h2&gt;
&lt;p&gt;Esto es un poco más complicado. Obviamente no podemos hacer lo mismo pero con &lt;code&gt;loginctl unlock-session&lt;/code&gt;, porque entonces se desbloquearía con &lt;em&gt;cualquier&lt;/em&gt; llave Nitrokey, y eso es algo que &lt;em&gt;definitivamente&lt;/em&gt; no queremos.&lt;/p&gt;
&lt;p&gt;Así que hay que remangarse y laburar un poco con PAM&lt;/p&gt;
&lt;h3 id="quién-es-pam-y-qué-hace"&gt;Quién es PAM y qué hace&lt;/h3&gt;
&lt;p&gt;PAM es Pluggable Authentication Modules, y se encarga de un montón de cosas alrededor de logins en Linux. Como su nombre lo indica, PAM se basa en una serie de módulos que configurás para que corran en secuencia. Algunos módulos validan autenticación (que es lo que nos interesa ahora), y otros hacen otras cosas, como preparar la sesión después de que te autenticaste.&lt;/p&gt;
&lt;p&gt;PAM se configura con archivos en &lt;code&gt;/etc/pam.d&lt;/code&gt;, donde cada servicio que use PAM va a tener su propia configuración (o, si no existe, usar una por defecto).&lt;/p&gt;
&lt;h3 id="configuración-de-pam"&gt;Configuración de PAM&lt;/h3&gt;
&lt;p&gt;Para poder usar la llave de hardware para desbloquear tenemos que, primero, tener el módulo correcto. En Arch, el paquete es &lt;code&gt;pam-u2f&lt;/code&gt;, en otras distribuciones posiblemente sea igual o similar.&lt;/p&gt;
&lt;p&gt;Después de instalarlo, tenés que generar una clave en el dispositivo. El directorio por defecto tiene el nombre &lt;code&gt;Yubico&lt;/code&gt; por razones históricas. Se puede cambiar, pero es más sencillo mantenerlo.&lt;/p&gt;
&lt;p&gt;Tenés que correr lo siguiente:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p ~/.config/Yubico
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pamu2fcfg &amp;gt; ~/.config/Yubico/u2f_keys
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Eso te va a pedir el PIN del dispositivo y que confirmes tocándolo, y te crea la clave.&lt;/p&gt;
&lt;p&gt;Con eso ya tenés lo necesario para que el módulo de PAM te autentique.&lt;/p&gt;
&lt;h3 id="autenticación-para-desbloquear"&gt;Autenticación para desbloquear&lt;/h3&gt;
&lt;p&gt;Tenés que editar (o crear) el archivo &lt;code&gt;/etc/pam.d/kde&lt;/code&gt;. O, bueno, lo que corresponda en tu caso. Yo uso KDE, y ese archivo guarda la configuración para el bloqueador de sesión de KDE. Tené en cuenta que esto es sólo para desbloquear: el login está en una configuración aparte.&lt;/p&gt;
&lt;p&gt;Si mirás en distintos lugares en internet vas a tener distintas configuraciones. En el caso de login, hay includes importantes que tenés que mantener. En el caso de desbloquear la sesión, puede ser algo bien mínimo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;auth sufficient pam_unix.so try_first_pass nullok
auth sufficient pam_u2f.so cue nouserok origin=pam://hostname appid=pam://hostname

auth [default=die] pam_faillock.so authfail
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Los distintos módulos configurados en PAM se ejecutan en secuencia, por lo que el orden es importante.&lt;/p&gt;
&lt;p&gt;Lo que dice esta configuración es: primero, probá con usuario/password de unix; si no funciona, probá con u2f (la llave), y si no funciona, no dejes entrar al usuario.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;auth&lt;/code&gt; dice que es una configuración para autenticación. &lt;code&gt;sufficient&lt;/code&gt; dice &amp;ldquo;si este método funciona, con esto alcanza&amp;rdquo;. Si querés que sean requeridos, cambialo por &lt;code&gt;required&lt;/code&gt;. Luego de eso, viene el módulo, y luego las opciones.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pam_unix.so&lt;/code&gt; es el módulo de autenticación &amp;ldquo;estándar&amp;rdquo;. Básicamente, usuario y contraseña. La opción &lt;code&gt;nullok&lt;/code&gt; le dice que no explote si no hay contraseña, y &lt;code&gt;try_first_pass&lt;/code&gt; usa la contraseña que pusiste, pero no la &amp;ldquo;consume&amp;rdquo;, la puede usar el siguiente módulo (lo vamos a usar en la siguiente sección).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pam_u2f.so&lt;/code&gt; es el módulo que autentica la llave de hardware. Las opciones &lt;code&gt;origin&lt;/code&gt; y &lt;code&gt;appid&lt;/code&gt; dicen cómo identificar la clave, ahí poné tu hostname. &lt;code&gt;cue&lt;/code&gt; dice que te muestre el texto que te dice que toques la llave. &lt;code&gt;nouserok&lt;/code&gt; hace que no falle si no tenés la llave enchufada.&lt;/p&gt;
&lt;p&gt;La última línea dice que si no llegó nada autorizado a ese punto, que termine el proceso.&lt;/p&gt;
&lt;h3 id="pero-esto-se-ve-un-poco-inseguro"&gt;Pero esto se ve un poco inseguro&lt;/h3&gt;
&lt;p&gt;El problema es que puede venir cualquiera, sacarte la llave mientras dormís, y desbloquear tu computadora. Sí, es un riesgo, con esta configuración todo lo que necesitan es acceso físico a la llave y la computadora a la vez.&lt;/p&gt;
&lt;p&gt;Para mejorar, podés decirle que te pida el PIN. Para eso, agregá a las opciones del módulo la opción &lt;code&gt;pinverification=1&lt;/code&gt;. Y acá es donde entra en juego aquel &lt;code&gt;try_first_pass&lt;/code&gt;. Si tenés la llave enchufada, podés en lugar de tu contraseña poner el PIN de la llave. El módulo &lt;code&gt;pam_unix.so&lt;/code&gt; va a probarlo como contraseña y va a fallar (a menos que tu PIN y tu contraseña sean idénticos, en cuyo caso andá y cambiá la contraseña ahora). Pero después cuando &lt;code&gt;pam_u2f.so&lt;/code&gt; vaya a autenticar, va a agarrar ese PIN y usarlo para validar con la llave, y listo, entraste. Y siempre, en cualquier caso, podés usar tu contraseña normal.&lt;/p&gt;
&lt;h3 id="el-resultado-final"&gt;El resultado final&lt;/h3&gt;
&lt;p&gt;El proceso para desbloquear va a depender un poco de cómo configuraste, si con &lt;code&gt;pinverification=1&lt;/code&gt; o no.&lt;/p&gt;
&lt;p&gt;En cualquier caso, para desbloquear te va a mostrar el cuadro de contraseña. Si ponés tu contraseña, genial, entraste, hasta ahí como siempre. Si ponés una contraseña incorrecta, o vacía, va a pasar al siguiente paso.&lt;/p&gt;
&lt;p&gt;Si no tenés la llave enchufada, falla, obviamente. Si la tenés enchufada, y &lt;code&gt;pinverification=1&lt;/code&gt; no está (o es &lt;code&gt;pinverification=0&lt;/code&gt;), te va a pedir que toques la llave y listo, entrás. Pero si tenés el &lt;code&gt;pinverification&lt;/code&gt; habilitado, va a usar lo que pusiste en el campo de contraseña como PIN, y si funciona, te va a pedir que toques la llave, y listo.&lt;/p&gt;
&lt;h3 id="para-login"&gt;Para login&lt;/h3&gt;
&lt;p&gt;Podés hacer lo mismo para login, pero ahí hay que tener cuidado con los &lt;code&gt;includes&lt;/code&gt; que hacés. Para desbloquear no se necesita mucho, pero al crear una sesión nueva (o sea, hacer login), muchas veces hay otros procesos que necesitan correrse en este punto, y están configurados en &lt;code&gt;/etc/pam.d&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Pero tal vez más importante: si usás KDE, seguramente tenés kwallet corriendo. Kwallet se desbloquea al inicio de sesión &lt;em&gt;usando tu contraseña&lt;/em&gt;. Si hacés login sin contraseña (por ejemplo, sólo con tu llave física), kwallet &lt;em&gt;no se va a desbloquear&lt;/em&gt;, porque no tiene con qué. Entonces el resultado es que entrás a KDE, e inmediatamente te salta un cuadro de kwallet pidiendo tu contraseña. No es ideal, sobre todo si tu idea era justamente &lt;em&gt;no tener que teclear la contraseña&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Podés configurar kwallet para que guarde todo sin encriptar, y no necesite tu contraseña, pero obviamente no es lo ideal. No ahondé mucho en otras posibilidades porque no tengo problema con poner la contraseña para login.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Y listo, con eso ya te queda todo andando. Desenchufás la llave, y se bloquea la computadora. La enchufás, le das enter un par de veces (o ponés el PIN y le das enter), tocás la llave, y se desbloquea. Todo lindo y seguro.&lt;/p&gt;
</description></item><item><title>Cosas aprendidas en julio</title><link>https://nachof.blog/posts/2026/cosas-aprendidas-en-julio/</link><pubDate>Fri, 07 Aug 2026 20:28:30 -0300</pubDate><guid>https://nachof.blog/posts/2026/cosas-aprendidas-en-julio/</guid><description>&lt;h2 id="popurrí-de-tortugas-marinas"&gt;Popurrí de tortugas marinas&lt;/h2&gt;
&lt;div style="float: right"&gt;
 

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cosas-aprendidas-en-julio/tamar.jpg"
 alt="Foto de tortugas marinas en Projeto Tamar"&gt;
&lt;/figure&gt;


&lt;/div&gt;

&lt;p&gt;Aprendí varias cosas sobre tortugas marinas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las tortugas marinas perciben el campo magnético de la Tierra, así&lt;br&gt;
como también campos magnéticos característicos de distintas regiones, y usan esto para navegar.&lt;/li&gt;
&lt;li&gt;Usando esa navegación viajan distancias enormes, entre muchos puntos de América del Sur, el Caribe, y África.&lt;/li&gt;
&lt;li&gt;Las tortugas marinas evolucionaron a partir de tortugas terrestres que, al igual que los antepasados de delfines y ballenas, dijeron &amp;ldquo;al carajo con esto de estar seco, me vuelvo al mar&amp;rdquo;. Sí, parece un poco obvio cuando lo pensás, pero nunca me había puesto a pensarlo.&lt;/li&gt;
&lt;li&gt;El caparazón de las tortugas tiene capas de queratina, piel, y hueso, siendo el hueso la más gruesa. Ese hueso es la columna vertebral y las costillas de la tortuga.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo aprendí&lt;/strong&gt;: Visitando el &lt;a href="https://www.tamar.org.br/" target="_blank"&gt;Projeto Tamar&lt;/a&gt;, una organización dedicada a preservar a las tortugas marinas y su hábitat.&lt;/p&gt;
&lt;h2 id="los-baianos-de-bahia"&gt;Los baianos de Bahia&lt;/h2&gt;
&lt;p&gt;El estado de Bahia, en Brasil, tiene un nombre que me rechinaba un poco, porque en portugués la palabra para bahía es baía, así con tilde en la i y sin h. Pero el estado no tiene tilde, y sí tiene h. Resulta que Bahia tiene su nombre desde una época en la cual la forma de escribir bahía en portugués era bahia, y quedó por tradición, un poco como México. Y un poco como México, los hablantes de la variante europea del idioma usan una grafía diferente, y en Portugal al estado lo escriben Baía.&lt;/p&gt;
&lt;p&gt;Por otro lado, el gentilicio sí utiliza la forma moderna, y entonces de Bahia vienen los baianos.&lt;/p&gt;
&lt;p&gt;En cuanto a por qué Bahia se llama así, es por la Bahía de Todos los Santos (Baía de Todos os Santos), que es una bahía enorme en la costa de la cual está la ciudad de Salvador, o, como se llamaba originalmente, São Salvador da Bahia de Todos os Santos. Los colonialistas europeos tenían una especie de fetiche por los nombres extremadamente largos para sus ciudades.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo aprendí&lt;/strong&gt;: Mirando Wikipedia, a partir de la curiosidad provocada por esa h.&lt;/p&gt;
&lt;h2 id="puertacracia"&gt;Puertacracia&lt;/h2&gt;
&lt;div style="float: right"&gt;
 

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cosas-aprendidas-en-julio/escalerasmontreal.jpg"
 alt="Foto de escaleras exteriores en Montreal"&gt;
&lt;/figure&gt;


&lt;/div&gt;

&lt;p&gt;En Montreal hay un montón de edificios bajos donde para acceder a los apartamentos del segundo piso (o incluso del tercer piso) hay una escalera exterior. Es algo que llama bastante la atención, teniendo en cuenta que durante la mitad del año esas escaleras van a estar congeladas y ser bastante peligrosas.&lt;/p&gt;
&lt;p&gt;La explicación que me dieron es que deriva de una época donde para votar había que ser dueño de la propiedad, y en Montreal esto incluía una propiedad con acceso directo a la calle. Si sos dueño de un apartamento que sale a un hall común y de ahí a la calle, no votás. Si tu apartamento sale directo a la calle, podés votar.&lt;/p&gt;
&lt;p&gt;La explicación es re divertida, pero lamentablemente no parece ser cierta. La &lt;em&gt;verdadera&lt;/em&gt; explicación es un poco más sencilla: un montón de inmigrantes británicos en el siglo 19 venían de lugares donde ese tipo de escaleras era común, y simplemente importaron la costumbre. Y después quedó, y hoy es una característica pintoresca de la ciudad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo escuché&lt;/strong&gt;: La teoría sobre las elecciones, me la contaron en Montreal. Pero investigando, &lt;a href="https://www.atlasobscura.com/articles/montreal-plexes-outdoor-staircases" target="_blank"&gt;encontré otra información&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="unas-papitas-para-acompañar-la-cerveza"&gt;Unas papitas para acompañar la cerveza&lt;/h2&gt;
&lt;p&gt;Acá en Uruguay es bastante común que un grupo de adolescentes se junte a tomar algo en una plaza. O al menos, era común hace casi treinta años, cuando &lt;em&gt;yo&lt;/em&gt; era adolescente. Hoy capaz que ya no es así. Soy viejo y ya no tengo idea. Igual, el tema es que no en todos lados es común. En muchos lugares directamente es ilegal tomar alcohol en espacios públicos. Montreal es una ciudad que tiene ese tipo de prohibiciones, aunque tiene excepciones. En el caso de Montreal, es perfectamente legal tomar alcohol en un parque, &lt;em&gt;siempre que sea parte de una comida&lt;/em&gt;. Es decir, no podés ir al parque y abrir una cerveza y entrar a tomar así sin más, eso es ilegal. Pero si vas con la cerveza y un paquete de papas chips, bueno, eso es totalmente diferente, y perfectamente legal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo escuché&lt;/strong&gt;: En Montreal, y &lt;a href="https://www.mtlblog.com/montreal-parks-public-drinking-law" target="_blank"&gt;confirmado&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="acá-no-abandona-nadie"&gt;Acá no abandona nadie&lt;/h2&gt;
&lt;p&gt;En el Reino Unido hay una ley que prohibe a los legisladores renunciar a su banca. Te eligieron, y eso no es un privilegio, es un deber, y tenés que bancártela si no te gusta. Al menos esa es la idea. Pero claro, la realidad es que los legisladores &lt;em&gt;quieren&lt;/em&gt; renunciar a veces. Ya sea porque quieren irse para la casa, porque quieren boicotear el parlamento, porque los eligieron para el parlamento escocés y prefieren ir para ahí, o porque quieren hacer un poco de teatro político, los legisladores inevitablemente van a querer renunciar.&lt;/p&gt;
&lt;p&gt;Entonces, ¿cómo hacen si no pueden legalmente? Bueno, resulta que, por otra ley, no podés ser legislador y a la vez tener un puesto que dependa de la corona. Se considera que son cosas incompatibles, entonces si aceptás un puesto que dependa de la corona, chau, pa fuera del parlamento.&lt;/p&gt;
&lt;p&gt;La cuestión es, claro, que ese tipo de puestos no crecen en los árboles. Entonces lo que hay es un par de puestos reservados específicamente para eso. &lt;em&gt;Crown Steward and Bailiff of the Chiltern Hundreds&lt;/em&gt; y &lt;em&gt;Crown Steward and Bailiff of the Manor of Northstead&lt;/em&gt; son puestos que no sirven para nada, aparentemente, sólo que le permiten a un legislador renunciar. Hay dos, para ir alternándolos. No me queda claro por qué querés alternarlos, porque al final podés asignar a uno por unos minutos y después asignar a otro, que es lo que pasó en 1985 cuando varios legisladores unionistas de Irlanda del Norte renunciaron en protesta contra el acuerdo de paz. Pero bueno, capaz que es para que no quede &lt;em&gt;tan&lt;/em&gt; evidente.&lt;/p&gt;
&lt;p&gt;Entonces, renunciar es ilegal. No se puede, no está permitido, bajo ningún concepto. Excepto si querés renunciar. En ese caso vas y le pedís al gobierno que te asigne a uno de esos puestos así podés renunciar. Supongo que técnicamente te pueden decir &amp;ldquo;no, jodete&amp;rdquo;, pero entiendo que eso simplemente no se hace, es como una cortesía.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo escuché&lt;/strong&gt;: Lo leí mientras investigaba para el post de &lt;a href="https://nachof.blog/posts/2026/clacton-2026/"&gt;Clacton 2026&lt;/a&gt;. &lt;a href="https://en.wikipedia.org/wiki/Resignation_from_the_House_of_Commons_of_the_United_Kingdom" target="_blank"&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="prestame-tus-hijos"&gt;Prestame tus hijos&lt;/h2&gt;
&lt;p&gt;Una de las formas con las que Roma se aseguraba la lealtad de pueblos conquistados era mediante rehenes: agarraban a los hijos de familias notables y los criaban en Roma. Esto tenía por supuesto la insinuación de que si sus familias se rebelaban, bueno, las cosas podían salir mal. Según entiendo, en general no era la idea usarlos literalmente como rehenes, en cuanto a que no hay muchos casos documentados de que realmente los ejecutaran. Pero si criás a un futuro lider de otra ciudad, lo vas &amp;ldquo;romanizando&amp;rdquo;, y bueno, eso también es muy valioso.&lt;/p&gt;
&lt;p&gt;Mientras tanto, en Partia (o sea, Irán), tenían una costumbre similar pero ligeramente diferente. Los arsácidas, la familia real persa, mandaba a sus hijos a criarse con sus vasallos más poderosos. Era en cierta manera una forma de mostrar su favor, y mantenerlos tranquilos.&lt;/p&gt;
&lt;p&gt;El tema interesante es cuando esas dos costumbres se chocaron. Los arsácidas mandaron a algunos de sus hijos a ser criados en Roma. Roma vio esto como un reconocimiento de la superioridad romana, mientras que en la corte parta lo veían como lo opuesto: un reconocimiento de la superioridad parta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dónde lo escuché&lt;/strong&gt;: En el podcast &lt;a href="https://americanprestigepod.com/episodes/3991359924" target="_blank"&gt;American Prestige&lt;/a&gt;, donde entrevistaron a Jake Nabel, historiador y &lt;a href="https://pourdavoud.ucla.edu/news/the-arsacids-of-rome-misunderstanding-in-roman-parthian-relations-now-available-for-purchase/" target="_blank"&gt;autor de un libro al respecto&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Pequeña actualización sobre Strange New Worlds</title><link>https://nachof.blog/posts/2026/pequea-actualizacion-sobre-strange-new-worlds/</link><pubDate>Thu, 06 Aug 2026 17:08:09 -0300</pubDate><guid>https://nachof.blog/posts/2026/pequea-actualizacion-sobre-strange-new-worlds/</guid><description>&lt;p&gt;El otro día comenté sobre &lt;a href="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/"&gt;la complicidad de Pike en un genocidio en el primer episodio de Strange New Worlds temporada 4&lt;/a&gt;. Una de las pequeñas cosas que me quedó fue la posibilidad de que estuviesen preparando algo sobre esto:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Capaz que todo esto es para iniciar un arco en el cual Pike lidia con la culpa, y busca una forma de redimirse. Me parece un poco difícil volver de complicidad con un genocidio, pero bueno, capaz que es el plan.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bueno, el segundo episodio ya salió, y es una &amp;ldquo;nave fantasma&amp;rdquo;, y como es clásico en este tipo de episodios, es una excelente oportunidad para visitar los traumas de los personajes. Ideal para el tema de Pike y el genocidio, ¿no? Pues no, sólo Spock, La&amp;rsquo;An, y Kirk (el original, que ni siquiera es personaje relevante en esta serie) van a la nave fantasma. Así que nada que ver con el genocidio. Pero al menos sabemos que Kirk extraña a su hijo.&lt;/p&gt;
&lt;p&gt;Capaz que el tercer episodio, entonces. Bueno, también salió, y es Ortegas y Scotty en un Dude, Where&amp;rsquo;s My Shuttle en un hotel all inclusive al que van para descansar, porque la tripulación está estresada. ¿Por el genocidio? No, no, acá lo importante es que Scotty y Ortegas no se llevan bien, que no recuerdo que fuera importante antes de hace dos episodios donde introdujeron esa pelea para poder resolverla en este.&lt;/p&gt;
&lt;p&gt;Así que no, parecería que no hay planes de hacer nada con eso.&lt;/p&gt;
</description></item><item><title>Rose/House - Arkady Martine</title><link>https://nachof.blog/posts/2026/rosehouse/</link><pubDate>Tue, 04 Aug 2026 19:17:39 -0300</pubDate><guid>https://nachof.blog/posts/2026/rosehouse/</guid><description>
&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/rosehouse/cover.jpg"
 alt="Portada de Rose/House"&gt;
&lt;/figure&gt;

&lt;p&gt;Arkady Martine es la escritora atrás de la serie de Teixcalaan (A Memory Called Empire, A Desolation Called Peace). A Memory Called Empire es un libro que me gustó pila, la verdad. A Desolation Called Peace no tanto, pero igual me gustó bastante. Así que cuando agarré Rose/House tenía expectativas bastante altas. Y a veces eso juega un poco en contra.&lt;/p&gt;
&lt;p&gt;Rose House es una casa &amp;ldquo;embrujada&amp;rdquo; (&amp;quot;&lt;em&gt;haunt&lt;/em&gt;&amp;quot; es efectivamente el término que usa el libro), pero no en el sentido de que hay fantasmas, sino en el sentido de que la casa es una inteligencia artificial avanzada, con su propia personalidad y todo. No es que la casa tenga una inteligencia artificial que la maneje, esto es diferente: la casa &lt;em&gt;es&lt;/em&gt; la inteligencia artificial. Rose House es una persona, con ideas propias, cuyo cuerpo es la casa. Su creador era un arquitecto brillante, Basit Deniau, que murió hace un tiempo, y ahora su ex-protegida, la doctora Selene Gisil, es la única persona que tiene permitido entrar, cuatro días al año. El problema es cuando aparece un cuerpo muerto adentro de Rose House y la detective Maritza Smith tiene que investigar qué pasó.&lt;/p&gt;
&lt;p&gt;El libro no es &lt;em&gt;malo&lt;/em&gt;, pero simplemente no es totalmente para mí. Creo que al final sólo lo terminé porque es corto (115 páginas). Tiene montones de vueltas sobre arquitectura que realmente me aburre. No sé si son cosas correctas; capaz que lo agarra un arquitecto de verdad y tira el libro contra la pared, o algo. Pero el tema es que tiene un montón, y &lt;em&gt;personalmente&lt;/em&gt; no me resulta un tema interesante.&lt;/p&gt;
&lt;p&gt;También me dejó un poco insatisfecho el final. Siento como que nada de lo que pasa en el libro se resuelve, el libro termina, pero no parece que la &lt;em&gt;historia&lt;/em&gt; termine, simplemente queda ahí, cada personaje se va por su lado, hay una especie de mini epílogo para cada uno, y ahí queda. No sé, esperaba un poco más.&lt;/p&gt;
&lt;p&gt;Así que bueno, no sé, si te gusta la ciencia ficción sobre arquitectura, leelo. Ni idea si tiene sentido desde ese punto de vista, pero mal escrito no está. Yo, por mi parte, sigo con la esperanza de que salga un tercer libro de Teixcalaan.&lt;/p&gt;





&lt;span style="font-size: 1.5em; color: yellow; font-weight: 50;"&gt;

★

★


⯪


☆

☆

&lt;/span&gt;

</description></item><item><title>Cuando Strange New Worlds hizo un genocidio (pero no lo pienses mucho)</title><link>https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/</link><pubDate>Wed, 29 Jul 2026 19:40:24 -0300</pubDate><guid>https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/</guid><description>
&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/pikebaddies.jpg"
 alt="Captura del sketch de &amp;#34;are we the baddies?&amp;#34;, con la cara de Pike pegada arriba"&gt;
&lt;/figure&gt;

&lt;p&gt;Esto va a tener spoilers para el primer episodio de la cuarta temporada de Star Trek: Strange New Worlds. Si querés evitar esos spoilers, dejá de leer ahora.&lt;/p&gt;
&lt;p&gt;Strange New Worlds es posiblemente, de las series de Star Trek modernas, la que más &amp;ldquo;se siente&amp;rdquo; como las series viejas. Es una serie de episodios independientes, si bien a veces hay arcos narrativos conectando. Es decir, no es como Picard o Discovery, donde hay una historia a lo largo de toda la temporada, sino que se parece más a The Next Generation. En general, si no te asquea demasiado el exceso de referencias y personajes de la serie original, es una serie bastante entretenida.&lt;/p&gt;
&lt;p&gt;Hace poco se estrenó el primer episodio de la cuarta temporada, y decir que me dejó un poco decepcionado es bastante poco.&lt;/p&gt;
&lt;p&gt;El episodio tiene sus problemas. No voy a entrar en esa cuestión de que los viajes en el tiempo en Star Trek a veces causan cambios, y a veces son bucles estables, dependiendo del humor del guionista. Ni tampoco en las imposibilidades físicas de partes de la trama. Eso son cosas normales en Star Trek y no me molestan generalmente. Mientras la historia sea buena, yo qué sé, hacé lo que quieras. Pero este episodio tiene problemas más molestos. Entre otras cosas, los diálogos son totalmente artificiales, y al final tiene una escena de &amp;ldquo;miren todo lo que podemos hacer con CGI&amp;rdquo; que es re meh, ok, dinosaurios, muy lindo, pero no me aporta nada. Igual, lo peor de todo es el genocidio.&lt;/p&gt;
&lt;h2 id="la-trama"&gt;La trama&lt;/h2&gt;
&lt;p&gt;La historia arranca con Pike comentando que está haciendo un montón de &lt;em&gt;away missions&lt;/em&gt;, y Una le dice que afloje un cacho, que necesita descansar, que está haciendo eso para no pensar en la muerte de su pareja, y que además ella también quiere a ir a un planeta en algún momento, así que tiene que hacerse cargo. También hay una escena donde le ofrecen un ascenso a Pike, que dice que no quiere, y le dicen que bueno, que lo piense. Un poco de desarrollo de personajes, si se quiere.&lt;/p&gt;
&lt;p&gt;Ahí mandan a la Enterprise a ver una tormenta espacial, o algo así. Es peligroso, dice Spock, pero nos vamos a mantener lejos, dice Pike, y aparte es divertido, le dice Pelia, pero bueno, establecimos que la tormenta es peligrosa, pero igual planean mantenerse lejos, así que no pasa nada. El tema es que cuando están ahí cerca recolectando datos y esas cosas científicas que hace la Enterprise cuando el capítulo no se trata (sólo) de phasers y torpedos, reciben una llamada de emergencia, que parece venir de adentro de la tormenta. Es Star Trek, obviamente se mandan para adentro, y resulta que la señal viene de una boya subespacial, y no pueden localizar a la nave de origen. Al final la tormenta es demasiado potente y tienen que intentar salir, a último momento como corresponde, y cuando salen resulta que no saben dónde están. Ah, y la mitad de las cosas de la nave no funcionan. Necesitan iridio para arreglarlo, y no tienen suficiente a mano. Por suerte, están en un sistema estelar con tres planetas habitables, y el que tienen más cerca parece que tiene un depósito de iridio, así que genial, a mandar un shuttle.&lt;/p&gt;
&lt;p&gt;En el shuttle van Una, Ortegas, y La&amp;rsquo;An, pero no pueden aterrizar cerca porque razones de la trama para forzarlas a caminar un cacho, porque es importante que exploren un poco el planeta. Cuando aterrizan, resulta que en la dirección del iridio hay un volcán enorme, y detectan señales de vida enormes. La caminata va a estar linda.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/volcan.jpg"
 alt="Screenshot del volcán"&gt;&lt;figcaption&gt;
 &lt;p&gt;&amp;ldquo;¡Espéreme Señor Frodo!&amp;rdquo;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Mientras tanto, en órbita, aparece una nave y agarra a la Enterprise con rayos tractores, y se lo empiezan a llevar. Sin armas, sin motores, sin escudos, por suerte sí les funciona la radio, y el traductor universal, así que se intentan comunicar con la nave desconocida, y Pike les dice &amp;ldquo;che, gente, parece que sin querer nos agarraron la nave, ¿nos pueden soltar?&amp;rdquo;. Del otro lado le responde la comandante Kassel, que le dice &amp;ldquo;eh, no, amigo, la nave ahora es nuestra, manejate&amp;rdquo;. Pike le dice que si no lo sueltan que va a venir toda la flota con el poder de la Federación y va a haber lío, y Kassel le dice que ni idea quién es esa Federación, que por acá no andan, y que necesitan los recursos de la nave para pelear contra los Dol&amp;rsquo;Drm.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/captura.jpg"
 alt="Screenshot de la Enterprise capturada"&gt;&lt;figcaption&gt;
 &lt;p&gt;All your Enterprise are belong to us&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;A todo esto, Spock logra determinar dónde están: resulta que están en nuestro sistema solar, y que el planeta habitable, todo verde y hermoso al que los lleva la nave de Kassel es Marte. El tema no es &lt;em&gt;dónde&lt;/em&gt; están, sino &lt;em&gt;cuándo&lt;/em&gt; (¿se puede hacer una historia de viajes en el tiempo en televisión sin usar ese cliché?). La tormenta espacial los mandó 65 millones de años al pasado. Mientras tanto, La&amp;rsquo;An, Una, y Ortegas están en la Tierra, y tenemos esa otra escena cliché donde ven un dinosaurio y quedan asombradas como si en todos su viajes por el universo nunca hubiesen visto animales más grandes que una persona y esto fuese Parque Jurásico.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/earthallalong.jpg"
 alt="Screenshot de Los Simpson, el capítulo donde está el musical de Planet of the Apes"&gt;&lt;figcaption&gt;
 &lt;p&gt;Oh my god, I was wrong! It was Earth all along!&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Pike logra convencer a Kassel de hablar, porque Kassel dice &amp;ldquo;pará, ¿tienen armas? queremos las armas&amp;rdquo;. Kassel va a la Enterprise, y se asombra de la diversidad de especies que hay. Pike le dice que esa es la fuerza de la Federación, y Kassel le dice que todo bien pero ellos no están peleando contra los Dol&amp;rsquo;Drm. Pike dice que tienen que intentar comunicarse. Kassel le muestra una imagen de Marte con Valles Marineris resaltado como una herida abierta en el planeta, y le dice esto fueron los Dol&amp;rsquo;Drm, vinieron y entraron a romper todo, los logramos repeler, pero a un costo de dos millones de muertos. Pike le dice no importa, hay que hablarlo, capaz que se puede resolver, Kassel dice no, son insectos (y es Star Trek, así que es literal, no sólo retórica genocida), intentamos hablar y no logramos nada. Pike la lleva a hablar con Uhura y con el Kirk de Temu, que le explican que la Federación conoce muchas especies inteligentes de insectos, y que la comunicación es difícil pero posible. Kassel no se ve muy convencida.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/kasseldesconfiada.jpg"
 alt="Screenshot: Kassel viéndose desconfiada"&gt;&lt;figcaption&gt;
 &lt;p&gt;No sé, Pike, esta armonía entre especies, ¿está en el cuarto con nosotros en este momento?&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Mientras tanto en la Tierra, Una logra aturdir a un tiranosaurio con un phaser. Encuentran la fuente de iridio: una nave estrellada. Agarran un contenedor de iridio intacto, La&amp;rsquo;An le pega una piña a un velocirraptor, y vuelven al shuttle.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/punch.jpg"
 alt="Screenshot de La&amp;#39;An pegándole a un dinosaurio"&gt;&lt;figcaption&gt;
 &lt;p&gt;Pimba&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Pero en el Enterprise, resulta que Kassel se está queriendo llevar un contenedor de antimateria robado de ingeniería. Pike la intenta convencer de que no, porque obviamente está preocupado por los cambios que pueda meter en la línea temporal, pero Kassel dice no sé, somos tres, vos uno, vos ves. Los marcianos se llevan la antimateria, y se van en su nave. A todo esto, Spock dice algo como que podrían intentar volver a su tiempo, pero necesitarían la energía de una supernova.&lt;/p&gt;
&lt;p&gt;Cuando Una y compañía llegan con el iridio, entran a arreglar todos los sistemas, y a perseguir a la nave de Kassel, que va derecho al planeta de los Dol&amp;rsquo;Drm. Le mandan un mensaje, dice &amp;ldquo;no jodan, ya me decidí, los voy a matar a todos&amp;rdquo;. Y va con su antimateria derecho al quinto planeta del sistema solar. No, no Júpiter, otro quinto planeta. Se supone que es un poco una revelación, pero a mí me parecía obvio que iba a haber un planeta ahí teniendo en cuenta lo de &amp;ldquo;tres planetas habitables&amp;rdquo;, aunque después pensándolo un poco me di cuenta que capaz que la idea era que pensáramos en Venus como el tercer planeta, y a mí ni se me cruzó por la cabeza.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/planeta5.jpg"
 alt="Screenshot: Sol V en la pantalla del Enterprise"&gt;&lt;figcaption&gt;
 &lt;p&gt;Boludo, ¡tiene anillos!&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Bueno, la cuestión es que van a toda velocidad, la Enterprise toda atada con alambre de las reparaciones, y sin la antimateria que se robó Kassel. La nave de Kassel se está acercando al planeta, se va a sacrificar para asegurarse de no errarle. Cuando está suficientemente cerca, bum, lanzan el torpedo con la antimateria. Pike pregunta si hay chance de frenarlo sin detonarlo, le dicen que sí, pero que todavía no están en rango, así que siguen a toda velocidad, hasta que finalmente están a rango suficiente, y van a disparar y frenar el torpedo, pero a último momento Pike le viene una corazonada y dice no, no, no disparen.&lt;/p&gt;
&lt;p&gt;El torpedo le pega al planeta, y explota en pedacitos, presumiblemente llevándose a todos los Dol&amp;rsquo;Drm, y a Kassel también. Spock dice che, podemos usar la fuerza de esta explosión para volver a casa, y ta todo bien, terrible explosión, pero ¿no habías dicho la energía de una supernova? Si fuese la energía de una supernova no era chau planeta, era chau sistema solar. Ok, mentí, a veces algunas de las ridiculeces científicas &lt;em&gt;sí&lt;/em&gt; me molestan un poco. Pero no importa.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/boom.jpg"
 alt="Screenshot: planeta explotando"&gt;
&lt;/figure&gt;

&lt;p&gt;La cuestión es que usando la energía de la explosión vuelven al presente, o sea, al futuro, para nosotros, pero el presente para ellos. Un pedazo de planeta de Dol&amp;rsquo;Drm vuela hacia la tierra y choca contra un área sospechosamente similar a Yucatán. Y sí, quién no la veía venir&amp;hellip; De vuelta en el presente futuro, resumen lo que pasó: el pedazo de quinto planeta que dio contra la Tierra hizo el cráter de Chicxulub, los pocos pedazos del planeta que quedaron en la zona después de estabilizarse formaron el cinturón de asteroides, y los cambios gravitatorios provocados por todo esto causaron que el clima de Marte eventualmente cambiara a lo que hoy conocemos. Entonces fue todo al pedo, pregunta Pike, los marcianos se murieron todos. No, no, dice M&amp;rsquo;Benga, le hicimos un test de ADN a los marcianos, y resulta que hay rastros de su ADN en muchísimas especies de la galaxia. Los marcianos eventualmente se extinguieron, sí, pero antes prosperaron.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/chicxulub.jpg"
 alt="Screenshot: Spock explicando cómo se extinguieron los dinosaurios"&gt;&lt;figcaption&gt;
 &lt;p&gt;Para la próxima clase, lean el capítulo sobre la formación del sistema solar&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Hay una charla sobre lo complicado de los viajes en el tiempo, y otra escena de Pike con el almirante, donde Pike se muestra un poco incómodo con todo, y el almirante le dice &amp;ldquo;Chris, everything happened as it meant to. That much is clear. So don&amp;rsquo;t overthink it.&amp;rdquo;. Hay un poco de charla sobre mantener todo en secreto, como cada vez que hacen algo que incomoda con la continuidad de las series anteriores, Pike rechaza el ascenso, pero pide uno para Una, y después están todos en el bar charlando sobre dinosaurios, y tenemos una escena CGI de dinosaurios para rellenar los últimos momentos.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/dinos.jpg"
 alt="Screenshot: dinos CGI"&gt;&lt;figcaption&gt;
 &lt;p&gt;Suena música de Jurassic Park&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Hay un par de cosas más que pasan en el capítulo, pero son chicas y no muy relevantes para hablar del genocidio, que era lo que quería hacer. Así que&amp;hellip;&lt;/p&gt;
&lt;h2 id="hablemos-del-genocidio"&gt;Hablemos del genocidio&lt;/h2&gt;
&lt;p&gt;No es la primera vez que Star Trek muestra un genocidio. Pero en general son mostrados como algo malo. La Federación, en general, intenta detenerlos por todos los medios posibles. Excepto Section 31, pero bueno, eso es todo un tema aparte. Pero hay &lt;em&gt;algo&lt;/em&gt; en este episodio que, al menos para mí, &lt;em&gt;se siente&lt;/em&gt; diferente.&lt;/p&gt;
&lt;p&gt;A ver, no soy un crítico de televisión experto ni mucho menos. En general mi experiencia con televisión, películas, y libros es más que nada un &amp;ldquo;me gusta/no me gusta&amp;rdquo;. A veces hay cosas que me ponen un poco incómodo, pero no siempre sé explicar &lt;em&gt;exactamente cuál&lt;/em&gt; es el problema. Es decir, ¿por qué este capítulo y no otros?&lt;/p&gt;
&lt;h3 id="todos-saben-que-es-genocidio"&gt;Todos saben que es genocidio&lt;/h3&gt;
&lt;p&gt;No, por supuesto que no usan la palabra, pero saben lo que pasó. Pike intenta más de una vez convencer a Kassel de que no lo haga. No es un extremo accidental en un momento tenso. Es planificado, es deliberado, es &lt;em&gt;con intención&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id="la-intención"&gt;La intención&lt;/h3&gt;
&lt;p&gt;Un tema con la definición legal de genocidio es que se basa en gran parte en la &lt;em&gt;intención&lt;/em&gt;. Vos podés matar millones de personas, pero si no era tu &lt;em&gt;intención&lt;/em&gt; eliminar a un grupo étnico específico, no es genocidio. Por otro lado, tenés el caso de Srebrenica, donde las muertes no fueron tantas comparativamente, pero la intención estaba tan clara que el consenso legal y académico es que es genocidio.&lt;/p&gt;
&lt;p&gt;El tema con la intención es que es re difícil de probar. Pero en este caso, está clarísimo. Kassel &lt;em&gt;quiere&lt;/em&gt; matar a todos los Dol&amp;rsquo;Drm. Lo hace deliberadamente. Dice que son insectos y que es imposible hablar con ellos. Pike le ofrece ayuda para comunicarse, pero Kassel lo ignora. En otro episodio de Star Trek, eso la marcaría como la mala indiscutible. En este, Pike dice que en su lugar, hubiese hecho lo mismo.&lt;/p&gt;
&lt;h3 id="yo-hubiese-hecho-lo-mismo"&gt;&amp;ldquo;Yo hubiese hecho lo mismo&amp;rdquo;&lt;/h3&gt;
&lt;p&gt;Pero no, Pike, no es cierto. Capaz que &lt;em&gt;Section 31&lt;/em&gt; hubiese hecho lo mismo. De hecho, sabemos que es así, porque al final de la primera temporada de Discovery &lt;em&gt;intentaron&lt;/em&gt; hacerlo. Pero los capitanes protagonistas de Star Trek nunca hacen eso: Burnham evitó el genocidio, no dijo &amp;ldquo;yo hubiese hecho lo mismo&amp;rdquo;. De todos los capitanes en una serie de Star Trek, el único que realmente puedo creer que &lt;em&gt;sí&lt;/em&gt; hubiese hecho lo mismo es Lorca, pero claro, Lorca es del mirror universe, así que ni siquiera lo contaría.&lt;/p&gt;
&lt;p&gt;Y en el caso particular es todavía peor, porque todavía quedaban chances de diálogo que explorar. O sea, chances presentadas en el mismo episodio. Pike se pasó todo el capítulo intentando hacer que Kassel &lt;em&gt;no&lt;/em&gt; cometiera genocidio, no puede al final simplemente decir &amp;ldquo;yo hubiese hecho lo mismo&amp;rdquo;.&lt;/p&gt;
&lt;h3 id="y-los-doldrm"&gt;¿Y los Dol&amp;rsquo;Drm?&lt;/h3&gt;
&lt;p&gt;Otra constante en las historias de Star Trek que tocan el tema genocidio es que las víctimas aparecen. Acá, no, nada. Lo único que vemos de los Dol&amp;rsquo;Drm es la nave que se estrelló en la Tierra, y un segundo o algo así en la pantalla cuando Spock dice que hay miles de millones en su planeta. Ningún Dol&amp;rsquo;Drm da su versión de la historia. Todo lo que tenemos es lo que nos dice Kassel. Ni siquiera la versión oficial de los marcianos. Hasta donde sabemos, Kassel podría ser una fanática xenófoba.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/doldrm.jpg"
 alt="Screenshot: Dol&amp;#39;Drm en la pantalla del Enterprise"&gt;&lt;figcaption&gt;
 &lt;p&gt;Ni una entrada de Wikipedia ameritaban&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Y la descripción que nos da Kassel de los Dol&amp;rsquo;Drm no es para nada caritativa. Cuando cuenta qué pasó en Marte, nos dice que una nave Dol&amp;rsquo;Drm se estrelló, y empezaron a &amp;ldquo;alimentarse del planeta&amp;rdquo;, y la única forma de pararlos fue matarlos a todos. Pike le pregunta si probaron hablar, y Kassel dice que no, que no se puede hablar, son insectos, sólo entienden la fuerza. Y sí, es un poco jodido que ese lenguaje parece muy similar a lo que usan los perpetradores de genocidio en nuestro planeta, ¿no? Ta, sí, en este caso, los Dol&amp;rsquo;Drm &lt;em&gt;sí&lt;/em&gt; son insectos, literalmente. pero igual.&lt;/p&gt;
&lt;p&gt;Aunque, pará, a ver un poco&amp;hellip;&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/doldrm-2.jpg"
 alt="Detalle del screenshot anterior, donde se ve que dice &amp;#34;arachnid species&amp;#34;"&gt;&lt;figcaption&gt;
 &lt;p&gt;Kassel, vieja racista&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;No, ni siquiera son insectos. Son arácnidos. Que sí, que es parecido, lo que quieras, pero no es lo mismo.&lt;/p&gt;
&lt;p&gt;Y sobre que estrellaron la nave, teniendo en cuenta que la nave que se estrelló en la Tierra no dañó ni siquiera los alrededores inmediatos (y estaba bastante intacta), no parece que el modus operandi de los Dol&amp;rsquo;Drm sea estrellar naves y romper todo. ¿Y si fue un accidente?&lt;/p&gt;
&lt;p&gt;En cuanto a que son una amenaza para Marte, ¿estamos tan seguros? La única nave Dol&amp;rsquo;Drm que vemos está estrellada en la Tierra, y es una nave colonia, ni siquiera está armada. La única otra nave que aparece es marciana. No hay naves Dol&amp;rsquo;Drm atacándolos. No hay un sitio a Marte. Ni siquiera aparecen naves Dol&amp;rsquo;Drm para defender el planeta cuando Kassel va a matarlos a todos. Si tenemos que guiarnos por lo que vemos en la pantalla, son los marcianos los que controlan el sistema solar. Los Dol&amp;rsquo;Drm están en su planeta. Incluso siendo totalmente genorosos con lo que nos dijo Kassel, y aceptando que sí mataron intencionalmente a los dos millones de marcianos, parecería que en este momento no son una amenaza, e incluso sin poder comunicarse, los marcianos los tienen contenidos.&lt;/p&gt;
&lt;h3 id="largoplacismo"&gt;Largoplacismo&lt;/h3&gt;
&lt;p&gt;Al final Pike decide no frenar el torpedo de antimateria, porque se da cuenta de que en su tiempo, el quinto planeta no existe, y por lo tanto esto es lo que se supone que tiene que pasar. Claro, Pike es un viajero del tiempo, y sabe con seguridad lo que va a pasar dentro de 65 millones de años. Lo que va a pasar en los millones de años en el medio no, de eso no tiene idea, pero igual, él quiere preservar su futuro, lo cual, bueno, dado el contexto de que está en el pasado y sabe lo que viene, capaz que se entiende. Por suerte es un tema sin paralelor en la vida real, ¿verdad?&lt;/p&gt;
&lt;p&gt;Bueno&amp;hellip; no. Justamente en este momento está un poco de moda cierta ideología entre las peores personas en las que puedas pensar (gente como Elon Musk, o los empresarios estafadores de criptomonedas) que rima bastante con lo que plantea este episodio. Esta gente te dice que no importa si hacemos mierda el planeta y matamos al 90% de la población de la Tierra, porque acá lo que importa es asegurar un futuro en el cual la humanidad se expanda por las estrellas. Comparado con esos trillones de personas, los menos de 10 mil millones que morirían por el colapso climático son una anécdota, nada más. Lo que importa, argumentan, es el futuro lejano. Esos trillones de personas que nunca nacieron, que capaz que nunca nacen, son más, y por lo tanto más importantes, que los miles de millones que viven hoy. Por supuesto, que la forma de aplicar esas ideas justo resulten en que ellos puedan seguir teniendo sus vidas de lujo mientras el resto del planeta se pelea por una rebanada de pan es sólo una casualidad, seguro que no tiene nada que ver con el por qué tienen esa ideología.&lt;/p&gt;
&lt;p&gt;Yo qué sé, es posible que no tenga nada que ver. No es la primera vez que se usa ese trope en historias de viajes en el tiempo. Es, en cierta forma, una versión llevada al extremo más extremo de aquello de &amp;ldquo;no podés matar a Hitler y evitar el Holocausto sin cambiar toda la historia&amp;rdquo;. Pero este extremo es un poco demasiado, me parece. Miles de millones de personas muertas, por un beneficio en 65 millones de años.&lt;/p&gt;
&lt;p&gt;De nuevo, no digo que los guionistas estuviesen apuntando a esas ideas. Capaz que ni se les pasó por la cabeza. Pero cuando estás haciendo una serie de Star Trek, sabés en qué contexto cultural va a ser vista, y sabés que la gente tiende a leer ideología en ellas. Tenés que tener cuidado en cómo se va a comparar con la realidad afuera de la pantalla. Sobre todo porque no es el único paralelismo que se puede encontrar.&lt;/p&gt;
&lt;h3 id="cualquier-similitud-con-la-realidad-plantea-preguntas-incómodas"&gt;Cualquier similitud con la realidad plantea preguntas incómodas&lt;/h3&gt;
&lt;p&gt;A ver, entonces, ¿qué sabemos de los Dol&amp;rsquo;Drm? ¿Y de la guerra? ¿E, incluso, de los marcianos? No mucho, sólo lo que nos cuenta Kassel. Kassel es, claramente, una fuente poco confiable.&lt;/p&gt;
&lt;p&gt;Kassel nos dice que un día, de la nada, sin ninguna provocación, los Dol&amp;rsquo;Drm atacaron Marte, mataron a dos millones de personas. No hay posibilidad de paz, porque son insectos, lo único que entienden es la fuerza. A pesar de que la única fuerza militar que vemos es la marciana, y los Dol&amp;rsquo;Drm no parecen tener ni siquiera un par de naves dando vuelta alrededor de su planeta, Kassel nos dice que son una amenaza, y la única solución es matarlos a todos.&lt;/p&gt;
&lt;p&gt;Y mirá, capaz que si ves este episodio en otra década, en otro contexto, suena diferente. Pero hoy, en el 2026, Kassel suena exactamente como los apologistas del genocidio en Gaza. Casi que me sorprende que Kassel no repitiera mentiras sobre bebés decapitados o mencionara las víctimas en un concierto.&lt;/p&gt;
&lt;h3 id="no-lo-pienses-demasiado"&gt;&amp;ldquo;No lo pienses demasiado&amp;rdquo;&lt;/h3&gt;
&lt;p&gt;Al final del episodio, cuando Pike tiene una charla con el almirante, este último le dice que &amp;ldquo;no lo pienses demasiado&amp;rdquo;. En el diálogo, en realidad, el almirante se refiere a la cuestión del bucle temporal estable, pero también se &lt;em&gt;siente&lt;/em&gt; como si estuviese diciéndote &amp;ldquo;el genocidio estuvo bien, porque al final todo salió bien, así que no lo pienses mucho&amp;rdquo;.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/cuando-strange-new-worlds-hizo-un-genocidio-pero-no-lo-pienses-mucho/charla.jpg"
 alt="Screenshot del almirante y Pike hablando, con diálogo superpuesto: &amp;#34;Me siento un poco mal por todo el tema de quedarme mirando mientras mataban a miles de millones de personas&amp;#34; &amp;#34;No lo pienses demasiado, nosotros estamos bien&amp;#34;"&gt;
&lt;/figure&gt;

&lt;p&gt;La otra cosa que no me puedo sacar de la cabeza es que es perfectamente posible tener todo el mismo episodio, con sólo un cambio menor, sin que Pike quede como un monstruo. Lo único que tenían que hacer es que el intento de frenar el torpedo fallara. Nada más. Si querés, podés agregarle un poco de diálogo con Pike diciendo que no importa si cambia el futuro, que nada vale un genocidio.&lt;/p&gt;
&lt;p&gt;No sé, es el primer episodio de la temporada. Capaz que todo esto es para iniciar un arco en el cual Pike lidia con la culpa, y busca una forma de redimirse. Me parece un poco difícil volver de complicidad con un genocidio, pero bueno, capaz que es el plan.&lt;/p&gt;
</description></item><item><title>Fox en Linux, via Android</title><link>https://nachof.blog/posts/2026/fox-en-linux-via-android/</link><pubDate>Fri, 24 Jul 2026 20:15:59 -0300</pubDate><guid>https://nachof.blog/posts/2026/fox-en-linux-via-android/</guid><description>&lt;p&gt;Este post resulta que al final es casi irrelevante. Dejé una nota al final, pero igual lo publico.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Como contexto, &lt;a href="https://www.foxwq.com/" target="_blank"&gt;FoxWQ&lt;/a&gt; es un servidor de go chino, que tiene montones de personas conectas en esencialmente cualquier momento, por lo que siempre se puede conseguir un partido bastante rápido.&lt;/p&gt;
&lt;p&gt;El problema que tiene Fox es que no tienen un cliente para Linux, y no hay clientes abiertos (hay uno que empezó a hacerlo, pero quedó abandonado). Tiene sí un cliente para Windows, pero la verdad es que cuando intenté usarlo con Wine me daba problemas. Hace bastante de eso, capaz que ahora cambió, pero hace tiempo vengo usando en el teléfono y en la tablet el cliente Android.&lt;/p&gt;
&lt;p&gt;El cliente Android no es particularmente lindo, pero &lt;em&gt;anda&lt;/em&gt;, que es lo que importa. Está en chino, lo cual es un problema porque no hablo chino, pero con un poco de sacar fotos y pasarlas por un traductor, ya pude aprenderme la secuencia de botones que tengo que apretar para arrancar un partido y jugar.&lt;/p&gt;
&lt;p&gt;Entonces, si ya tengo un cliente que sé que anda, y lo sé usar, ¿puedo simplemente usar ese mismo cliente en mi computadora? Bueno, la respuesta es que sí, gracias a Waydroid.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://waydro.id/" target="_blank"&gt;Waydroid&lt;/a&gt; es una especie de emulador Android, pero no del mismo tipo que los emuladores bastante pesados que se usan normalmente para el desarrollo. Waydroid te permite instalar las apps en un entorno virtual Android, y usarlas como si fueran aplicaciones comunes de Linux. Un golazo.&lt;/p&gt;
&lt;p&gt;Para instalarlo, depende de tu distribución, pero la mayoría tienen un paquete, así que ya sea &lt;code&gt;apt install waydroid&lt;/code&gt; o &lt;code&gt;pacman -S waydroid&lt;/code&gt;, va a ser sencillo. Después lo corrés una vez, para inicializar, y listo. Te va a tirar en una ventana con Android pelado, pero la podés cerrar, no pasa nada.&lt;/p&gt;
&lt;p&gt;Después de eso, tenés que bajar el apk que querés instalar. Fdroid permite descargar apks directamente, pero en el caso de Fox lo podés descargar &lt;a href="https://www.foxwq.com/soft/app.html" target="_blank"&gt;directo desde la página&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para instalarlo, podés correr &lt;code&gt;waydroid app install archivo.apk&lt;/code&gt;, y eso lo instala. Pero ojo: Waydroid por sí mismo no es un emulador, y si querés instalar en un procesador amd64, el apk tiene que o ser puro bytecode, o si tiene librerías nativas, tienen que soportarlo, lo cual no es muy común teniendo en cuenta que (casi?) todos los teléfonos son arm. Un problema de waydroid es que si falla la instalación, no te dice nada: sólo vas y ver que no se instaló.&lt;/p&gt;
&lt;p&gt;Obviamente, con mi suerte, la app de Fox tiene librerías nativas. Muchas. Si tiene una o dos y son librerías open source, podés rearmar el apk a mano si querés. Pero Fox tiene un montón, la verdad no sirve.&lt;/p&gt;
&lt;p&gt;La solución es &lt;a href="https://github.com/casualsnek/waydroid_script" target="_blank"&gt;waydroid_script&lt;/a&gt;. Waydroid script es una colección de pequeños scripts que te permiten instalar cosas extra en tu entorno Waydroid. O sea, nada que no puedas hacer vos manualmente, al final, pero waydroid_script te lo hace más fácil. Lo que tenés que hacer es instalar libndk y libhoudini. Lo que hacen esas dos cosas es traducir &amp;ldquo;al vuelo&amp;rdquo; las librerías arm para que corran en amd64. O sea, una capa de emulación.&lt;/p&gt;
&lt;p&gt;Luego de tener eso instalado, ahí sí podés instalar cualquier apk. Y para correrlo podés hacer &lt;code&gt;waydroid app launch &amp;lt;paquete&amp;gt;&lt;/code&gt;, pero no es necesario, porque waydroid ya te pone un atajo en tus aplicaciones, todo prolijito.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/fox-en-linux-via-android/launcher.jpg"&gt;
&lt;/figure&gt;

&lt;p&gt;Ya con eso, la app corre. Pero dependiendo de la app y de tus preferencias, capaz que tenés algunas cosas que no están cien por ciento perfectas.&lt;/p&gt;
&lt;p&gt;En el caso de Fox, resultó que la app no respondía al mouse, sólo al touchscreen. No sé si esto es un problema de Waydroid &lt;em&gt;siempre&lt;/em&gt;, o sólo cuando hay un touchscreen presente, pero se arregla fácil corriendo un comando:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;waydroid prop set persist.waydroid.fake_touch &amp;#34;com.foxwq.*&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Waydroid tiene varias opciones de configuración que se pueden poner de esa manera. Esto lo que hace es traducir los clicks del mouse a toques del touchscreen antes de pasarlos a la app.&lt;/p&gt;
&lt;p&gt;Otro tema es que cuando corrés una app, por defecto, básicamente te levanta la pantalla maximizada del sistema Android con la app adentro. Funciona, no está mal, pero queda un poco feo. Y además, el tamaño de la pantalla está fijado al momento de iniciar Waydroid, y puede haber cambiado (si, por ejemplo, tu pantalla se puede rotar). Para eso, hay otro comando:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;waydroid prop set persist.waydroid.multi_windows true
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Eso le dice a waydroid que corra cada app en una pantalla independiente, lo cual se integra un poco mejor con tu manejador de ventanas. Igual tiene sus problemas, como que la decoración de la ventana (la barra de título) es una cosa fea que pone Waydroid y no la que tenés configurada en tu sistema.&lt;/p&gt;
&lt;p&gt;Otro tema: cuando tenés la opción de multi_windows, si estás en KDE (aparentemente sólo pasa en KDE), el puntero del mouse tiende a desaparecer dentro de la ventana. Todavía &lt;em&gt;funciona&lt;/em&gt;, pero no sabés dónde está exactamente, lo cual lo hace obviamente inusable (bueno, supongo que si la app que estás usando es un único botón gigante, o algo tipo flappy bird, sirve igual). La solución:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;waydroid prop set persist.waydroid.cursor_on_subsurface true
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En los foros donde encontré esa solución alguna gente decía que con eso les aparecía un puntero doble del mouse, pero la verdad es que a mí me anduvo sin ningún problema.&lt;/p&gt;
&lt;p&gt;Y listo, con eso quedó andando, y ya puedo jugar en Fox desde Linux.&lt;/p&gt;

&lt;figure
 
 &gt;&lt;img src="https://nachof.blog/posts/2026/fox-en-linux-via-android/screenshot.jpg"
 alt="Screenshot del cliente Android de FoxWQ corriendo en un escritorio Linux"&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;p&gt;Como me pasa muchas veces, después de hacer todo esto, y de escribir este post, me encontré con que el proyecto que yo pensaba que estaba muerto (porque el repositorio al que estaba linkeado en Github ya no existe), en realidad existe, y parece funcionar. Así que bueno, si lo que querés es jugar en Fox en Linux, es más fácil: &lt;a href="https://walruswq.com/minifox" target="_blank"&gt;minifox&lt;/a&gt; tiene lo que necesitás. No es open source (porque es un &lt;em&gt;reverse engineering&lt;/em&gt; del protocolo de Fox, que es contra sus ToS, entonces quiere reducir la chance de que se lo hagan bajar), y tiene el riesgo (posiblemente menor) de que te baneen la cuenta por usar un cliente no autorizado, pero parece funcionar.&lt;/p&gt;
&lt;p&gt;Igual publico el post, porque toda la parte de Waydroid me sigue resultando interesante. Es sólo que &lt;em&gt;para este caso&lt;/em&gt; había una solución mejor.&lt;/p&gt;
</description></item></channel></rss>