Archivo para septiembre 2008

Esto me suena (El Chumby II)

21 septiembre 2008

Algunas veces desarrollar es más una labor de investigación que de pura codificación. Se parece a esos juegos de detectives que traen (o traían) algunas revistas (hace mucho que no leo una). Empiezan enunciando unos cuantos hechos y finalizan con una pregunta. Al contrario que en la vida real, la existencia de una respuesta única que encaje con los hechos está garantizada.

Después del infructuoso intento para hacer sonar a Chumby, estos son los hechos:

  • El desarrollo de aplicaciones, o widgets, para Chumby se basa en Flash Lite 3.
  • Flash Lite 3 no incluye la capacidad de reproducir audio en stremaing.
  • Al encender Chumby, arranca automáticamente una aplicación que permite seleccionar un widget para su ejecución.
  • Este administrador incluye, además de la capacidad de seleccionar widgtes, alguna otra cosilla relacionada con temas de configuración y escucha de emisoras de radio on-line.
  • Este administrador esta escrito en Flash Lite 3
A la izquierda, el administrador de aplicaciones con el juego “Missile Game 3D” seleccionado. En la hilera de botones más a la derecha hay uno, en el centro, con una nota musical. A la derecha, el reproductor que se activa al pulsar el botón y que permite escuchar música en streaming

A la izquierda, el administrador de aplicaciones con el juego “Missile Game 3D” seleccionado. En la hilera de botones más a la derecha hay uno, en el centro, con una nota musical. A la derecha, el reproductor que se activa al pulsar el botón y que permite escuchar música en streaming

La pregunta es: ¿si el administrador está escrito en Flash Lite 3 (que no permite streaming de audio) cómo puede hacer sonar música?

Chumby es código abierto (¡genial!) de modo que no hay nada que impida buscar la solución al misterio (¡bien!).

Dando una vuelta por el Wiki de Chumby, encontré una referencia a un add-in llamado BTplay. Este complemento permite reproducir sonido en stremaing y es el que emplea el administrador para hacerlo. Sin embargo, el primer párrafo en la documentación de la API dice que no puede usarse desde un widget. Para utilizarlo, debes sustituir el administrador por tu propia aplicación.

Chumby, a la izquierda, disfrutando de un chute de código puro via USB. A la derecha, el mismo Chumby, esta vez de frente, mostrando la respuesta a una petición realizada al servidor en Rockola.fm

Chumby, a la izquierda, disfrutando de un chute de código puro vía USB. A la derecha, el mismo Chumby, esta vez de frente, mostrando la respuesta a una petición realizada al servidor en Rockola.fm

Esta sustitución no puede hacerse del mismo modo que se instala un nuevo widget. La única forma es escribir una película Flash e insertarla en el chumby por uno de sus puertos USB. Todo el proceso se realiza a través de una consola SSH que hay que configurar previamente.

Antes de liarme a reproducir música, primero una prueba de concepto para ver si arranca y ya, de paso, comprobar que la comunicación con el servidor en Rockola.fm es posible. Sorprendentemente, éxito total y a la primera (no tengo abuelas) como testifica la foto más arriba.

El siguiente paso: ver si el BTplay existe y que además funciona

En previsión de que este fin de semana iba a dedicar un rato a Chumby, le pedí a Nacho que codificara una película Flash sencillita y que permitiera seleccionar entre tres emisoras del propio sitio para su reproducción. Aprovechando que teníamos que recompilar nuestro PHP en desarrollo, Nacho escribió el código utilizando las funciones para streaming incluidas en la versión normal de Flash.

Nueva prueba de concepto sustituyendo las llamadas a las funciones de Flash por llamadas a las funciones de BTPlay. Otra sorpresa y otro éxito total a la primera (tampoco me quedan abuelos):

selección entre tres de las emisoras preconfiguradas en Rockola.fm incluyendo capacidad para avanzar tema

Suficiente para comprobar que es posible: selección entre tres de las emisoras preconfiguradas en Rockola.fm incluyendo capacidad para avanzar tema

Aunque se trata de un desarrollo con poca funcionalidad, lo importante es que el concepto está probado: Chumby puede usar Rockola.fm. Hay que hacer pocos cambios en el lado de los servidores (fundamentalmente relacionados con seguridad y autenticación) y el trabajo es prácticamente sólo de interfaz:

Un poco de “Paint Brush” (ni siquiera Photshop) para viajar al futuro. Mi Chumby tuvo una infancia dificil y a eso se debe su aspecto sucio y el frontal desencajado. Un Chumby cuidado y bien alimentado tiene otra pinta

Un poco de “Paint Brush” (ni siquiera Photshop) para viajar al futuro. Mi Chumby tuvo una infancia difícil y a eso se debe su aspecto sucio y el frontal desencajado. Un Chumby cuidado y bien alimentado tiene otra pinta

Monitorización (Sistemas II)

15 septiembre 2008

En una tienda de electrodomésticos basta con echar un vistazo a la sala de exposición para ver como marcha el negocio. Cuesta poco averiguar si hay demasiada cola en una caja o si son muchos los clientes no atendidos. En Internet lo único que puedes ver es un puñado de luces parpadeantes si los de seguridad te dejan entrar en el CPD. La mitad de los rockoleros pueden estar “colgados” y las luces siguen parpadeando como si nada. No se tiene la más mínima idea de que está pasando ahí detrás ni para bien ni para mal.

La monitorización sirve para medir por lo que está muy ligada con la calidad y por tanto aplica en todos los ámbitos del proyecto, Pasa por el estado de los sistemas, la gestión de datos, el uso por parte de los rockoleros e incluso el código.

En el nivel básico es necesario conocer cuál es el estado de “salud” de todo el hardware. Saber si algún disco duro está a punto de llenarse, si un servidor ha caído o si, a este ritmo, el ancho de banda disponible será insuficiente en media hora. Nagios hace un buen trabajo informando cundo un servicio se deteriora y, posteriormente, si se recupera. Hay que tener un corazón templado para recibir un correo con el asunto “** PROBLEM alert – Garfunkel preproserver/Load is CRITICAL **” porque normalmente suele venir otro con un tranquilizador “** RECOVERY alert – Garfunkel preproserver/Load is OK **”.

Nagios anuncia riesgos o desastres en toda regla pero viene bien disponer de datos continuos sobre la carga en los distintos sistemas. Las herramientas que proporcionan esta funcionalidad tienen, en un extremo, la capacidad de capturar la información y, en el otro, la de mostrarla gráficamente. Cacti planifica la medición de distintos parámetros, los almacena en una base de datos mySql y luego los explota a través de un montón de gráficos:

Cacti monitorizando el ancho de banda en una apacible tarde de sábado

Cacti monitorizando el ancho de banda en una apacible tarde de sábado

Nagios y Cacti son herramientas de código abierto que vienen preparadas para monitorizar todo lo importante como la carga de la CPU, el uso de memoria y discos o el tráfico de red. Se basan en protocolos estándares, como SNMP, de modo que prácticamente cualquier cosa encaja y lo que no quepa se le puede añadir mediante plugins personalizados.

Superadas las situaciones de crisis el siguiente nivel de monitorización se refiere a la interacción de los rockoleros con el sitio. Google Analytics es muy práctico para conocer el origen de las peticiones, número de páginas vistas, etc. Sin embargo, cada servicio en Internet tiene alguna peculiaridad representada por magnitudes más allá de la capacidad de Google Analytics (al menos en su modo estándar). En Rockola.fm nos interesa conocer en un vistazo asuntos como el éxito de las búsquedas, el método de selección preferido por los rockoleros o los ratios entre selección y tiempo de escucha:

Conocer los diferentes rangos en el número de resultados obtenidos desde nuestro motor de búsqueda nos dice mucho sobre su efectividad y en donde debemos mejorar

Conocer los diferentes rangos en el número de resultados obtenidos desde nuestro motor de búsqueda nos dice mucho sobre su efectividad y en donde debemos mejorar

Esta información no es crítica para el servicio pero detecta problemas de usabilidad y nos orienta sobre por donde debemos mejorar. Todas las noches, en las horas valle, se procesan los logs donde se ha registrado la actividad diaria de los rockoleros. Este proceso alimenta un data warehouse de modo que cada mañana disponemos de información explotable sobre la evolución del sitio. No hemos encontrado ninguna herramienta libre que nos ayude con esto así que se trata de un desarrollo propio en el que hemos incluido funcionalidades de CRM. La parte gráfica se ha resuelto con la GD library:

Mientras llega el LCD del 100” monitorizamos en una mampara de la oficina toda la información suministrada por Cacti comparándola con el análisis de nuestros propios logs desde el 27 de febrero de 2008 en que abrimos la beta privada

Mientras llega el LCD de 100” monitorizamos en una mampara de la oficina toda la información suministrada por Cacti comparándola con el análisis de nuestros propios logs desde el 27 de febrero de 2008 en que abrimos la beta privada

Pero, sin duda, el más sofisticado de nuestros sistemas de monitorización es el que avisa a la gente de catalogación para que mantenga sus manos fuera de la base de datos. Esto ocurre durante los procesos masivos relacionados con el sistema de recomendación:

“manos quietas”

Verde: “a catalogar”. Rojo: “manos quietas”

La bola (Catalogación u opinión II)

6 septiembre 2008

Al visualizar la ficha de un libro, Amazon muestra las míticas referencias tipo “los clientes que compraron este libro también compraron estos otros”. Uno casi no es consciente de que elegir un enlace proporciona información suficiente para empezar a recomendar. Me divertí mucho leyendo Snow Crash después de descubrir a Neal Stephenson, con un solo clic, buscando información sobre William Gibson. El sistema de recomendación de Amazon, que hace cosas más complicadas como tener en cuenta toda tu navegación y no digamos si incluso compras algo, proporciona buenos resultados sin que el usuario perciba que está realizando algún trabajo.

En general, cualquier sistema de recomendación precisa una entrada (semilla) por parte del usuario. Cuando accedes a Internet esperas obtener el mejor de los resultados con el esfuerzo mínimo. La semilla debe ser lo más simple posible.

Trasladado a música inmediatamente se nos ocurren algunas ideas para obtener la semilla: especificar directamente el tema que quieres escuchar, al menos el artista o más sofisticadas como el género o estilo. Aunque interesantes, presuponen un conocimiento que probablemente el usuario no tenga (o no le apetezca expresar) porque es lo que está precisamente buscando.

Joaquín llevaba tiempo dando vueltas a la idea de utilizar algo tan relacionado con la música como el estado de ánimo. Su modelo contemplaba dos parámetros fundamentales cuyos valores pueden representarse en un eje de coordenadas:

Prueba de concepto, con unos pocos cientos de temas, donde la bola, con mas agujeros que un gruyere, es más rectangular que redonda. El pegote naranja representa un eje de coordenadas de modo que todos sus puntos producen una combinación distinta de dos valores

Prueba de concepto, con unos pocos cientos de temas, donde la bola, con mas agujeros que un gruyere, es más rectangular que redonda. El pegote naranja representa un eje de coordenadas de modo que todos sus puntos producen una combinación distinta de dos valores

Como siempre, un par de días de codificación y prueba de concepto con buenos resultados a pesar de lo primitivo. De hecho, semanas más tarde la utilizamos como música de fondo en la fiesta de inauguración de Rockola Media Group donde los invitados se acercaban al PC y clicaban libremente.

Validado el modelo funcional quedaba la parte relacionada con la interfaz. ¿Cómo transmitir la idea de que estás seleccionando por estado de ánimo?. No entraré en detalles pero después de semanas, en las que a la menor oportunidad se le daban cien vueltas al asunto, tomamos la decisión de asociar el estado de ánimo con un gradiente de colores.

En ese momento estábamos preparando el prototipo para las pruebas de usabilidad donde el rectángulo se transformó en elipse, con un color de fondo desde blanco a negro y añadiendo “letrerillos” informando de los valores extremos para cada una de las variables:

Joaquin pintarrajeando la bola en su fase eliptica mientras Olga explica el resultado de las pruebas de usabilidad. Prototipo totalmente funcional trabajando ya sobre algunos miles de temas

Joaquín pintarrajeando la bola en su fase elíptica mientras Olga explica el resultado de las pruebas de usabilidad. Prototipo totalmente funcional trabajando ya sobre algunos miles de temas

La solución no nos terminaba de convencer y las pruebas de usabilidad confirmaron que a los usuarios tampoco. Además, el rectángulo seguía presente en el diseño de modo que los valores en los vértices se perdían al circunscribirlo en una elipse. Por otro lado, ya teníamos el diseño de la esfera de colores pero no había modo de encajarla en el rectángulo.

Fue entonces cuando Olga tuvo la idea feliz y que siempre estuvo enfrente de nuestras narices. La solución era evidente, cada punto en la bola queda definido por su distancia del centro y su ángulo. Justo dos valores: uno para cada parámetro. El primer parámetro varía conforme giras en la bola y el segundo cuando te acercas o alejas del centro. Ahora parece trivial pero puedo asegurar que costó parirlo.

En el colegio nunca me terminaron de convencer aquellos ejercicios de matemáticas que empezaban con la frase “Pasar a polares…”. Han tenido que transcurrir algunos años para descubrir su utilidad.