@ agnasg

agnasg


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.