jueves, 10 de junio de 2021

El problema de los foros de PSeInt

No se qué hacer con los foros de PSeInt, pero tarde o temprano voy a tomar alguna decisión drástica.

Al principio de los tiempos, cuando recién empezaba con el proyecto, recibía con alegría cada mensaje individual que alguno de los pocos usuarios se tomaba el trabajo de enviar. Sin importar lo útil, o inútil que fuera el contenido, leía y respondía a cada uno, en cada foro.

Con el tiempo pasaron dos o tres cosas bastante malas que me llevaron al estado actual: casi no miro los foros, ignoro el 95% de los mensajes. ¿Qué pasó?

lunes, 25 de enero de 2021

¿Qué estuve haciendo el 2020?

Como para sacudir un poco el polvo que se acumuló en este blog arranco tarde el año con un post más relacionado a la docencia que a los proyectos de software que le dieron origen. Pero esta vez escribo mirando hacia atrás. Digamos que este 2020 que al fin terminó fue cuanto menos "complicado", y todo lo que pasó derivó en un silencio de radio para este blog, y en casi nulas actualizaciones para esos proyectos.

lunes, 28 de septiembre de 2020

Probando otros sabores de GNU/Linux

Hace algo más de un mes cambié el disco de mi notebook y tuve que reinstalar todo. Y por primera vez desde que uso GNU/Linux, instalé en mi PC principal algo que no es Slackware. Pasé más de 20 años usando exclusivamente Slackware en mis PCs de trabajo. Probé otras distros en otras PCs o en máquinas virtuales, pero con ninguna había trabajado demasiado en serio. Ahora intenté con Fedora 32. Esperaba encontrar problemas durante la transición, y lo hice. Pero no fueron del tipo de problemas que esperaba.

miércoles, 29 de julio de 2020

Sin comentarios

Pasé gran parte de los últimos meses trabajando en un proyecto nuevo. Lo  estoy desarrollado en C++ moderno y aplicando absolutamente todo lo que aprendí de mis errores en estos años. Y hay algo raro que se dio sin querer con cierta naturalidad en el código: casi no hay comentarios. Eso no suele ser una buena señal, pero en este caso sí que lo es.

miércoles, 8 de julio de 2020

Embeber recursos dentro de un ejecutable en GNU/Linux

Trabajando en un nuevo proyecto que tiene que ver con visualización y usa OpenGL me encontré con el problema de cómo distribuir los shaders. Los shaders son, para este caso, simplemente archivos que el ejecutable necesita encontrar. Mi problema es que quiero un ejecutable que no requiera de otros archivos, porque eso puede generarme algunos inconvenientes.

La pregunta es entonces ¿cómo embeber recursos en un ejecutable en GNU/Linux? ¿Cómo hago que esos archivos extra estén dentro del ejecutable, y cómo los recupero desde mi código C++? La respuesta es simple, nada de otro mundo; pero creo que poco conocida. No es la primera vez que tengo este problema, pero en las anteriores no sabía ni había podido encontrar la respuesta.

jueves, 11 de junio de 2020

Actualización de PSeInt: las mejoras que se ven

Ya escribí en lineas generales sobre los problemas y las soluciones de la actualización de wx en PSeInt y ZinaI. Ahora seguramente vendrán cada tanto posts con detalles de cosas más particulares. Nuevas funcionalidades, o nuevos problemas específicos de alguno de los dos que valga la pena comentar. En este, el detrás de escena de las dos diferencias más notorias en la última versión de PSeInt: las anotaciones, y los operadores unicode.

lunes, 4 de mayo de 2020

Finalmente, el paso a wx3 y unicode en Zinjai y PSeInt

Hace años que me quejo de mí mismo por estar atado a la versión 2.8.12 en modo ansi de wxWidgets. Siempre decía que el cambio a las versiones 3.x, junto con el paso al modo unicode, requería muuucho trabajo. Necesario, sí, pero demasiado para el poco tiempo que disponía. El problema de macOS y los 64bits me obligó a concretar en parte la tan postergada migración de PSeInt. Quedaron conviviendo ambas versiones, y de a poco la versión 3 fue ganando terreno. Sin embargo, culpa de estos cambios aparecieron errores nuevos, algunos bastante notorios.

sábado, 25 de abril de 2020

Un volante virtual para GNU/Linux

En épocas de aislamiento obligatorio hay que invertir el tiempo libre en casa. No es que tenga más tiempo libre, solo que funciona distinto. Entre las cosas que empecé (o que volví) a hacer a cambio de las que temporalmente no puedo está jugar videojuegos. Tenía desde hace años una deuda pendiente con el fantástico Grand Prix 4 de Geoff Crammond. El problema fue que mi viejo joystick comenzó a fallar a mitad del campeonato. En un simulador, es muy importante que la entrada sea analógica; el teclado degrada mucho la experiencia. Y tenía que resolverlo sin salir de casa.

viernes, 21 de febrero de 2020

La docencia, el paso del tiempo y el sentido común

Como todos los años, cuando están por empezar las clases, paso por una etapa de introspección durante la preparación de ese primer contacto con los nuevos ingresantes. Ya llevo casi 15 años "enseñando". Y ya he pasado también más de 15 "aprendiendo", la mayoría de ellos formalmente entre las carreras de grado y posgrado. ¿Quiere decir esto que soy un gran docente? ¿Que la tengo reee-clara en esto de la educación? Terminantemente NO! Hacerlo muchas veces no implica hacerlo bien si no hay mejora entre una y otra vez, si se repiten todos los años los mismos errores.

viernes, 6 de diciembre de 2019

Reduciendo las dependencias de PSeInt en GNU/Linux

Así como me vi obligado a repensar el "paquete" de PSeInt para macOS a raíz del problema de los 64bits; tuve problemas similares en GNU/Linux. Para empezar, una de las principales bibliotecas del sistema que necesito ya no aparece en todas las distribuciones. Por seguir, una nueva que agregué por el tema del renderizado de texto también trajo sus problemas.

lunes, 25 de noviembre de 2019

Renderizado de Texto en el Editor de Diagramas de Flujo

Encontré casi por casualidad una idea para renderizar fuentes con OpenGL aparentemente mucho mejor que la que venía usando en el editor de diagramas de flujo de PSeInt (psdraw). Mi sorpresa fue grande. Conocía el concepto, pero no implementado de esta forma. Para esa aplicación (texto), resulta muuuy simple y los resultados son muy buenos.

martes, 19 de noviembre de 2019

Los desafíos de portar PSeInt a macOS Catalina (3/3): Los últimos detalles

Ya conté los problemas y soluciones para poner en marcha un toolchain para las nuevas versiones de macOS, y la migración del código de wx 2 ansi a wx 3 unicode, en GNU/Linux. Solo me faltaba combinar todo esto para ver si andaba en macOS, si tenía un paquete para publicar en el sitio. Por supuesto que no anduvo a la primera. He aquí los últimos detalles de esta historia.

lunes, 11 de noviembre de 2019

Los desafíos de portar PSeInt a macOS Catalina (2/3): PSeInt vs. wxWidgets

Siguiendo con la serie de problemas y soluciones relacionados a la compilación de PSeInt para macOS Catalina, ahora toca hablar de la relación entre PSeInt y la biblioteca wxWidgets. Resumiendo: PSeInt estaba escrito para una versión muuuy vieja de wx; y además cuando lo empecé había dos formas de compilar wx, y PSeInt usaba la que ya casi no existe. Por esto, aún teniendo un toolchain nuevo que puede compilar una wx nueva, el código de PSeInt requirió de muchísimos cambios y ajustes.

lunes, 4 de noviembre de 2019

Los desafíos de portar PSeInt a macOS Catalina (1/3): El Toolchain

Finalmente PSeInt anda (eso parece) en macOS de 64bits! Las versiones anteriores eran de 32bits, y la novedad en macOS Catalina es que ya no acepta aplicaciones de 32bits. Las versiones previas de macOS habían empezada a avisar que en cualquier momento esto iba a suceder. Pensé que esperarían más tiempo, pero no, pasó, y PSeInt no estaba listo.

¿Por qué? ¿No es simplemente recompilar todo con otras banderas? Resulta que no, que tenía vaaarios problemas. El primero de ellos era obtener acceso fácil (automatizable con scripts) y permanente (no una mac prestada, algo que tenga siempre en mi propio sistema) a un toolchain adecuado.

martes, 27 de agosto de 2019

Reviviendo una vieja funcionalidad de ZinjaI

En algunos prácticos de computación gráfica les damos a los alumnos programas que implementan algo visto en teoría para que experimenten: a) cambiar cosas, predecir el resultado y validar la predicción; b) pensar un resultado, deducir qué hay que cambiar, y validar la deducción; o c) si todavía no pueden predecir ni deducir nada, cambiar al azar y observar para desarrollar una primer intuición de qué hace cada cosa. Entonces, quiero programas donde sea fácil y rápido cambiar cosas.

Podemos empezar por decir que para cambiar el estudiante debe modificar el código, pero eso puede hacer que el loop de retroalimentación sea lento y tedioso. El plan B es programar alguna interfaz; pero como usamos bibliotecas muy simples (como FreeGLUT), no hay widgets o similares. Las alternativas parecen ser: a) programar controles propios, pero entonces es más código accesorio para ensuciar el ejemplo; b) usar mejores bibliotecas, pero entonces agregamos otra dependencia. Pues bien, ZinjaI viene al rescate con una tercera opción.