@ agnasg

Aquí no se habla mal de PHP

15-05-2022 10:28 AM

Twitter es una bestia difícil de dominar en su estado actual. No menciono esto en relación a su posible compra por Elon Musk , ni me imagino en qué se va a transformar si eso sucede. Me refiero al sistema de filtros, promociones y selecciones que hace el sistema para mostrar ciertos tweets y ocultar otros [1] .

Estos filtros hacen su trabajo basado en múltiples mecanismos, siendo los re-tweets, a quienes sigues, a quienes dejas de seguir, etc.. los más importantes. Ahora hay un downvote secreto que afecta mucho más los filtros. Y todo esto en formas desconocidas para nosotros. El resultado al final es que vemos un mundo (o un universo) basado en esos filtros y nuestra realidad se modifica completamente y no necesariamente acorde con nuestros gustos o preferencias, sino algo distinto, torcidamente diferente.

Basado en lo que yo veo en twitter, Javascript es lo mejor del universo de la computación, y usar PHP merece la pena capital, en la guillotina, seguida por descuartizamiento, y la cabeza frita en aceite.

¿Cómo puede ser eso posible? Javascript es un lenguage mañoso, a veces infantil, y torpe la mayor parte del tiempo. PHP en cambio es sólido, sagaz, fácil de usar, consistente y solvente. No tengo pruebas pero estoy seguro que en google hay más búsquedas del tipo “cómo se hace en javascript str_replace (…)” o “cómo hago un arreglo asociativo tipo PHP en javascript” que lo contrario. En PHP clásico no existen distinciones entre arreglos, diccionarios como en Javascript (o como python, no me hagan hablar). Javascript durante mucho tiempo tuvo lagunas en sus capacidades, es por ello que surgieron librerias como JQuery. Ahora es posible hacer aplicaciones sin esta librería, hace 5 años, era imposible (fetch está disponible desde 2016).

PHP y Javascript son dos lenguajes diferentes cada uno orientado a diferentes tareas. Claro que hay mucha gente en twitter que empuja Javascript porque son fans de Node.js y React, las plataformas predilectas hoy en día, al menos en lo que veo en twitter. Me pregunto si hay alguien empujando esta agenda. Por supuesto, las empresas pagan muy bien a los programadores con experiencia en estas plataformas, por ello la popularidad. Con frecuencia aparecen personas diciendo gracias Javascript, y aparece la foto de un carro o de una casa (sic). Los sueldos de los programadores PHP quizás no sean tan buenos porque hay muchos (oferta y demanda).

Otro detalle, es que Twitter premia los tweets que tienen re-tweet y los que tienen más respúestas/comentarios. Por eso, es terrible como los que están tratando de subir de nivel (en seguidores y relevancia) dicen cosas para generar polémica, de manera de obtener más respuestas con ellos y convertirse en tendencia. Otro truco es hacer una pregunta que motive a la gente a responder. Mientras más respuestas más relevancia y más posibilidad de nuevos seguidores. Finalmente, en el arsenal de trucos para lograr “engagement“, está decir algo equivocado: inmediatamente muchas personas saldrán a corregirte, abrá discusión y eso aumenta la relevancia.

Si me guio por lo que dicen los tweets que leo, con Javascript es suficiente para vivir. La verdad es que necesitas tener una batería de herramientas bajo el brazo. Sólidos conocimientos de back-end, algo (mejor mucho) de CSS y por supuesto, escribir con los ojos cerrados HTML. Por otro lado, PHP tiene soluciones para todo, incluyendo WordPress (este blog) y sus plugins que cubren el 100% de cualquier necesidad que cualquier compañía pueda tener pasada y futura. En algunos nichos (streaming por ejemplo) otras soluciones son más convenientes, quizás. Pero eso es un mínimo porcentage de los casos.

Todo programador web debe conocer Javascript, y continuar aprendiendo. ¿Puede ser un punto partida? Claro, pero como todos los puntos de partida, es apenas un primer paso de una largo camino.

[1] Elon está advirtiendo algo similar (con otra palabras), desde hace un tiempo para acá. En su último pronunciamiento, indicó que estamos siendo manipulados.

Dilemas

20-04-2022 9:55 AM

Esto está en cineforo así que voy a hablar de películas, y particularmente de su trama. Así que aquí van spoilers, muchos, se van a revelar detalles de la trama. Si ud. no ha visto estas películas, detenga la lectura y vaya a 9gag o algo así.

Ví estas películas en estos días (otra vez), las tengo todas en DVD. Netflix está horrible y el cable tiene las mismas películas desde hace 2 años, “Rápido y Furioso 1-7”, Harry Porter y Rambo I.

Prometheus

Una película muy criticada y donde, supuestamente, comenzó la debacle de la franquicia Alien. La crítica fundamental entre otras, son las cosas ilógicas que suceden. Estos elementos rompen el compromiso entre el espectador y la película: sorpréndeme, pero que tenga sentido. Por ejemplo, los protagonistas quitándose el casco a minutos de llegar a la nave extraterrestre, tocando con la mano desnuda todo, comportándose como aficionados y no como científicos. La operación ejecutada por el equipo médico donde le abren el abdómen a Elizabeth, extrae la criatura alien, y luego cierra la escisión con grapas, y sin ningún tipo de precaución, Elizabeth sigue caminando y saltando el resto de la película como si nada (se ve claramente que el líquido en la placenta del feto alien cae dentro del abdómen, y se funde en las entrañas sin ser extraido, esterilizado, limpiado, nada)

Pero lo peor, quizás, es que la nave luego de ser impactada, se devuelve, en vez de continuar su trayectoria de caída. Y justamente cae encima de las protagonistas de la película. Quizás porque el director (Ridley Scott) no podía perder la oportunidad de agregarle un efecto thriller a la pelicula, con una persecución de una nave cayendo encima de los personajes. O, quizás, porque el alien, el ingeniero, al ver que su nave es impactada, maniobra para caerle encima a ellas, y como no lo consiguió (totalmente), se baja y persique a Elizabeth Shaw (Noomi Rapace) hasta la capsula de supervivencia.

Pero ese no es el detalle que quería mencionar.

Cuando están preparando a Peter Weyland (Guy Pierce) para llevarlo a la presencia del ingeniero, se ven claramente 5 personas además de Elizabeth : Ford (Kate Dickie), la doctora, y otros 4 asistentes, incluyendo 2 guardias en la puerta. Cuando llegan a la nave alienígena, solamente está Ford y uno de los guardias, las otras 3 personas no están, y no aparecen más nunca, ni siquiera cuando Meredith Vickers (Charlize Theron) abandona la nave, y de hecho, Janek (Idris Elba), el capitán de la nave, tampoco los toma en cuenta cuando dá instrucciones para abandonar la nave. Suponemos que mueren en la nave, pero más bien quedaron enterrados en un error en el guión. De hecho, su presencia era inútil, quizás estaban ahí para dar la idea de que Peter Weyland era algo así como un rey, que necesitaba escolta especial y numerosa. Difícil de saber.

Enlace

La llegada

Es difícil describir el efecto que produce esta película porque no parece una película intima y romántica, pero eso es lo que es. Es, creo yo, una de las películas más intimas que puedo recordar. Estamos en la mente de la protagonista, como casi ninguna otra película lo logra, experimentando sus pensamientos, vivencias y sentimientos. La trama lo permite y lo facilita, de una forma brillante, y no por accidente, sino premeditadamente. La actuación de Amy Adams (Louise Banks) es formidable, y refuerza y apoya nuestra inmersión en sus pensamientos.

Lo que me lleva al siguiente problema.

O no es un problema, es un dilema más bien. Louise Banks es confrontada continuamente con este tipo de dilemas dado el poder que tiene para “leer el futuro” usando el nuevo lenguaje que aprendió. Los aliens lo usan continuamente y es la razón por la que están en la tierra: van a necesitar de la humanidad dentro de 3000 años. Y lo saben gracias al lenguaje.

Si ella sabe, como vemos, que su esposo Ian Donnelly (Jeremy Renner) la va a abandonar cuando le diga que su hija (Hannah) va a morir, ¿por qué se lo dice? Podemos suponer que la alternativa iba a ser peor, pero eso sería poner en duda el caracter de Ian: lo que al final sucede (su abandono) habla muy mal de su caracter, pero, ¿quiénes somos nosotros para cuestionar a un padre que pierde a su hija? Yo no me atrevo. Es un dilema.

Quedan algunas difíciles preguntas sin responder, pero quizás, ahí están las respuestas, lo que pasa es que necesitamos aprender el lenguaje. Mejor. O más. Mucho más.

Enlace

La chica en el trén

Hablando de películas intimas, esta película. Me atrae por la formidable actuación de Emily Blunt (Rachel), simulando toda la película que está ébria (lo cual es a veces tan o más difícil de ejecutar y ser convincente como simular una carcajada, o llorar). El guión es impecable, la actuación del resto del elenco femenino fue deslumbrante, particularmente Allison Janney (la detective Riley) que se nos presenta en un papel poco usual para ella, e impacta sobremanera por la fuerza de su sobria actuación, muy seria, muy bien calibrada, en contraste con el resto de los personajes femeninos que tienen una conducta errática e impredecible.

¿Y quién no ha actuado en forma errática e impredecible cuando tiene unos tragos encima? ¿Y quién no se ha sentido confundido cuando alguien le dice el día siguiente algo, y no recuerdas en lo absoluto de qué están hablando? Rachel sufre de una amnesia total, y termina creyendo que su conducta es deplorable cuando en realidad es un bebé que se queda dormida.

Y no, no tengo ningún dato significativo que apuntar, la película es perfecta, sin fallas en su guión. La incluyo en esta lista porque es mi favorita en esa lista de películas que vemos por casualidad y nunca olvidamos.

Enlace

Joker (Guazón)

Ya yo hice un review de esta película en su oportunidad, siendo un poco (o bastante) injusto, lo que es una prueba de que nunca coincidimos: yo todavía no sé qué estaba esperando de esta película. Ya la he visto 3 veces: todavía no lo se.

Decidimos qué es gracioso y qué no es de la misma forma que decidimos quién tiene éxito o no: ellos. Es algo así como que la locura es una ilusión, es la percepción de alguien y nosotros simplemente accedemos a estar de acuerdo con esa percepción.

Pero, ¿es la anarquía la solución? ¿el asesinato indiscriminado (sí es indiscriminado, es posible que Arthur asesinó a la “novia” (Sophie Dumond (Zazie Beetz)), y sin duda a la empleada en el asilo al final de la película. Es un dilema.

Enlace

Solía leer a Kafka también

01-04-2022 2:07 PM

Yo era un lector insaciable cuando era jóven. Con mi profesión y el advenimiento del internet, mis hábitos cambiaron. El hecho de tener que pasar 8-10 horas diarias (mentira, son 12) con los ojos clavados en una pantalla programando assembler, C++ y javascript tampoco ayuda. No me quedan muchas ganas de dedicar mi tiempo y mis ojos a descifrar jeroglificos en un libro.

Ahi quedaron varios libros en mi biblioteca a medio leer. De ciencia ficción, de terror (un libro con 20+ cuentos de Stephen King) , Ulises, Finnegan Wake, Hesse, Nietzsche, García Márquez, y muchos más.

A veces me dan tristeza. No se que suerte les espera en mi próxima mudanza porque las posibilidades de que realmente los lea disminuyen todos los años.

Así que trato de no comprar nuevos libros. Tengo varios años así. Creo que la última vez que compré un libro fue en 2018. Cuando las ganas se juntan con el tiempo, leo en formato de pdf. No más librerías para mí.

Yo solía leer de todo, incluyendo, por supuesto, La Biblia, lo cual me recuerda una anécdota, quizás el primer y único sermón que he dicho en mi vida (o algo parecido a un sermón). Estaba reunido oyendo a alguien muy religioso, no era un cura, hablaba hasta por los codos de Cristo y las parábolas. La persona que estaba a mi lado me conocía muy bien, así que interrumpió al orador, y señalándome a mi, dijo: “Él lee mucho también, él lee la biblia”, como si aquéllo fuera notable (al parecer, lo es para algunas personas que apenas han leido las comiquitas del periódico, a veces).

Yo contesté impertérrito: “Sí pero leía a Kafka también” (la reacción de la persona no cabe aquí, eso sería tema de otros post). Y ahora que lo pienso, la biblia y Kafka nos hacen sentir cosas similares, a veces. Nos hacen sentir insignificantes. Imáginate aquéllo, vas en el desierto durante años al parecer sin rumbo, siguiendo a un viejito, y no lo sigues por convicción propia, sino porque tu padre en su lecho de muerte, muchos años atrás, te lo ordenó. “Sigue a ese viejito”. Llega el día que ya no soportas, “quedémonos aquí, para dónde vamos, miren, ahí, ahi hay un manantial!”. “Aqui no es” me interrumpe alguien. “Tenemos que cruzar el río”.

No me imagino una imágen más fuerte de hacer algo sin sentido solamente porque todos lo están haciendo.

Pero entonces la biblia se pone divertida (a diferencia de Kafka).

Lo que viene entonces es un cuento largo de cómo fue que Josué hizo para que la gente que venía caminando 39 años siguiera haciéndolo para cruzar el río.

En realidad, no es un cuento divertido. En realidad, en ese momento comienzas a preguntarte cómo es que hay gente que le hace caso a todas estas historias. Y la verdad es que no le hacen caso. Son cuentos. Sirven para un propósito, no se supone que le debes hacer caso. Los libros crean imágenes que impresionan a nuestro cerebro para generar reacciones positivas, o a veces negativas.

¿Los dos asistentes de K. en El Proceso? O, quizás, los dos señores de levita que miraban a K., al final, al final del libro, lo miraban pegando mejilla con mejilla, mirándolo con ternura, para luego ejecutarlo? ¿Debemos hacer caso de eso? Que no importa nuestra disciplina, valores, gestos, pundonor, gallardía, valentía en nuestra vida, ¿ese va a ser nuestro final? ¿Que no tenemos defensa, y si la hay, no es más que un chiste?

¿Que la puerta que nunca abrimos, esa puerta, esa puerta que nos fue negada siempre, era solo para nosotros?

No es un cuento divertido

Nota bene: este post fue severamente editado para hacerlo apto para todas las audiencias. Transcurrieron 5 meses desde el momento que lo comencé hasta que lo terminé.

khpx update

25-03-2022 12:09 PM

Ha estado lenta la bitácora de khpx, apenas 35 días de trabajo en lo que va de 2022, eso es alrededor de 230 horas, quizás menos.

Pero tenemos un hito: el pasado 8 de marzo terminé una cadena de quests que estaba programando desde el 19 de julio de 2018. Tiene todas las características que va a tener mi engine de quests: voy a tratar de no agregar más nada: recolección de objetos en la superficie, recolección de habitantes, selección de habitantes basado en su adn utilizando el sensor de adn, etc. No parece complicado pero si lo es. Estos 4 años estuve no solamente implementando los quests en sí, sino considerando todas las posibilidades.

Un ejemplo: descubrí que se puede usar el sensor de adn para detectar los ciudadanos infectados estando el robot en el depósito de la nave. Se supone que este sensor solamente se puede usar una vez que el robot está en la superficie del planeta, en el área de la ciudad donde están los habitantes. Para implementar esto, estuve agregando scripts y código c++ durante unas 2 horas más otras 2 horas pensando cómo hacerlo porque estos son el tipo de cambios difíciles de implementar. ¿Se coloca en el script de la misión o en el script del objeto (del sensor)? ¿o en el script del robot? Al final quedó en el script del sensor, pues hace más sentido. El script ahora indica que este objeto solamente se puede ejecutar si el robot está activado (en manos del jugador) y si el robot está en la superficie del planeta. Todo muy obvio pero toma tiempo de implementar. Así por el estilo cientos de consideraciones, cientos de decisiones. Lo que me lleva a…

¿Cuál es la peor decisión que he tomado en el desarrollo de khpx?

Difícil de decidir cuál es peor, porque he tomado varias decisiones malas en estos últimos 4 años. Pero definitivamente sin pensarlo mucho, lo peor ha sido no con khpx en si mismo, sino con Summa, el editor. Summa (que espero escribir un post dedicado a él (o ella)) es un editor que permite manejar todos los datos del juego en forma consistente, unificada y tiene el objetivo de poner orden en el caos. Las misiones quedan todas organizadas en un solo sitio, se pueden visualizar, editar, modificar etc..

Yo no tengo idea de cómo hacen otros programadores para controlar toda la data persistente, pero mi solución es colocarlo todo en una base de datos, y crear una aplicación que maneje toda la data. Entonces el juego es como un visor de esa data . Lo único que el juego guarda es el estado: qu´é se ha hecho, donde se ha estado, etc.

Mi aplicación que maneja toda la data se llama Summa (como la Summa Teológica). Fue desarrollado usando Qt y aquí está el problema: si lo hiciera desde cero hoy, utilizaría Imgui, sin lugar a dudas. Qt es grande, pesado, complicado y grande y pesado. Está desarrollado con la versión de Qt 5.6 (creo que ahorita van por la versión 6.2, luego de llegar hasta 5.15), es open source, pero no hay distribución de librerías sino solamente el código fuente. Tarda 2 horas en compilar en mi máquina.

Es extremadamente fácil de usar, tiene un editor de gui, Qt Creator que permite posicionar los elementos de tu aplicación (texto, botones, drop down menus, etc.).

El problema es que al abrir una página dentro de la aplicación (Summa tiene 20 páginas) en windows aparece un nuevo ícono en la barra de tareas, es como si estuvieras abriendo una aplicación nueva. Sucede algo así como esto:

Cada aplicación ocupa un espacio en la barra de tareas, pero Saeta, una aplicación desarrollada en Qt (es una herramienta desarrollada por mi) tiene tres íconos porque cada ventana es como si fuera una aplicación diferente: el primer ícono es la aplicación en si misma, el segundo de la pantalla de configuración, el tercero la pantalla de “acerca de”.

Yo no quería eso para Summa porque es una app que voy a estar usando todo el tiempo (6 horas al día al parecer), y porque en mi trabajo de freelancer debo tener otras aplicaciones abiertas (Notepad++ para editar php, excel, putty, la cónsola con cygwin, otras). Tener la barra de tareas full de íconos afeta mi TOC (o OCD en inglés (“OCD often centres on themes such as … need to arrange objects in a specific manner“), así que me fui a Stackoverflow y busqué cómo se hace para que una aplicación Qt abra todas las ventanas pero usando un solo ícono: la respuesta es usar un StackedWidget. Así luce en QTCreator:

Cada línea es una pantalla diferente

Y efectivamente la aplicación abre cualquier cantidad de ventanas y utiliza un solo ícono en la barra tarea. Pero hay un problema, consecuencias David, el tiempo de compilación de una aplicación con un stacked widget de 20 ventanas es 10x el tiempo normal. Cuando hago un rebuild, puede tardar 8 minutos en vez de menos de un minuto, que es lo normal. Eso fue un error, y por supuesto eventualmente voy a tener que eliminar el stacked widget. No se si el problema se resuelve con las versiones nuevas porque yo trabajo en windows 7 y VS2013 y Qt 5.8 requiere Visual Studio 2017 y eso requiere Windows 10. Este cambio tendrá que esperar a mi nueva máquina que si todo sale bien será en algún momento de este año.