PlayLab ‘10
El pasado domingo 7 de Febrero asistí a la clausura y presentación de proyectos del PlayLab.
PlayLab es un taller de videojuegos experimentales o conceptuales con mucho arte de por medio.
Ha sido posible gracias al esfuerzo de Flavio Escribano, los colaboradores y la financiación de PlayStation.
El desarrollo de los proyectos se ha realizado en MediaLab Prado (al lado del Caixa Forum Madrid).
De los ocho proyectos seleccionados me han gustado como profesional y usuario:
- The Pingus Plasticiline Experience
La experiencia se basa en el clon GPL del clásico título “Lemmings“, Pingus. El gameplay es sencillo. Primero se diseña un mapa sobre una cartulina usando unos patrones que especifica el tipo de material (pared, suelo, agua, etc). Luego empieza la partida. Usando plastilina de colores se definen las diferente acciones a realizar por nuestros pingus. Así por ejemplo se use puede usar un círculo rojo para indicar a los pingus que escalen una pared.
Desde el punto de vista técnico, se requiere de un proyector, un PC y un pequeño software de reconocimiento (intuyo que basado en color segmentation).
Creo que este proyecto puede tener una buena acogida por los centros de día, colegios e institutos, dada su alta interacción y la necesidad de resolver puzzles (grandes estimuladores del cerebro).
- Homeward Journeys
A este proyecto lo llamaría: Teatro 2.0.
¿os acordáis del Monkey Island, Maniac Mansion o algún Indiana Jones? Pues eso en carne y hueso. La idea es hacer un teatro donde se le da opción al espectador de guiar al personaje seleccionando diferentes acciones a realizar. Una correcta escenografía ayuda al espectador mostrando la información relevante sobre fondo (como si de un OSD se tratase).
Sin duda este proyecto puede atraer a los más jóvenes a las butacas de los viejos teatros. - Audiogames
¿alguna vez has intentado salir de un laberinto sin poder ver? Este es el objetivo de Audiogames. El jugador sólo se orienta en el laberinto por medio de sonidos que provienen de unos altavoces distribuidos estratégicamente. El prototipo está desarrollado usando OpenCV para PureData y el Blender Engine.
Este proyecto tiene un gran potencial social, desde la concienciación de los videntes, a la guía por espacios públicos para invidentes.
- The Mexican Standoff
Sin duda el proyecto más heavy. Se trata del típico duelo de los westerns donde el ganador (o el que sobrevive) es aquel que primero dispara usando su mente. Para ello se usa un dispositivo capaz de medir la actividad cerebral. El primer jugador que se “relaja” lo suficiente, gana. No me gustaría competir contra una profesor de Yoga. El escenario virtual es una escena específicamente diseñada del Counter Strike Source.
Creo que este juego causaría furor entre los colegas de veinte/treinta años. Tiene pinta de ser superadictivo.
Espero que estos proyectos que acaban de germinar tengan un largo recorrido y alcancen sus propósitos.
Hay que agradecer el esfuerzo de todos los responsables: ArsGames, MediaLab-Prado y PlayStation por hacer posible esta gran oportunidad.
Espero impaciente la nueva edición del PlayLab
Android 101
Desarrollando para Android ando.
He empezado a desarrollar para Android por pura necesidad. El origen de dicha necesidad se encuentra en el browser de Android. Os lo explico.
Resulta que haces una semanas empecé el desarrollo web para Android. Estaba haciendo un formulario de registro y es necesario que el usuario pueda subir una fotografía. Qué sorpresa me llevé cuando al previsualizar el formulario, el campo destinado para seleccionar el fichero mostraba: “Uploads disabled“.
¡Qué chasco! Sabía que el Mobile Safari de iPhone/iPod no lo permitía… pero ¿tú?¿Android?
En fin, después de buscar en opciones de seguridad sin éxito y ver los cientos de “WTF!” que circulan por los foros del androide, comprobé que iba a necesitar a empezar a desarollar con el Android SDK. Android me ha obligado ha usar su SDK, desarrollar una aplicación y subirla a su Android Market. Me cuestiono el porqué de la deshabilitacion de los uploads. ¿sera por cuestiones de capacidad? ¿O más bien cuestiones de marketing?
Lo primero que hice fue entrar en la web de Android, bajarme su SDK, bajarme el Eclipse, preparar el entorno, hacer un proyecto “hello world” y ejecutarlo en el emulador.
Para hacer estos pasos no me llevo más de 2 horas y media contando con la descarga. El tamaño aproximado de mi directorio de trabajo ronda el giga (Java+Eclipse+Android).
Para estar más tranquilo psicológicamente, queria comprobar que el hello world se ejecutaba sin problemas en mi HTC Magic. Cogí un cable comercial USB-micro, lo conecté, le dí a “Ejecutar” y de repente apareció un dialogo con el número de serie mi smartphone. Se ejecutó sin problemas.
Antes de empezar a codificar ni una línea si quiera, tenía muchas dudas sobre el proceso de subida y aprobación de aplicaciones al Android Market. Resulta que el proceso no es tan complejo ni largo como el análogo para el App Store. Eso sí, el pagar no te lo quita nadie. Unos $25 USD (aprox. 17€). La primera vez que pago algo a Google en 10 años. La verdad es que no me parece caro, menos si lo comparramos con los $299 del App Store de Apple.
Iba siendo hora de teclear algo.
Hay una cosa que tengo clara en todos los desarrollos (libres) que hago: no reinventar la rueda.
El propósito de mi aplicación es bien sencillo: formulario de registro de usuario con subida de fotos, pantalla de login y ejecución del navegador web con una redirección.
Decidí que la mejor forma de desarrollar la aplicación a la vez de ir aprendiendo Android, era hacer un desarrollo por milestones que se pueden resolver en sesiones de una hora.
Estos fueron los hitos fijados:
- Modelo de programación.
- Botón con manjeador.
- Hacer un Http Post.
- Hacer un Http Post multipart/form-data.
- Acceso a la galeria de fotos.
- Layout de aplicacion.
- Creación de sub-actividades.
- Lanzar el browser.
- Depuración.
- Subida al Android Market.
Hoy voy a tratar sólo el primer hito. Considero que es el más importante.Lo primero que hace el gestor de aplicaciones es examinar el AndroidManifest.xml. Como indica la extensión, se trata de una “Declaración de Intenciones” escrito en XML.
Dos conceptos aparecen en el párrafo anterior:
- Activity: es la clase asociada a una pantalla de la aplicación. Al menos es necesaria una clase Activity. Al ejecutar la aplicación, Android se encargará de instanciar una clase de la activity raiz. Android sigue el modelo MVC, modelo-vista-controlador. Respecto a la Activity, tenemos por un lado un fichero XML donde se especifica la UI (vista) y un fichero Java donde se encuentra la clase de nuestra Activity que hereda de Java. El modelo de desarrollo ideal, consiste en crear un layout con todos los elementos de interfaz que usemos y gestionar su callback en la clase asociada.
- Intent: para mi es la clase estrella, la clase “no reinventar la rueda”. Lo entiendo como un modelo “ONG”. Una aplicación declara una serie de habilidades que puede hacer en favor de otra aplicaciones mediante Intents. Se entiende mejor con un ejemplo. Si mi aplicación necesita obtener la ruta de un imagen dentro de la Galeria, basta con lanzar un Intent, especificando nuestro anhelo “Eh,alguien puede sacar el diálogo de la galeria y devolverme la ruta del fichero que el usuario ha clickeado” (es casi algo así).
Hay otros tipos de clases, como servicios en background, pero creo que estas son las más usadas.
Os dejo el enlace de un ejemplo donde se usan.
En la siguiente entrega, empezaremos a darle forma a la aplicación: “Hello, uploads“.
[Tip] Direcciones IPs virtuales
Seguramente sabréis que la dirección IP es una entidad lógica y que la dirección MAC es un identificador hardware único asociado a un dispositivo.
Esto quiere decir que, si tenéis una tarjeta de red, ésta tendrá una dirección MAC puesta por el fabricante (tipo: XX-XX-XX-YY-YY-YY) y una dirección IP asignada a mano o mediante DHCP.
En GNU/Linux es posible asociar múltiples direcciones IPs a una única interfaz de red. A esto se le conoce como interfaces virtuales. Se usa principalmente para poder acceder a diferentes redes IP simultáneamente.
El procedimiento es sencillo, supongamos que actualmente nuestra NIC eth0 tiene la dirección 192.168.1.10/24 y queremos poder comunicarnos con la red 10.10.10.x/24 usando la dirección IP 10.10.10.10. Basta con la siguiente línea:
sudo ifconfig eth0:1 10.10.10.10
Podemos añadir más interfaces virtuales sólo modificando el ethX:Y, donde X es la interfaz e Y el numero de dirección virtual.
Espero que si os encontrais en esta situación, os sirva este tip
P.D. Sé que en Windows es posible tener interfaces virtuales, pero nunca se ha presentado la necesidad.
[Tip] Hoard, gestor de memoria dinámica multiprocesador
Si alguna vez habéis programado en C/C++, casi seguro que habréis tenido que reservar y liberar memoria con malloc/free o new/delete.
Estas operaciones internamente gestionan la memoria de proceso asignando slices de memoria libre. Esta gestión tiene un coste u overhead de procesamiento. Si nuestro programa es multihebrado este procesamiento se vuelve más complejo.
Emery Berger, profesor de la Universidad de Massachusetts, se dio cuenta que la implementación de malloc()/free() de la stdlib, se podía mejorar y empezó a trabajar en Hoard.
Hoard ha sido comparado con otros gestores de memoria y ha salido victorioso en varios tests. Estos screenshots arrojan los detalles.
Esta disponible para GNU/Linux, Windows y Solaris bajo licencia GPL.
La gran ventaja de usar Hoard, es que no es necesario recompilar un programa (salvo que sea estático) para aprovechar sus bondades, ya que usa la misma sintaxis que las funciones originales de stdlib.
Para usarlo en GNU/Linux basta con indicar a LD, que precargue la libreria de Hoard:
export LD_PRELOAD=/ruta-a-libreria/libhoard.so
Ahora sólo tenemos que ejecutar nuestro programa con esta variable de contexto.
Es un buen gestor de memoria para aquellos desarrollos de servidores multithreads.
ideone.com: Programa, compila y ejecuta in the cloud
La nube está de moda. También entre los desarrolladores. En este caso, más que almacenar nuestros datos, lo que se ofrece es ejecutar y escribir nuestros programas.
Este servicio se llama ideone.
El nombre es auto explicativo de su misión: un solo IDE y vía Web.
La idea es sencilla: desarrollar, compilar y ejecutar programas o scripts. Existe un gran catálogo de lenguajes disponibles: C, C++, Java, awk, php, etc. Hay un total de 43 lenguajes disponibles. Incluso cuenta con GoLang (recordemos que la web oficial de GoLang también cuenta con un compilador/ejecutor online).
Muchas preguntas o dudas se me ocurren acerca de este web service.
Se puede por ejemplo establecer un buffer de texto como entrada del programa. Trata el texto del textarea como el buffer de stdin. No puede por ejemplo tratar varios argumentos en su invocación, pero tampoco tiene mucho sentido.
Os dejo un screenshot con un código C de ejemplo y su ejecución:
La aplicaciones prácticas que yo le veo son:
- Crear code snippets para solucionar problemas de tipo algorítmico (cálculo de fórmulas, planificadores, ciphers, etc) y compartirlos en Internet (tweet de la short URL).
- Desarrollar código desde dispositivos móviles (por ejemplo, hacer un script bash en el metro).
- Experimentar con nuevos lenguajes (como GoLang, Scala, etc).
¿se te ocurre alguna más?
En el apartado FAQ, podemos encontrar las típicas dudas sobre uso. En líneas generales, no se puede ejecutar código que haga uso de la red, ni crear/acceder a ficheros y la codificación es UTF-8.
Si quieres empezar a practicar con código ya creado, podeis mirar los ejemplos de la sección samples.
Curiosidad: por lo visto hay un lenguaje de programación llamado whitespace que también lo compila ideone. Sí, has acertado, se programa a base de espacios… Sin comentarios
Mis impresiones sobre iPad en Xataka
No quiero dejar pasar un minuto más sin agradecer a Javier Penalva, Xataka y a todo el grupo Weblogs SL por haber realizado la iniciativa “iPad de Apple, los xatakeros opinan” y haberme invitado a participar en la confección del post. He sido uno de los cuatro xatakeros que han dado su opinión y/o impresiones en caliente sobre el nuevo dispositivo de Apple, el iPad.
Creo que este tipo de iniciativas dan un significado completo a la Web 2.0.
Como bien decís, somos casi como de la familia. Tanto personalmente como profesionalmente Xataka me ha aportado conocimientos, opiniones del resto de usuarios, descubrimientos de nuevos productos y en definitiva un gran sitio donde pasar un buen rato hablando de nuestros gadgets.
Gracias de corazón, JMRH.
Fumar 2.0
No soy fumador, pero un día vi en un wholesale un cigarrillo eléctrico recargable mediante USB. Me quedé a cuadros. La descripción corta real del producto es “Mini electronic atomizer“. No genera CO2 ni contamina ni tiene nicotina. Mi expresión se volvió aun más perpleja cuando vi el correspondiente cargador. El precio no llegaba a los 9$, así que no tenia excusa para darle uso a mi oxidada cuenta de PayPal.
Por fin ayer llegó. Después de dejar cargándolo en un puerto USB de mi PC unas 8 horas, tal y como indicaban las instrucciones, estaba en disposición de empezar a “fumar”.
Le puse un nuevo recambio, lo enrosque y ya sólo era cuestión de empezar a pegar caladas. Cada recarga tiene entre 150 y 200 caladas y es bueno saber que cuenta con los certificados CE y RoHS.
Mi primera calada. Mientras inspiraba aire por la boquilla, un LED situado en el extremo del cigarro empezó a iluminarse directamente proporcional a la “potencia” de la calada. Tuve que empezar a reir
Además de iluminarse como un cigarro real, se produce un ruido familiar cuando el aire pasa por el “atomizer” (que buena palabrota para venderlo mejor). La exhalación produce un vapor de agua que rápidamente desaparece.
Vamos a lo más importante: el sabor.
Como he comentado al principio no soy fumador, pero sí he probado alguna vez el tabaco. Sabe como a regaliz. Bajo mi punto de vista, el sabor no está muy conseguido. Me lo vendieron como “Marlboro taste“. Estoy esperando a que algún amigo “condenado” de Marlboro, lo pruebe y avale o refute mi afirmación. Tengo que decir que no pude darle sólo un par de caladas y estuve un rato “fumando”.
Mis conclusiones tienen poco valor, dado que no fumo. No obstante, veo que si se cumplieran algunas premisas, este tipo de producto podría verse por la calle y por muchos establecimientos donde esta prohibido fumar. Imaginaos el uso que se le puede dar a este “atomizer” (que no es “cigarro”) en bares, restaurantes, cines, pubs, teatros y demás locales si al final se aprueba la nueva ley antitabaco. Respecto a la premisa es sencilla: tiene que saber a tabaco. Sobre la nicotina, este dispositivo carece de ella. Esta diseñado para ayudar a dejar de fumar. He visto otros en las farmacias que sí tienen nicotina. Según el caso de cada uno, preferiran un tipo u otro.
Bueno, voy a ver si le pego una caladillas (espero no fumar silicio)
A.L.S.A., Autobuses Lujosos para Sardinas Adosadas
Este post debería hablar sobre mi primera toma de contacto con el desarrollo para Android.
Mi grata experiencia con el androide tendrá que esperar por culpa del cabreo monumental que tengo con la compañía de transportes ALSA.
El motivo es sencillo: no me puedo mover.
Voy sentado en la última fila del autobús volviendo a Madrid después de pasar el fin de semana en casa de mis padres en Granada.
5 horas de camino me esperan en la que literalmente no me puedo mover.
Cronología.
El autobús lleva el cartel de lleno. Mis sufridos compañeros de fila tampoco pueden moverse. Las rodillas lindan por ambos lados con las rodillas de los compañeros adyacentes.
Mi rodilla izquierda ha tenido más suerte que su hermana, pues da al pasillo. Empiezo a sufrir un pequeño dolor constante en la articulación.
Como una imagen vale más que mil palabras, os enseño mi situación:
La parada de Almudariel sabe a gloria. Tiempo para estirar las piernas y practicar los ejercicios de estiramientos de Educación Física.
Vuelta al infierno. El pie derecho se me queda dormido. Estoy deseando llegar.
Lo más gracioso del asunto es que cuando compré el billete por Internet mi asiento estaba dos filas más adelante.
Llego a Madrid. Mientras bajo del autobús juro no volver a usar más ALSA. Llevaba ya año y medio sin usarlo por los mismos motivos (principal motivo que determino la compra de mi coche )
Me da mucha rabia no poder hablar bien de las bondades de este servicio publico, pero no las tiene, desde luego para mí no, si el confort y la salud están perjudicados.
Sólo le ruego a ALSA que antes de poner película, tarjeta de fidelización y publicidad como “hacemos tu viaje más fácil”, ¡dejen de tratarnos como sardinas en lata!
La TDT en mi PS3
Este año los Reyes Magos me han traido el PlayTV para la PS3.
No es un producto nuevo pero nunca lo había visto funcionando.
Después de unas semanas de uso estoy en disposición de comentar un poco sus virtudes y sus puntos flacos.
La instalación no tiene nada de complejo (como era de esperar). Basta con enchufar el cable de antena a la unidad PlayTV, conectar el cable USB entre el PlayTV y la PS3, e instalar el software que viene en un BluRay adjunto.
Una vez está instalado no es necesario introducir el BluRay cada vez que queramos ver la TDT.
En el menú del XMB, bajo la sección TV, tenemos el acceso directo a PlayTV.
Paso a esquematizar sus puntos fuertes:
- Doble sintonizador TDT: de esta forma mientras estamos viendo un canal podemos grabar otro.
- Grabación programada: podemos indicar mediante el EPG el programa que queremos grabar y la PS3 se iniciará automáticamente, grabará el programa y se volverá apagar (salvo que tomemos control con el mando).
- Se puede grabar un canal mientras estamos jugando (aunque avisa que la calidad del vídeo puede empeorar).
- Actualizaciones: de manera heredada por la PS3, PlayTv también tiene actualizaciones software que permite adaptarse al HD, incorporar nuevos codecs, solucionar fallos, etc.
- Posibilidad de ver la TDT en tu PSP utilizando Wifi, ya sea en tu casa o fuera.
Por otro lado, tiene algunos aspectos negativos que espero que alguna actualización y/o cambio de política (es mucho esperar) solucionen:
- Los contenidos grabados no se pueden sacar del sistema. Sólo se puede reproducir internamente (al menos yo no he visto la opción).
- Desaprovechamiento del doble sintonizador: si el sintonizador de grabación se encuentra parado, se podría usar para previsualizar canales, es decir, hacer un Picture-in-Pinture (PiP).
- Disipación de calor abundante. No sé la carga de proceso o el uso intensivo de los SPE por parte del software, pero a los 20 minutos de ejecución, el sistema de ventilación empieza a funcionar, y no para hasta que se cierre la aplicación.
- Autoarranque: igual que los juegos se puede autoarrancar cuando se enciende la consola, el sistema debería poder arrancar PlayTv de forma automática y visualizar el último canal visto.
Me gustaría poder probar la conectividad con la PSP, a ver si viene algún amigo que la tenga y puedo comprobar su funcionamiento.
En fin, la cuestión es que aunque el sistema es bastante mejorable, a mi me gusta.














