@ agnasg

Cuando las aguas dejan de moverse

08-09-2020 6:57 AM

Este es un post explicativo. Es del tipo “¿qué está pasando?” (“what’s going on?”). ¿Por qué no hubo post en agosto? ¿Cómo salir de la pandemia vivo y coleando? ¿Es este el fin del mundo? ¿Debemos odiar a amazon por ser tan exitoso?

  1. Si hay un post de agosto, todavía no lo he publicado porque describe el procedimiento que seguí para publicar un juego en Play Store. Todavía no está listo. Espero publicarlo este mes. Para ello saqué un juego al azar de mi baúl de zombies (tilemovers) y lo reimplementé en SDL2. Está listo también hay una versión para pc lo voy a publicar itch.io.
  2. Coronavirus. El sentimiento generalizado es que no vale la pena cuidarse tanto porque ha habido personas que después de 6 meses de estricto aislamiento y bañarse en alcohol todos los días, se descuidan un día y se contagian. Si todos nos vamos a contagiar, ¿para qué tanta paranoia? La realidad es que todos los días existe una posibilidad de 1/1.000.000 que te caiga un piano en la cabeza. Repentinamente, ahora la posibilidad es 1/34. Yo no sé usted pero yo al menos comenzaría a mirar para arriba solo para estar seguro.
  3. Este no es el fin del mundo. El cambio climático es el fin del mundo tal como lo conocemos. La pandemia va a terminar. Nos tocó vivirla. Otras generaciones se salvaron, pero les tocaron otros retos. Cada generación tiene sus retos. La nuestra quizás se dedica más a llorar sobre platos rotos, lo cual siempre ha sido una pérdida de tiempo.
  4. Yo no tengo nada contra Amazon ni contra Bezos, y él no está obligado a retribuir sus ganancias a la comunidad. Depende de la comunidad que continúe haciendo negocios con él, lo cual parece que va a continuar por mucho tiempo.

Una explicación inútil

12-07-2020 8:18 AM

“There is a different between live intensely and live with passion” (“Hay una diferencia entre vivir intensamente y vivir con pasión”)

Itzhak Perlman



Ok, yo no sé qué significa eso, pero ¿qué tal ambas cosas? Cuando oí esa afirmación (Itzhak Perlman es una violinista consagrado, así que él sabe de intensidad y de pasión) lo primero que pensé fue “no sabía que ambas cosas eran mutuamente excluyentes”. Yo siempre he vivido intensamente como un funámbulo y con pasión como un violinista. Así que agárrame esa ballena por el chorrito, Itzhak!

De “Dark” y Hitler

Advertencia: no hay realmente spoilers en lo que viene, pero los comentarios pueden sugerir algunos elementos que forman parte de la trama. Quizás sea buena idea que termine de ver la serie y regrese. Suerte con eso.

La serie de Netflix “Dark” ha causado revuelo. Primero, porque no se entiende. Segundo, porque cualquier especulación sobre lo que está sucediendo genera polémica. Por ejemplo esto:

“hicieron lo correcto”

El problema, sin ahondar mucho si la serie tiene la intención oculta de sugerir una respuesta a ese dilema, o a esa decisión, es que, si algo hemos aprendido con todas las experiencias en “Volver al futuro” 1, 2 y 3, “El vengador del futuro” (“Total Recall”) el capítulo “Al borde de la eternidad” de “Viaje a las Estrellas” y otras películas similares con viajes en el tiempo, es que esos personajes de “Dark” hicieron lo correcto al tener sexo con sus tías y no asesinar a Hitler, porque el resultado hubiera sido el mismo, o peor.

Me explico.

La cuestión fundamental es si la segunda guerra mundial era evitable. Mi teoría es que no. Muerto Hitler, cualquier otro canciller alemán, u otro líder cualquiera hubiera tomado similares decisiones, dadas las malas condiciones en que Alemania terminó después de la 1ra guerra. Además, haber perdido territorios era algo inaceptable en aquéllos tiempos, y otra cantidad de razones que ya todos conocemos. Así que Alemania hubiera ido a la guerra de todas maneras. La pregunta es qué hubiera pasado si Alemania no ataca en la forma que lo hizo a Rusia, sino que comienza a ganar tiempo, a fortalecer los territorios conquistados, a prepararse para el ataque, desistir de la solución final con los judios, etc.. Rusia quizás no hubiera atacado, y tendríamos hoy en día una Europa alemana. Alemania perdió la segunda guerra mundial por la tonta decisión de Hitler de invadir Rusia en las peores condiciones cuando todavía no había consolidado su poder sobre Inglaterra y continuaba enfrascada en resolver el tema de los judíos. Con un líder diferente Alemania quizás hubiera tenido éxito en sus loqueras, e inclusive, quizás una política exterior más razonable. Claro, buena parte de Europa sería territorio alemán y hoy en día sería una potencia mundial (tal como lo es de todas formas). Así que asesinar a Hitler probablemente no hubiera resuelto nada, o quizás hubiera sido peor.

C++ sin clases

06-06-2020 5:06 AM



Ventaja oculta de no usar c++ clases: cuando agregas una nueva función no tienes que registrarla en la clase, la escribes, la usas y ya.

Prometo que este va a ser mi último post “yo uso C++ pero no uso clases“. Quiero concentrarme en el tema de la complejidad en si misma y olvidar otros temas. No he querido buscar en wikipedia como se llama el síndrome de los que piensan “por qué hacerlo sencillo si lo podemos hacer complicado“, estoy seguro que este síndrome tiene un nombre. Bueno, yo sufro de ese síndrome. Por ejemplo, cuando abandoné mi juego psyblast (para los que nos visitan por primera vez yo tengo una enorme colección de juegos inconclusos, es parte de mi hobbie, comenzar juegos y no terminarlos, es divertido sugiero intentarlo) decidí que mi próximo juego sería algo simple, muy simple, un juego en el espacio, donde el jugador tiene una consola donde pueda ver diversos medidores, y el juego sea simplemente tratar de viajar lo más lejos optimizando el uso de combustible, oxigeno, hidrógeno, etc.

5 años después esto se convirtió en khpx, un juego de estrategia con elementos del género 4x (eXploración, eXpansión, eXplotación, eXterminio) (pero no es un juego 4x) donde el jugador puede practicar la minería, la cosecha, desarrollo de tecnología, y en general desarrollo y dominio de recursos. Y sigue y sigue complicándose hasta el infinito. Así que todos los días mi motto es “cómo hago para simplificar las cosas” o “qué puedo simplificar hoy”.

Como mi compulsión me impide simplificar más allá de cierto nivel el juego, apunto mis baterías a C++. ¿Qué más puedo simplificar? No mucho pero contener mi impulso natural a usar clases ya es un comienzo.

Entonces cayó en mis manos este software, recientemente liberado por EA, el código fuente de CnC(Command & Conquest). C++. Clases. Muchas. Ví archivos muy grandes, vi un caos en la nomenclatura de los archivos, los nombres de clases, variables, métodos, todo. Y sentí un alivio porque así es khpx: un caos de nomenclatura donde hay funciones_con_barra_de_abajo, funcionesConNotacionCamel, variables_con_la_funcionalidad_al_comienzo y demás cosas similares.

CnC tiene un DISPLAY.CPP (de 190k) y un DISPLAY.H de 13k (en khpx el archivo más grande tiene 40k y es mucho) Ví cosas como DisplayClass::TacticalClass::Command_Object (..), y mezclado con esto, muchas funciones static funcion_no_en_una_clase_y_es_libre (…). Lo cual me lleva a pensar cuál es el punto. Sin embargo, el código se deja leer, el nivel de espaguetismo es minimo (khpx es un espagueti de pasticho hecho con pasta corta). Ahora, en el código de CnC seguir el camino de las clases esa es otra historia: entre algo->subalgo (..) mezclado con OtroAlgoSolo(…) entender quién llama a quién desciende a un nivel de complejidad natural, porque está implementando un juego naturalmente complejo, complicado por la complejidad de la capa de clases mezclada con funciones estáticas imposibles de meter en clases porque son libres como el viento. La idea de las clases es organizar la complejidad, a veces con éxito, a veces agregando una nueva capa de complejidad a la complejidad para que la complejidad subyacente sea invisible, aunque nosotros sabemos que está ahí, e inevitablemente nos devora como arenas movedizas.

Es decir, buen intento, pero las clases en sistemas complejos fracasan en hacer amigable la complejidad, simplemente la ocultan y la hacen más compleja a niveles inmanejables.

Este nivel de complejidad innecesario y a veces inútil (estas palabras no son sinónimos), es como el síndrome de willicoyotismo (algo que acabo de inventar) Willie el Coyote quiere atrapar al correcaminos (en la vida real un coyote alcanza en una carrera a un correcaminos en cuestión de 30 segundos) pero utiliza catapultas, cuerdas atadas a un risco, y se coloca un casco con una rueda arriba, y patas para arriba se lanza sobre la cuerda corriendo con la rueda que tiene en el casco como un funicular invertido. También arroja misiles, bombas, tumba puentes etc. Es lo mismo que utilizar los artefactos alrededor de las classes de OOP. ¿Ejemplos? Bueno este señor quería calcular la desviación estándar para las mediciones de un sensor. Lo que hizo fue tener una clase Sensor y una clase Medida, y cada vez que quería calcular la desviación estándar, convertía los valores tipo double a Medidas, los cargaba en un Sensor, llamado “CalculateStDev”, y tomaba la propiedad “CurrentStdDev” del Sensor. ¿Ok? ¿Cuál es la diferencia entre eso y meterse en un cañon como el hombre bala, activar el disparador calculando que la trayectoria dé exactamente en el sitio donde el correcaminos va corriendo por una carretera cualquiera a una velocidad de 24 km por hora ? Yo no veo la diferencia honestamente.

Como un ejemplo adicional, este señor muestra como OOP es inconveniente en algunos casos (realmente todos) y cómo una solución escrita con clases puede ser escrita fácilmente con una simple función. En realidad, cuando resolvemos un problema, es en el problema en que debemos estar pensando, no en cómo usamos nuestro lanzamisiles de última generación para resolver el problema. Lo cual es la principal razón por la que dejé de usar clases. Pierdo mucho tiempo pensando en cómo emplear sus patterns para resolver problemas, en vez de simplemente resolver el problema.

Esta pérdida de perspectiva termina desvirtuando “lo que tienes que hacer” de maneras incomprensibles. Es como ciertos gerentes de proyecto que manejan los proyectos usando el software, viendo las actividades en gráficos y los tickets cambiando de estatus. Quizás ves algunas cosas pero no el conjunto y sus interacciones, y tus acciones y rabietas terminan siendo absurdas. Los demás te miran desde el otro lado de la mesa con perplejidad: ¿qué le pasa?.

Crimen y Netflix

26-05-2020 6:35 PM

La Guerra de las Galaxias es una saga de 6 películas realizadas por el maestro de la ciencia ficción George Lucas. Luego de vender la franquicia a Disney, esta hizo una serie de pésimas películas (excepto quizás Rogue One) que trataron de exterminar y eliminar todos los elementos previamente construidos en las 6 películas anteriores. Este proceso se llevó al extremo de que la película conocida como The Last Jedi destruye elementos de la nueva serie, donde, sin razón alguna, el villano es muerto prematuramente.

Este proceso de exterminio de los elementos básicos de una franquicia es algo común en Hollywood y no es una práctica exclusiva de corporaciones como Disney. Algo similar podemos apreciar en Misión Imposible, donde en la primera película el personaje central de la serie, el Sr. Phelps es presentado como un villano corrupto, comportamiento absurdo en base al desarrollo que tiene este personaje en la serie original. En la serie, Jim Phelps participa en operaciones encubiertas diseñadas e implementadas por él, de un nivel excepcional, sin fallas ni errores. En la película es presentando como un villano de poca monta, torpe y descuidado que desciende fácilmente en la confrontación física, cosa que el personaje original jamás haría. Los actores de la serie Peter Graves y otros protestaron esta línea argumentativa pero los productores de la película estaban decididos a eliminar cualquier vestigio de los héroes originales y crear su propia mitología.

Lo que Disney le hizo a La guerra de las galaxias es un crimen.

Acabo de terminar Community, una de las mejores series que he visto en Netflix últimamente. Realmente me gustan las series (y las películas) innovadoras, rebeldes, que cambian paradigmas, que dan de qué pensar. Community utiliza todas las técnicas posibles para desconcertar el espectador, incluyendo capítulos donde todos los personajes comienzan una guerra de paintball sin razón, los personajes hablan fuera del personaje rompiendo la 4ta pared, vemos múltiples timelines con diferentes resultados si cambiamos un pequeño elemento, etc.. Todas las 6 temporadas son buenas, y en mi opinión todos los capítulos son excepcionales. Algunas personas en imdb dicen que la calidad desmejoró después de la temporada 3 y que la 5 y las 6 son malas. A mi me parece que la temporada 6 fue tan buena como las 1-3, de hecho el episodio t6/e8 tiene uno de los mejores finales de episodio de todos los episodios de todas las series que he visto (estoy exagerando), cuando después de que Chang tiene su aventura donde casi (realmente casi) llegó a ser una estrella tipo Steven Spelberg, regresa a la mesa cuadrada, se sienta y todos continúan en lo suyo, sin recriminarle nada, aceptándolo de vuelta, y él, los mira a todos y se da cuenta que sus temores de ser rechazado eran injustificados y se da cuenta que es uno de ellos, que es definitivamente miembro de la mesa cuadrada. Altamente recomendable.

Bullet Head es un nuevo ejemplo de la manía de Hollywood de colocarle malos nombres a las películas. Esta es una excelente película con brillantes actuaciones de Adrien Brody, John Malkovich y un sorprendente Antonio Banderas haciendo papel de malo. Inclusive Rory Culkin el hermano menor de Macaulay Culkin, hace una magnífica actuación a pesar de no tener tanta experiencia como sus compañeros en la película. ¿Entonces, si el casting y la película son tan buenos por qué en imdb el rating es 5.4 (yo esperaba al menos un 7.8) ? De acuerdo a este comentario, la razón de los abrumadores malos reviews es que la gente estaba esperando una película de acción. ¿Por qué, si ninguno de los actores es conocido como un actor de películas de acción (Brody hizo Depredadores, que puede ser una película de acción)? Mi opinión es que se debe al título (Bullet Head) que sugiere una película repleta de balas al estilo Tarantino. De hecho, en el faq de la página de imdb alguien pregunta por qué esta película se llama así, y no hay respuesta. Mi mejor ejemplo de películas con nombres inapropiados es Coming Home, la película de Jane Fonda, nombre que no dice nada (el nombre en español es “Regreso sin gloria“, que es simplemente perfecto). ¿Otro ejemplo?, “Out of Africa”, la hermosa película de Meryl Streep, que se podría traducir por “en Africa” o “Por los lados de Africa”. Un nombre que sugiere movimiento. El nombre en español es mucho más apropiado “Africa mía” que refleja profundamente el sentimiento de cariño y nostalgia que le generó a la protagonista su estadía en Africa.

Code smell

08-05-2020 6:39 AM

una galaxia
la capsula viajera
sin tiempo

Suena sospechoso pero en realidad se refiere a código que no corresponde a las mejores prácticas de programación. Por ejemplo código que luce correcto pero que seguramente va a generar problemas en algún momento. Llegó a mis manos un artículo de medium sobre el tema (que ahora no encuentro… ah, ya, aquí está) así que comencé a buscar en el código de khpx algo similar. Hay mucho data clump, porque es un juego y hay mucho control de estados, no he hecho nada al respecto porque lo estoy dejando para el final. Agrupar esto en objetos en este momento puede ser precipitado y optimización temprana. Muchos de estos problemas son relativos a classes y como yo no uso clases, pues simplemente no tengo esos problemas.

Un ejemplo de code smell es este:

void inocente_funcion (int importante_argumento, bool soy_code_smell)
{
   mucha_inicializacion();
   y_preparacion_de_datos();
   if (soy_code_smell) {
        hacer1 ();
   }
   hacer2 ();
}

Esto hace que la función modifique su comportamiento basado en argumentos booleanos. hacer1 () debería estar afuera.

El problema es que a veces hay situaciones en que la forma fácil, rápida y obvia de hacer algo entra en conflicto con esta regla de no programar con code smell’s. Por ejemplo en la inocente función de arriba se hace mucha inicialización y preparación de datos para luego ejecutar a veces a hacer1() y siempre a hacer2(). Pero supongamos que hacer1() es básicamente despliegue de los datos en pantalla. Así que la variable booleana soy_code_smell es en realidad un flag verbose, para desplegar información algunas veces. La solución es separar todo en funciones y hacer las llamadas apropiadas pero entonces caemos en código espagueti y repetición de código.

khpx tiene mucho código espagueti porque un juego es un espaqueti mezclado con ensalada rusa, y más aun cuando el juego en sí es un trabalengua. Claro, no llega al nivel de la primera versión de Zork, pero estudiando su código me pregunto cómo simplificar algo complicado.

¿Cual es la descripción corta actual de khpx?

khpx, a hard core low level full featured pixel art solo dev mmo space game (un juego espacial de bajo nivel con características avanzadas, graficos de pixels, desarrollado en solitario, masivamente multijugador).

O algo así.

¿Los bugs del juego se pueden explicar debido a estos code smell? Realmente no. Los bugs aparecen debido a la complejidad. Yo adopto un enfoque tipo Abed a los problemas: si lo pienso lo suficiente y me concentro cualquier problema se puede resolver. Los académicos de manera condescendiente moverán la cabeza diciendo que detrás de todo bug hay un code smell escondido, o falta de OOP, o pobre diseño de software, o problemas no resueltos, simples problemas manejados incorrectamente.

Ok. Veamos.

Los cultivos en los planetas está implementado. La función que se encarga de eliminar una parcela de la lista de parcelas cultivadas tiene 12 llamadas a funciones:

  1. convertir la parcela de cultivo a parcela vacia (cambio del ícono)
  2. borrar el rectángulo que resalta a la parcela en el campo de cultivo
  3. si tiene plagas, borrar la plaga
  4. remover el identificador de parcela
  5. remover el indicador de progreso de la parcela (nivel de cosecha)
  6. guardar el estado de los iconos a la base de datos
  7. borrar la parcela de la lista de parcelas del jugador
  8. cargar el script de parcelas
  9. actualizar usando la info del script, la lista de parcelas disponibles
  10. guardar la lista en la base de datos
  11. desplegar el resultado de la parcela en la pantalla
  12. desplegar un mensaje de “Listo”.

El manejo de cultivos requirió un mes de trabajo (8 horas diarias la pandemia de covid-19 ha reducido mi capacidad de enfocarme, lo cual no es raro).

Hay dos directrices importantes-urgentes-prioritarias que entran en conflicto: escribir código de calidad (sin code smells, OO, buen diseño) y terminar el juego. El trabajo de un programador es encontrar el equilibrio entre estas dos reglas en permanente pugna. Sin excusas o coartadas: es realmente deplorable echarle la culpa a una de estas reglas el no haber cumplido con la otra.

O, revisamos nuestra lista de “o”s:

  • O regreso a trabajar tiempo completo freelancer.
  • O me dedico a programar juegos en androide tipo mario bro para ser publicados semanalmente y hago de mi vida un infierno.
  • O me dedico a escribir ebooks y publicitarlos en twitter

Me imagino lo que Bobby Axelrod pensaría de todas estas opciones.

El amor en tiempos del coronavirus

08-04-2020 2:38 PM

“Proteger a tu familia no es una carga, es un privilegio”

Lou Solverson

Y así, sin más, estamos en un apocalipsis zombie mucho antes de lo que esperábamos. Todos estamos escondidos en nuestras casas, salimos a hurtadillas a buscar alimentos, nos alejamos de los demás no sea que nos contagien, regresamos rápidamente a nuestro escondite, esperanzados en que pronto esto va a terminar. La realidad es que no, no va a terminar pronto: la esperanza es que para junio, es decir dentro de 2 meses, podamos comenzar a retomar la normalidad “en forma limitada“. Nada de participar en aglomeraciones innecesarias (no asistir a juegos ni a festivales), lo cual incluye ir a restaurantes o a fiestas familiares. ¿Cuándo volveremos a nuestra rutina 100% normal? Nadie lo sabe.

En cuanto a mi, lo que para otros parece el fin de los tiempos, es la normalidad: yo paso la semana completa encerrado trabajando en mi video juego o en freelancing, salgo 1-2 veces (en este momento voy a salir 1 vez cada 2 semanas a buscar comida, papelón y gofio). Lo que me perturba es que como el edificio está lleno de gente, no hay el silencio acostumbrado. A la gente le encanta hacer ruido con lo que sea, bostezando en forma vulgar, o lanzando las puertas. Si hay cuarentena y no se puede salir, no estoy seguro por qué abren las puertas y las avientan con toda la fuerza posible. Demasiado. Yo con amor y comprensión lo tolero, porque esto, esto también va a terminar, y entonces sonreiremos.

soy mejor que tú

06-03-2020 7:08 AM

Tomado de mi diario personal:

me gustaría extraer su alma, colocarla en un frasco, y observarla a trasluz: ver si aprendo algo, capturar su fortaleza interior, visualizar alguna idea vital, quizás beberla, comerla, imbuirme de su energía, irrigarme con su rostro, escudarme con su cuerpo. puedo ver a través de la canción como su alma se ríe de mi, me hace gestos que me hablan de realidades controversiales. su verbo me hiere en formas inusuales, sus palabras llegan a nervios que no sabía que tenía, me rompe huesos desconocidos. llega a profundidades reveladoras: no sabes nada. yo manejo las situaciones difíciles de mi vida mejor que tú. soy más fuerte que tú. no puedes conmigo. te gané.

Ey, ey, esto parece extraído de un libro de Thomas Harris. Usualmente las entradas en el tractac no requieren explicación, pero esta alucinación literaria requiere algún contexto. agnasg-escritor, el ouroboros, está intenso estos días. Se refiere a una canción de Madilyn, una cantante de youtube . La canción está escrita con la letra de los comentarios negativos que recibe (de los haters, los que la odian). Tiene unos cuantos años cantando canciones de otros artistas, incluyendo Titanium (con 100 millones de reproducciones) y su versión de Despacito (alguien en los comentarios dice que su versión es mejor que el original ( “Sometimes the cover is much better than the original… just like this!” ). Su versión de Firework de Katy Perry también me gusta mucho. Esta idea de escribir una canción con los comentarios negativos no es una idea original, otros youtubers lo han hecho, en particular Elise Ecklund (tiene varias, por ejemplo). Pero la versión de Madilyn es insuperable.

Ríete

25-02-2020 11:30 AM

Mis comentarios sobre el Guazón a continuación. Todos los spoilers posibles, la trama se va a discutir. Si no la ha visto, véala y regrese

Joaquín hizo una monumental actuación. En algún momento de la película (alrededor de la primera hora) me dí cuenta que estaba viviendo un momento especial en mi vida, un momento que iba a vivir en pensamientos muchas veces, como cuando vi por primera vez el Padrino, cuando ví por primera vez Apocalipsis Ahora, Blade Runner y muy pocas otras películas. El guazón era una experiencia única en la vida, pensé. La película continuó y la cena quedó servida: todo estaba listo para un gran y apoteósico final: entonces vino la escena del baile en la escalera: la cortaron, solamente aparece el final, cuando, creo que el comienzo era más importante (se pueden conseguir varios ejemplos, este desde una perspectiva diferente).

Y entonces llegó la escena final, en el programa de entrevistas con Murray Franklin (Robert De Niro). Todo estaba listo para una memorable escena, con Joaquín Phoenix quien había demostrado a lo largo de toda la película sus cualidades escénicas (y en otras películas por supuesto) y Robert fucking De Niro: este iba a ser un momento extraordinario y memorable.

Y entonces la escena. Vamos a dejarlo ahí, me voy a permitir una digresión para que se entienda mejor.

Pulp Fiction (Tiempos violentos) se puede ver de muchas formas. Podemos considerarla como una película de gangsters, como un thriller, como una película de superviolencia, y con otras muchas otras etiquetas. Contiene varias historias, una de ellas, la historia de un boxeador fracasado que decide aprovecharse de las apuestas en su última pelea, haciendo lo contrario que el jefe de la mafia le dijo que hiciera. Le hace una estafa al jefe de la mafia, se sale con la suya, y está listo para salir huyendo para no regresar nunca más: pero a la novia se le olvidó el reloj. Toda la película (al menos de este hilo narrativo), toda la historia gira sobre el hecho de que este boxeador, en vez de escapar porque tiene tras de sí nada más y nada menos que al más peligroso gangster de la ciudad (el resto de las historias de la película así lo demuestran) se ve obligado a regresar a buscar su reloj corriendo el riesgo de ser atrapado: ya sabemos lo que pasó, y la secuencia de Zeth (Zeth is death baby, Zeth is dead) no nos decepciona en lo absoluto, ahora entendemos toda la película.

¿Se entiende para dónde voy? Esa última escena del Guasón debió ser diferente. Fue un anticlimax confuso y raro como el resto de la película (el Guasón inclusive comienza a hablar como un niño mimado). La escena era la consumación de un exterminio, o la continuación de una saga de destrucción anarquista (ya sabemos como termina), con el asesinato del compañero de trabajo, la mamá y el ídolo de la mamá, el presentador de televisión. Yo tenía en mi cabeza muchas idea de cómo debía ser esa escena ninguna de las cuales conincidió con la realidad. Sin embargo, coincido que es una película excelente y que Joaquín se ganó el globo de oro y el óscar si lugar a dudas (inclusive desde el Gladiador se veía venir). No quiero ser melodramático (¿demasiado tarde?), ciertamente es solo una película y Todd Phillips es un consumado escritor y director. Pero confieso que mis expectativas estaban demasiado altas. Qué raro.

Comentarios atrasados de febrero

23-02-2020 8:21 AM

” Bienaventurados sean los ignorantes porque le ganan la batalla a los errores”

Friedrich Nietzsche

Siguiendo la tónica del post anterior donde comentaba la existencia o no de vida extraterrestre, se me ocurrió extrapolar esa idea a la tierra. No hemos encontrado vida inteligente fuera de la tierra (a pesar de que ahora es tan fácil conseguir planetas en otros sistemas, que hasta un muchacho de 17 años lo puede hacer), pero tampoco en ella: la única vida inteligente que es capaz de buscar vida inteligente somos nosotros mismos: los delfines, orcas, chimpancés, cotorras, cuervos y elefantes no están interesados o no han demostrado estar interesados en eso, y será así al menos los próximos 500 mil años para estas especies: no parece que vayan evolucionar mucho más de ahí.

No había tenido tiempo de ver este video (John Millburgh, TEDxBariloche, ¿Por qué creemos en lo que creemos?), donde el presentador insiste en que tenemos una percepción equivocada de la realidad, y que probablemente es inducida por los medios, a través de opiniones de la gente basados en estudios de poca credibilidad, etc.. Lo que me pareció gracioso es que el ejemplo que coloca al comienzo (donde muestra fotos de dos personas y pregunta quén es más confiable, o quién probablemente es un ladrón, etc.) no es tan bueno como introducción para la segunda parte de la presentación, porque, por ejemplo, “hay un estudio” que dice que en el 95% de casos, la decisión que toma el primer entrevistador en un proceso de selección de personal en una empresa grande >>no cambia<< en el 100% de los casos sin importar la duración, complejidad y número de personas involucradas en el proceso de selección. “El estudio” incluye estadísticas de Microsoft, IBM y Excite y otras empresas (era un estudio de los 90s, me imagino que está en alguna parte de internet). Así que lo que este “estudio revela” es que nuestras opiniones basadas en intuición, nuestro olfato, o como quiera que lo llamemos, quizás sea inducida, quizás sea generada en nosotros por el entorno, pero al final es apoyada y aprobada por nuestro entorno. Lo que el presentador está haciendo es cuestionando y criticando nuestra forma de tomar decisiones.

Terry Cavanagh liberó el código fuente de su afamado juego VVVVVV (github, comentarios en reddit) y Randal Olson dice que es bello y… desagradable. ¿La razón? Un gigantesco switch para controlar cualquier posible estado que el juego pueda tener en algunas situaciones, y otras no, y otras condiciones que pueden clasificarse como cualquier cosa. Quizás sea desagradable, pero es un juego publicado. Exitoso. Deja la envidia. En mi juego khpx yo me concedo el estado del arte en técnicas de programación, modernos patrones ajustado a las mejores prácticas, es elegante, inteligente y no publicado: no vale nada.

Finalmente ví la película Bird Cage. que provocó un marasmo el año pasado, donde Sandra Bullock enfrenta un enemigo que no se puede ver (los protagonistas pasan buena parte de la película con los ojos vendados). Ya se han mencionado hasta la saciedad el parecido de esta película con The Happening  (Fin de los tiempos) la cual como otras películas de M. Night Shyamalan es horriblemente mala (lo cual ya he discutido antes detalladamente), de hecho Bird Cage es un buen ejemplo de cómo se debe hacer una película con una premisa complicada (y The Happening un ejemplo de cómo no se debe hacer). Él único problema que veo en Bird Cage, es que al comienzo cuando comienza el encierro en la casa, el guionista tuvo serios problemas para idear formas de ocupar en algo a los protagonistas, cuando van a la excursión al supermercado, finalmente las cosas comienzan a encaminarse bien. Del resto es una película recomendable para pasar el rato.

Este post fue escrito a finales de enero. Y quedó olvidado entre los borradores.

Es pero no es

08-01-2020 4:52 PM

Aliens adecuadamente motivados (“suitably motivated aliens”). Este estudio ofrece suficientes evidencias (apoyadas inclusive en simulaciones de computadora) que muy seguramente estamos solos en la via láctea.

“Dado que nuestro sistema solar existe desde hace 4.500 millones de años y que la Vía Láctea se formó hace al menos 10.000 millones de años, ha habido tiempo más que suficiente para que las especies hagan una visita en todos los mundos habitables.” (” Given that our solar system has been around for 4.5 billion years and that the Milky Way assembled at least 10 billion years ago, there has been more than enough time for species to wind up on all inhabitable worlds.“). Enlace.

Hablando del espacio, es posible que los cálculos realizados para determinar la existencia de materia oscura estén equivocados (enlace). Lo gracioso son los comentarios en hacker news, cualquier explicación o comentario sobre el artículo es seguido por 5-10 preguntas, y por 3-5 “eso es incorrecto”, dicho por astrofísicos y no astrofísicos. Yo soy un aficionado así que no puedo decir nada más allá de mi apreciación de que solo sé que no sabemos nada. Todavía nos falta. De lo que ayer estábamos seguros, hoy estamos dudando, mañana quien sabe.

Estadísticas inútiles pero interesantes. Este reporte en slashdot llamó mi atención: el número de commits en el kernel de linux bajó el año pasado a 74k commits, que es el número más bajo desde 2013. Realmente me importa un rábano esa parte, lo que me interesa es que el artículo dice que el kernel de linux tiene 27.852.148 lineas de código, divididos en 66.492 archivos: eso da 418 líneas por archivo. Interesante: khpx tiene en este momento 30.311* líneas de código distribuidos en 192 archivos, lo que da un promedio de 158 líneas por archivo. No está mal. No llega al extremo de Solaris (la versión de Unix de Sun Microsystems) con 2 millones de líneas de código con un promedio de 10 líneas de código x archivo, pero sigue siendo un buen promedio (es una mejor práctica tener archivos lo más compactos posible para mejorar el mantenimiento y la depuración de errores). Quizás el promedio del kernel de linux se ve afectado porque los 66.492 archivos mencionados incluyen documentación, archivos de configuración, herramientas, etc. (* en comparación, el código fuente de Doom tiene 62.734 líneas, el de wesnoth tiene 335.532) Enlace.

Via el magnífico blog de Emily Short nos llega este breve review del libro Hamlet’s Hit Points (también está en amazon pero la autora no está interesada en promover esa empresa por razones, así que sigo esta medida) que presenta un conjunto de herramientas y procedimientos para alimentar el proceso de creación de aventuras RPG, usando una genial clasificación de story beats que le va a permitir rastrear los altos y bajos de la historia. RPG son role playing games (o juegos de role), story beats son los puntos de inflexión de la historia o puntos de acción que van moviendo la historia. Yo era fanático de estos libros en mis comienzos, pero ahora me he dado cuenta que todos esos procedimientos hay que conocerlos pero a la hora de la verdad, con el trasero en la silla, y las neuronas funcionando a full capacidad, es que se escriben buenas historia. De nada valen las herramientas. Creo.

Ricky Gervais se acaba de hacer más famoso de lo que era normalmente con sus honestas, desencarnadas e irreverentes intervenciones en la entrega del Globo de Oro de este año. Decirles a los actores y directores de Hollywood que ellos han ido a la escuela menos que Greta Thunberg y que se cayen la boca, al fin y al cabo, todos son amigos de Jeffrey Epstein (quien no se suicidó). Aprovechó finalmente hacer cuña de su serie en netflix Afterlife, la cual jamás había oído antes, no la había visto en mis búsquedas incesantes en el directorio de Netflix (si hubiera 10-20 series y 5-10 películas sería mucho más fácil, pero como hay tantas nunca me decido). Y de hecho esta serie ( Afterlife ) es realmente buena, es deprimente porque se trata de un tipo amargado a quien se le murió la esposa y quiere suicidarse, y mientras tanto le canta sus verdades a todo el mundo. Me recordó algo que vi en 9gag (pero que ahora no encuentro) sobre ciertas personas que parecen antisociales, pero no es realmente eso, sino que no tienen tolerancia a las conversaciones huecas, el drama y a las personas falsas. Dícese de mí. En fin, esta serie (Afterlife) es realmente graciosa, y es tan deprimente, tanto pero tanto que te llena de alegría y esperanza. Altamente recomendada.

Lo cual me lleva mencionar esta película Frances Ha. Al verla, nuestro primer pensamiento es que ella es una loser (perdedora, término extraído del futbol americano (no es futbol, es una variación de rugby), donde o ganas o ganas, y si no ganas eres un loser (por lo que este jugador con una canción nos anima a aceptar lo loser que somos)). En imdb la descripción de esta película es que Frances que vive en New York pero no tiene apartamento, aprende danza (pero no es una bailarina) etc. , me parece que está todo equivocado porque a través de la película aparece la dirección de todos los apartamentos donde vive (mucha gente vive alquilado o prestado en New York), y también, a través de la película aparece danzando y contando con la aprobación de todo el mundo. Bueno, loser, eso parece, pero para ella, eso no tiene importancia, el apartamento no tiene importancia, tener novio no tiene importancia (un apetecible amigo está loco por ser su novio, y es millonario, y le pregunta varias veces si está disponible y ella contesta no, no y no), lo único que parece tener importancia es su amiga del alma.

A mi no me parece una loser, a mi me parece como aquél cuento de una perro sabueso (un otterhound o quizás un foxhound) que en vez de perseguir y señalar donde caían los patos y las perdices, se iba en dirección contraria y señalaba puntos en el espacio, vacíos, sin ninguna presa en ellos. Al final fue descartado y catalogado como idiota, pero un entrenador persistente e intrigado por el comportamiento errático del perro se puso a revisar el área que el perro señalaba con la nariz. Finalmente descubrió la verdad, este perro sabueno no consideraba importante señalar patos o perdices, señalaba mosquitos y abejas y otros insectos: este era un perro sabueso entomólogo. Como quiera que sea (…) el cuento es que Frances Ha se comporta como una loser, dice las cosas que dicen los loser, viaja a París sin ponerse de acuerdo con sus amigos y termina cenando en los campos Elisios sola como una loser, pero quizás no lo es, sus aspiraciones y deseos son incomprensibles para los demás. Loser.