ocio


Hace al menos un par de meses, mientras conversábamos con Filupa acerca de la página web de SINCRO y de posibles mejoras e innovaciones, le sugerí de que tuviese presencia en Twitter. Como Filupa no es muy dado a las redes sociales, me preguntó “¿Y para qué va a estar SINCRO en Twitter?”. Y ahí fue cuando le sugerí que tuviese un bot que realizara tiradas de dados. Buscamos por la web, y no había nada funcional que hiciese lo mismo (sólo por web o por correo electrónico). Definimos nuestros usuarios objetivo: quienes juegan rol por foro, correo, chat o similares y necesitan un notario, o ministro de fe, que realice tiradas de dados en forma neutral. Delineamos un poco los requerimientos y le dimos la partida.

Lo primero fue escoger un lenguaje de programación con el que el programador voluntario (yo) se sintiese cómodo. Eso fue fácil, pues la mayoría de mis proyectos de programación recreativa los hago en java. Luego debíamos encontrar alguna API para Twitter escrita en java (no queríamos reinventar la rueda). Encontramos twitter4j y después de algunos errores de principiantes, teníamos un programa mínimo que lograba conectarse a Twitter con una cuenta de prueba. A eso lo siguió el programa para hacer follow a todos los followers. Y luego el programa que hacía las tiradas de dados.

Ahí fue cuando tuvimos que sentarnos y pensar en la forma en que queríamos que se realizara la interacción entre el usuario final (quien quiere realizar una tirada de dados) y el sistema (que haría la tirada e informaría algo de vuelta). La idea es que para un fin específico, el usuario debiese recordar un set de instrucciones lo más pequeño posible y no un manual de uso de 50 páginas.

La tirada de dados más básica ya tenía una notación ampliamente difundida y aceptada, por lo que fue la primera en ser implementada. Tirar X dados de Y caras, o XdY en notación estándar. Luego vino la composición de tiradas, los bonos, los malus, y varios otros tipos de tiradas asociados a diversos sistemas de juego: World of Darkness, New World of Darkness, Roll and Keep, Fudge, One Roll Engine y algunas otras menos ortodoxas como clima y rumbo.

Hasta el momento, el servicio operaba en modo de prueba, con una cuenta de prueba, en computadores de escritorio o notebooks. Si deseábamos que estuviese en producción necesitaríamos encontrar un lugar dedicado para poder albergar el servicio. Cotizamos algunos servicios de hosting, pero finalmente, gracias a donación de espacio, energía y conectividad, y al préstamo de un Asus Eee PC, no fue necesario desembolsar dinero alguno.

Ha sido un proceso entretenido, gratificante, en el que el trabajo de equipo con Filupa y el esfuerzo invertido, permitieron que el proyecto diese los frutos esperados y llegase a buen término, el servicio operando en Twitter, bajo la cuenta @dadinci.

Anímese y mándele un mensaje a @dadinci, la página de ayuda es esta.

Advertisements

Desde que me incorporé al mundo laboral, hace unos 12 años, siempre nos hemos visto enfrentados al mismo problema. Llega la hora de almuerzo y nos empezamos a mirar las caras, proponer lugares, descartar otros tantos, tolerar a los mañosos, mirar por la ventana para ver si está lloviendo, todo esto para finalmente poder salir a almorzar.

Muchas veces el tomar la decisión fue un proceso bastante complejo, más aún si la cantidad de comensales era mayor a cuatro. Y otras muchas veces, el destino fue cambiado durante la caminata al lugar original, o bien al comprobar que no quedaban mesas disponibles.

Para resolver este problema, primero en modo de broma y luego más en serio, junto a los compañeros de trabajo actuales ideamos un algoritmo para decidir donde almorzábamos:

Algoritmo de Almuerzo

Algoritmo de Almuerzo

Por un par de semanas funcionó sin problemas. Incluso algunas veces servía para poder oponerse a la opción predeterminada. Pero luego nos dimos cuenta que la selección diaria empezaba a volverse rutinaria y que, de no haber lluvia, nuestro universo de locales de almuerzo se reducía a 6 (5 de Lunes a Viernes y uno más a fin de mes).

Esto planteó el desafío de un nuevo algoritmo, que permitiese tener más variedad de lugares. Luego se agregó como requerimiento que se pudiese poner una nota a cada lugar y que se llevara registro de la cantidad de veces que habíamos asistido a cada uno.

El modelo preliminar resultante fue bastante más complejo que el anterior. Dependiendo del puntaje de cada lugar, se llenaban lugares en una suerte de ruleta, la cual luego era revuelta. Aleatoriamente se elegía uno de los lugares de la ruleta y se procedía a lanzar la moneda.

El lanzamiento de moneda fue un detalle algo sádico que permitió incorporar el número de visitas en el algoritmo. Por cada visita que hubiésemos hecho al lugar preseleccionado, se lanzaba una moneda. Si salía cara, se volvía a lanzar. Si salía sello, se descartaba el lugar preseleccionado y se volvía a la ruleta. Luego, si un lugar había sido visitado 5 veces, debían salir 5 caras seguidas para que pasara de preseleccionado a seleccionado. Claramente si un lugar no había sido visitado nunca y era preseleccionado, automáticamente pasaba a seleccionado.

Luego, dado que se usa la nota de cada lugar para determinar la cantidad de veces que se repite en la ruleta, la probabilidad de preseleccionar un lugar es:

Probabilidad de Preselección

Probabilidad de Preselección

Y la probabilidad de selección de un preseleccionado es:

Probabilidad de Selección

Probabilidad de Selección

De esta forma, en general se privilegian los lugares mejor evaluados, pero evita que salga siempre el mismo al que vamos siempre, con lo que debería quedar un poco más parejo.

Comentarios, críticas, observaciones, oportunidades de mejora, todos son bien recibidos.

Es normal para mí, pasar por ciertos períodos en que siento la inquietud de crear, de inventar. Y dependiendo del problema o situación que tenga a mano será el destino que tenga dicha energía creadora.

En algunos casos me ha servido en lo laboral, pues me ha permitido entregar una solución novedosa o entregar un aporte inesperado. En esos casos los llamo “pet projects”, porque son eso, una suerte de proyecto mascota, el que con algo de suerte y bastante esfuerzo, se puede convertir en algo de utilidad práctica. Recuerdo con especial cariño varios programas y una intranet que levanté en Entel, los que les hicieron más sencillo el trabajo a los usuarios.

En este momento estoy pasando por una de esos períodos creativos, y he decidido atacar un área relativamente nueva, la Visualización de Datos. Porque no da lo mismo mirar una tabla de varios cientos de filas de datos, que una infografía o diagrama que a primer golpe de vista te transmite mucho más que solo los datos. Dado que el campo de la Visualización de Datos es muy amplio, decidí comenzar por la automatización en la generación de diagramas de anillo y luego ver a donde me lleva la inspiración, la necesidad y el efecto serendipity.

El valor agregado fue el de elegir un formato astuto para generar los diagramas, de modo que si necesitasen retoques, no fuese una pesadilla y requiriese usar Photoshop. Por esas razones elegí el formato SVG, el cual esencialmente es texto. Con más detalle es un XML. Desde ese punto de vista, con cualquier editor de texto se puede modificar un SVG, pero si se quiere editar en forma gráfica, sé de al menos de un programa gratuito, Inkscape (licencia GNU GPL), por lo que me quedo tranquilo con lo de portabilidad y openness.

Les dejo los primeros diagramas generados por el programa que desarrollé (bash y awk). Como observación al margen, convertí los archivos de SVG a PNG solo para poder publicarlos, pues WordPress no permite archivos gráficos de formato SVG. Lo triste es que el tamaño del archivo aumenta en un factor de 10 (o más).

1. Aporte Fiscal del Presupuesto 2009 de Chile (fuente)

Aporte Fiscal Presupuesto Chile 2009

Aporte Fiscal Presupuesto Chile 2009

2. Votantes Inscritos por Región a Septiembre del 2009 (fuente)

Votantes Inscritos por Región a Septiembre del 2009

Votantes Inscritos por Región a Septiembre del 2009

3. Composición del Senado Chile 1990 – 2010

Composición del Senado Chile 1990 - 2010

Composición del Senado Chile 1990 - 2010

Personalmente me queda más clara la evolución de cada partido de esta forma que de la forma utilizada por emol.

En la medida que vaya fabricando nuevos programas para nuevas visualizaciones los iré agregando aquí. Espero sus comentarios.

“Me gusta cuando callas porque estás como ausente”

Así parte el Poema XV de Pablo Neruda. La verdad es que nunca me gustó la poesía de Neruda. Prefiero a ojos cerrados a Vicente Huidobro. Pero este post no trata de mis preferencias, sino que de hacer un ejercicio lúdico literario comunitario.

Muchas veces he imaginado diversas terminaciones alternativas para esa frase “Me gusta cuando callas porque…”:

  • es como si no estuvieras
  • hablas muchas leseras
  • me olvido de tí
  • estoy viendo tele

Así que los invito, queridos contertulios, a que ejerzan su capacidad creativa y dejen su aporte. Cómo terminarían la frase “Me gustas cuando callas porque…”.

Antiriddle

Hoy revisé, y ya llevo escritas 40 historias cortas de 100 palabras. 4000 palabras. Suena bastante.

Cuando cumpla un año de escribirlas, serán 5200.

En un par de semanas más se debería conocer el resultado del concurso de Metro y Plagio, Santiago en 100 Palabras.

Mantengo el sueño de editar un libro con 100 historias si es que me gano el premio (que no recuerdo a cuanto asciende, ojalá que alcance para 100 ejemplares). 100 libros de 100 historias de 100 palabras. Suena extraño, me gusta.

En varias blogs había visto los chatterbox, microaplicaciones incrustadas en la página que te permiten conversar con los visitantes. Se veía simpático, pero te “obliga” a estar en la página para conversar.

Por otro lado, Meebo es una aplicación web, de esas 2.0, que integra distintas sesiones de messengers en una sola pantalla, con una sola lista de contactos y todo eso. Bastante cómodo, pues tienes solo el navegador abierto, se salta filtros de firewalls y hasta te ofrece recordar las passwords de cada cuenta.

Hoy vi que Meebo estaba ofreciendo un chatterbox que te permite integrarse con la sesión normal de meebo, es decir, desde la página web donde pusiste el chatterbox pueden conversar contigo, y tu ves todos los mensajes en el mismo meebo, sin tener que ir al sitio del chatterbox ni nada.

La mala noticia es que WordPress no permite poner chatterboxes en sus blogs, sólo los agregados que ellos tienen definidos. Un gran bu para ellos.

Next Page »