www.rdiaz.es

Página personal y blog de Roberto Díaz Ortega
RSS icon Email icon Home icon
  • La revolución Kinect

    Posted on 27 January 2011

    El lanzamiento de Kinect hace par de meses ha traido consigo una repercusión impeesionante entre la comunidad de desarrolladores a nivel internacional.

    El hecho de esta repercusión esta condicionado por el hecho de disponer de unas especificaciones técnicas increíbles con sensores infrarrojos, que permiten determinar la profundidad combinados con una cámara en el espectro visible y un software interno que permite la deteccion a alto nivel del cuerpo (deteccion de esqueleto y acciones gestuales)

    Inicialmente Kinect fue concebido como el nuevo accesorio de Xbox pero despues de que comenzaron a verse en internet las primeras pruebas de la mano de desarrolladores independientes en PCs. Desde esas primeras demos, cada vez son más los kinect que estan conectados a PCs en vez de a Xbox.

    Kinect creo que va a suponer una revolución en el desarrollo de interfaces de usuario y en la interacción hombre máquina. Estos días ya se esta rumoreando que Microsoft podría estar preparando una versión oficial de los drivers de Kinect, ya que el proyecto OpenNi.org (actuales drivers para PC de kinect) han sido desarrollados por programadores independientes bajo licencia GNU. Se rumorea tambien que el uso de Kinect podría ser la nueva revolución en el futuro Windows 8.

    El potencial de Kinect creo que va mucho más allá de la Xbox o el PC, creo que puede ser el dispositivo con el que nos comuniquemos con cualquier tipo de dispositivo de caracter industrial o de control. A lo meor quién sabe si en par de años estamos controlando nuestra televisión sin necesidad de mando a distancia, o poniendo la lavadora sin ni siquiera tocarla, vamos un futuro Minority Report total… :P

    Aquí dejo un pequeño vídeo donde se ve el posible potencial de Kinect controlando unas simples fotografías. Aunque es un vídeo relativamente de hace poco tiempo ya la cosa ha avanzado bastante….

    YouTube Preview Image

  • Augmented Reality

    Posted on 18 May 2010

    Aquí pongo el video de mi primera prueba con realidad aumentada sobre Android. El modelo no ha sido desarrollado por mí, lo he descargado desde Resource.blogscopia.com . Todavía tiene algún problema de oscilación a la hora de detectar el patrón pero eso ya va a tocar depurarlo más adelante. Ahora toca centrarse en otras cosas.

    Por cierto, para la edición del video sin necesidad de estar con final cut o premiere he usado Jaycut, un editor de videos online ideal para hacer cosillas sencillas.

  • ¿Realidad o Ficción?

    Posted on 16 May 2010

    Últimamente el término de realidad aumentada esta en boca de todos. Ya empiezan a ser habituales aplicaciones que fusionan el mundo real con un mundo virtual. Las aplicaciones que están apareciendo me llevan a la pregunta, ¿La realidad aumentada es una moda o ha venido para instalarse en nuestras vidas?

    Una moda porque realmente a día de hoy la realidad aumentada esta muy focalizada en el marketing como una nueva forma de vender más atractiva y que es capaz de impactar y dar imagen “innovadora y moderna” de cualquier producto. Ejemplo de esto puede ser la siguiente campaña de Lego:

    YouTube Preview Image

    Pero más allá de una campaña publicitaria, ¿la realidad aumentada puede ser útil en nuestra vida diaria? En esa línea lleva algún tiempo trabajando Layar, que proporciona la posibilidad de crear capas de contenido geolocalizado con la posibilidad de geolocalizar modelos en 2D y 3D. Actualmente el uso de Layar esta centrado en la localización de comercios, sitios de interés , geolocalización de tweets, etc…

    En la línea de integrar la realidad aumentada en nuestras vidas, Pranav Mistry un doctorando del MIT ha desarrollado un sistema para integrar el mundo virtual directamente en el mundo real y conseguir una experiencia de realidad aumentada mucho mejor que aquella que podamos conseguir con un pc o un simple móvil (La presentación es muy muy buena).

    Quién sabe si en los próximos años terminamos yendo así por la calle al más puro estilo Minority Report …. :P

  • Resaca del ADC2

    Posted on 1 December 2009

    Anoche a eso de las 22:30 hora canaria llegó el mail con el resultado del ADC2:

    Thank you for participating in the Android Developer Challenge 2. The results are in, and unfortunately, your application DJ’it was not chosen by users and judges as a prize winner. We appreciate your participation and hope that you will upload your application to Android Market for users around the world to enjoy. Please note your application will not automatically appear to users in the Android Market, so you’ll want to publish it when you’re ready (http://market.android.com/publish/).

    We will be announcing all of the winners publicly today, November 30, on the Android Developers Blog (http://android-developers.blogspot.com).

    Thank you for your participation in ADC 2.

    ADC2 Support

    Después de la resolución llega el momento de la reflexión. A pesar de no haber ganado, estamos bastante contentos de haber llegado hasta donde llegamos. Al fin y al cabo participamos casi como hobbie, porque desarrollar una aplicación concreta era una forma práctica de aprender a usar Android.

    Comenzamos el desarrollo de DJ’it a finales de Julio con la concepción de la idea, pero realmente fue a principio de Agosto cuando comenzamos a escribir las primeras líneas de código.

    El desarrollo comenzó con la reproducción de audio, la creación de los 2 canales y transición entre ambos. Esta funcionalidad no nos dio muchos problemas y en apenas par de días estaba ya funcionando el reproductor. Con el reproductor superado la siguiente fase fue la elaboración del compositor. Este fue quizás el mayor quebradero de cabeza de la aplicación, porque el JetPlayer que incluye android es un poco limitado y tuvimos muchísimos problemas para conseguir evitar problemas de timming y lags en las transiciones.Después de casi 3 semanas peleando con el JetPlayer conseguimos implementar el compositor.

    Llegados a este punto teníamos problemas… Tanto Gema como yo estabamos liados en el trabajo y nos iba a ser imposible seguir durante la 4ª semana por lo que tendríamos que terminar la aplicación el fin de semana….

    El Viernes a las 3 de la tarde empezó la pesadilla, teníamos 2 aplicaciones independientes (Reproductor, compositor) y no teníamos ni idea de como usar el GPS ni la conexión de red del android. Teníamos unas 36 horas para unirlo todo y terminar lo que no teníamos hecho. Además teníamos que adaptar el diseño de la aplicación que había desarrollado Oscar a los trozos de código que teníamos. Realmente con poca esperanza empezamos a trabajar…

    El viernes terminamos de programar a eso de las 4 de la mañana, era hora de dormir un poco y retomar el trabajo. A las 10 de la mañana ya estábamos otra vez en marcha y ya en ese momento teníamos medio encaminada la interfaz del compositor y parte del reproductor. Después de programar hasta eso de las 3 de la mañana…. En la madrugada del Sábado ya teníamos el compositor terminado, el reproductor casi finalizado y teníamos que ponernos con la parte de red y el GPS.

    El domingo sobre las 10 retomamos el trabajo y nos centramos en la red y el GPS, a lo largo del día parecía que aquello no tenía fin y cada vez veíamos más difícil llegar a tiempo de entregar la aplicación. Pero aún así lo intentamos. A las 2 de la madrugada del Domingo/Lunes ya teníamos los módulos que nos faltaban casi listo (aún así tuvimos que recortar funcionalidades en la parte de comunidad para poder llegar a tiempo). Solo faltaba matar algunos detalles e INTEGRAR.

    El Lunes a las 10 de la mañana y con el cansancio acumulado de haber dormido apenas unas 7 horas desde el viernes afrontamos la recta final… Matamos los detalles y empezamos la integración a eso de las 10 de la noche, la integración dio algunos problemas de estabilidad pero finalmente a las 3:30 de la madrugada subimos la aplicación al concurso, La pesadilla había terminado!!!

    De vuelta a mi casa mientras conducía me dí cuenta de un detalle… la aplicación estaba firmada con la API key erronea… teníamos que generar otra API key. Nada más llegar a mi casa generé una nueva key, firmé de nuevo la aplicación y la volví a subir cerca de las 5 de la mañana (a una hora de cerrar el plazo de presentación).

    Después de ahí cuando pasamos la primera fase, empezaron las noticias en la prensa local, entrevistas en la radio, etc… Sinceramente mucho más de lo que nosotros esperábamos inicialmente cuando nos metimos en este proyecto.

    Pero DJ’it no se acaba con el ADC2. Desde el pasado Jueves, la aplicación esta en el Market y ya hemos conseguidos alrededor de 2500 descargas en 5 días con una media de valoración de 4 sobre 5 y una gran cantidad de correo felicitándonos por la aplicación y aportándonos sugerencias para mejorar y añadir nuevas funcionalidades a la aplicación. A la vista de la aceptación de la aplicación vamos a seguir trabajando en mejorar y añadir nuevas funcionalidades a DJ’it para convertirla en una aplicación indispensable en todo Android !! :P

    A continuación dejo par de estadísticas obtenidas de AndroidLib de los resultados de la aplicación en lo que lleva en el market.

    votos

    vsatgauge.aspx

  • DJ’it

    Posted on 2 September 2009

    DJ'it

    Después de un mes de Agosto estresante, y un fin de semana desquiciante, el Lunes a las 5:00 AM presentamos DJ’it, al Android Developer Challenge . El diseño de la aplicación ha sido elaborado por Oscar Socorro, la descripción por Iluminada Armas y la traducción por Ruth Yuste. Finalmente la programación de la misma ha sido llevada a cabo por Gema y por mi.

    DJ’it es una aplicación para Android y cómoda de usar con la que podrás utilizar tu terminal como si de una mesa de mezclas profesional se tratase, disminuyendo el volumen de la canción que termina e introduciendo progresivamente la que comienza para crear así efectos de sonido y de transición entre los temas.

    DJ’it te ayudará a gestionar tu música a través de la creación de listas de reproducción y la mezcla de dos temas en tiempo real gracias a sus dos canales de reproducción, modificando el volumen para que la transición entre los temas sea los más progresiva y natural posible.

    También puedes añadir samples pregrabados o efectos de percusión, tanto en directo como creados anteriormente, durante la reproducción y con total control sobre el sonido y la velocidad.

    Además, DJ’it te permite ver sobre un mapa los lugares en los que se está utilizando el programa, vamos, ¡dónde hay una fiesta! Esto, si no lo han dejado antes un anuncio en la pared de la comunidad DJ’it…

    Ábrete paso con DJ’it a un mundo lleno de música y diversión.

    Si bien la aplicación esta ya disponible a través del Android Developer Challenge para ser votada, no esta disponible en el Android Market, porque todavía continuamos añadiendo algunas funcionalidades más que no pudimos incluir en la versión del concurso por falta de tiempo. Entre estas funcionalidades cabe destacar la posibilidad de compar tus composiciones y samples a través de la comunidad DJ’it.

    Esperamos tener lista la versión para el Android Market a finales del mes de Septiembre. (A ver si no nos retrasamos…. :P )

    Para terminar aquí dejo unas capturas de pantalla de la aplicación, a la espera de tener un poco de tiempo para desarrollar un video  de review.

    reproduciendoInterfaz Dj con los 2 platos  el slider de selección

    compositorInterfaz Compositor

    communityInterfaz Community con acceso a las notas de fiestas y mapa de fiestas :D

    partyNota de una fiesta

  • FrameWorks js (II)

    Posted on 7 June 2009

    Después de la última entrada, he continuado mirando los diferentes frameworks y al final ya tengo un elegido :P . Comencé a trabajar con Dojo, porque tenía buena pinta y después de terminar el tutorial de iniciación el framework me encontré con un desierto importante. Me encontré con una documentación muy confusa y digamos que con “demasiada información y no bien organizada”. Una vez me encontré con esto me dió la sensación de que no iba a ser operativo tener que pelearme constantemente con esa documentación así que decidí probar otras alternativas.

    Antes de ponerme a ver un nuevo framework busqué comparativas y al parecer la gente no se decanta por uno u otro. Entre las comparativas que encontré esta es de las más exhaustivas, donde se compara mootools con jquery. Llegando a la conclusión de que tanto jquery como mootools son dos opciones perfectamente válidas para la implementación de proyectos grandes.

    Realmente me puse a ver como funcionaba mootools y a pesar de ser inicialmente más confuso que jquery, me ha gustado más la forma de trabajar y al final Mootools ha sido el frameworks elegido. Mochikit lo descarté porque es un proyecto que da la sensación de no estar del todo desarrollado.

    Ahora ya solo falta poner a Mootools en acción desarrollando algún Widget para móviles :D . Ya iré mostrando los resultados que vaya obteniendo.

  • FrameWorks JS

    Posted on 3 June 2009

    De rebote hoy he tenido que ponerme al tanto en Javascript y la verdad me he llevado una sorpresa. Hasta ahora mi experiencia con javascript se ha centrado en hacer algun redireccionado en web que no se podía llevar a cabo desde php, o la actualización de algún campo de formularios.

    Pero hoy me he tropezado con el “maravilloso mundo” de los frameworks para desarrollar en javascript. Entre los diferentes frameworks que estado viendo MooTools, Mochikit y Dojo. La verdad los 3 me parecen bastante buenos y todavía no tengo claro por cual decidirme…. Tendré que seguir probando.

  • un 3D de 4kB

    Posted on 19 May 2009

    Asombroso lo que se puede llegar a hacer con menos de 4Kb de código. El video que pongo a continuación es el ganador de un concurso de demos llamado Breakpint 2009. Al parecer todas las montañas estan creadas haciendo uso de generadores fractales y para el texturizado de las montañas no se emplean mapas de texturas para evitar de esta forma aumentar el tamaño de la aplicación.

    YouTube Preview Image

    Fuentes: Microsiervos Pouet.net

  • La programación de Darwin

    Posted on 8 May 2009

    Hace un rato pensando en un tema para la entrada de hoy, me acordé de los algoritmos evolutivos, también conocidos como algoritmos genéticos. Los algoritmos genéticos se suelen utilizar para llevar a cabo procesos de optimización y minimización en numerosas aplicaciones como diseño de piezas, análisis de sistemas de distribución de energía electrica y de agua y en general en todos aquellos procesos en los que sea necesaria una optimización de una o varias variables.

    La clave del algoritmo genético se centra en replicar los procesos evolutivos de las especies animales dentro del algoritmo. Para facilitar un poco más la comprensión de los algoritmos genéticos voy a plantear un problema que tuve que resolver el año pasado en un curso de doctorado sobre algoritmos evolutivos. El problema era el siguiente: Dada la función seno(X) encontrar todos los mínimos de la función en el entorno [-1,1]. Para la resolución de este problema tuve que actuar de la siguiente forma:

    • Creación de la población inicial: La población inicial estaba compuesta por valores aleatorios en el intervalo [-1,1], lo importante en este paso es crear una población lo más aleatoria posible para evitar en las siguientes fases que se produzcan estancamientos de la población.
    • Evaluación de la población: En este paso se aplica a cada uno de los individuos de la población la función sen(x), obteniendo de este modo los primeros resultados del problema.
    • Ordenación de la población: Una vez evaluada toda la población se procede a ordenar a los individuos por la calidad (es decir ordenarlos de menor a mayo en el problema propuesto).
    • Cruce: A los mejores elementos de la población se les aplica una función que representa a la reproducción, creando un nuevo individuo de mejores características que sus progenitores.
    • Mutación: Aleatoriamente se provocan variaciones en individuos de la población para evitar que la población se estanque alrededor de un único mínimo y forzar así la busqueda en nuevos entornos.
    • Reemplazo: Con toda la población existente, se desechan a los peores individuos y se define una nueva generación de individuos, volviendo de nuevo a llevar a cabo el proceso de evaluación de la población.

    Los reusltados obtenidos con este tipo de algoritmos en problemas muy concretos son sorprendentes porque en relativamente pocas iteraciones de programa se obtienen unos resultados muy buenos. En el caso del problema del seno, al cabo de unas 100 iteraciones se obtenían resultados exactos con 3 decimales de precisión.

    Para más información en este blog hay un artículo interesantísimo sobre algoritmo genético

  • La pesadilla móvil

    Posted on 7 May 2009

    Cada día son más las empresas que empiezan a solicitar programadores de dispositivos móviles. El principal problema que se plantea a la hora de dedicarse a la programación móvil es la cantidad de plataformas sobre las que se puede desarrollar. Aquí va un pequeño resumen de lo que es el mercado….

    En los comienzos de  los dispositivos móviles los fabricantes desarrollaban arquitecturas a medida sobre plataformas propias, creando así sus propios sistemas operativos. Con el paso del tiempo y a la vez que aumentaban las funcionalidades de los dispositivos móviles se hizo necesario el poder ejecutar software externo dentro del teléfono como juegos, etc. Esta necesidad obligó a los fabricantes a replantearse su filosofía de trabajo obligándolos así a definir plataformas de programación estándar. Fruto de esta reflexión, se tomo Java como lenguaje de referencia debido a que se trata de un lenguaje multiplataforma. Así cada fabricante empezó a implementar maquinas virtuales en sus dispositivos que permitían ejecutar código Java de terceras partes.

    Con el siguiente aumento de las capacidades de los dispositivos móviles, una vez más los fabricantes tuvieron que plantearse la implementación de sistemas operativos más eficaces y con más capacidades, por lo que ya entran en juego sistemas operativos móviles como Symbian o PalmOs. Los fabricantes concientes de la necesidad de proporcionar herramientas para facilitar la programación de los dispositivos móviles desarrollaron junto a estos sistemas operativos sus correspientes FrameWorks comenzando de esta forma la pesadilla para los desarrolladores.

    Acercándonos más a la actualidad, Apple lanza su “magnífico” iPhone, con el consecuente boom en el mercado. Una vez lanzado el iPhone y debido a la aceptación que ha tenido en el mercado a los desarrolladores no les ha quedado otra opción que tmabién aprender a desarrollar para iPhone (obligándolos a comprarse un “maravillos” ordenador Mac).

    Haciendo resumen, hasta este momento nos encontramos con Java, Symbian, PalmOs y iPhone. Si parece poco, luego entra acción Google con Android y Adobe con su versión de Flash Lite que corre sobre Symbian, no olvidándonos tampoco de Microsoft con Windows Mobile, introduciendo nuevas plataformas con su correspondiente Framework, aumentando de esta forma la esquizofrenia colectiva. Recientemente están apareciendo alguna que otra plataforma basada en open source como OpenMoco que aporta tambien su granito de arena a la paranoya mundial.

    El problema de todas estas plataformas móviles no son los diferentes Framework, el principal problema radica en la cantidad de lenguajes que hay que controlar, a continuación añado la lista de las capacidades que debería tener un desarrollador para dispositivos “móviles completo”:

    Lenguajes controlados: C/C++/C#,  J2ME, Java, Python, Flash Lite, Objetive C, COCOA

    Entornos controlados: Carbide c++, CodeWarrior, NetBeans, Eclipse, Xcode, Visual Studio

    Conocimientos Valorados: Linux, ensamblador y leguaje nativo ARM.

    Vamos….  casi naaaa…. casi mejor que merece la pena esto….

    un autentico programador