Nuevo juguete, La Raspberry Pi

Hacia muchisimo tiempo que no escribía, pero bueno hoy que tengo la oportunidad y me gustaría compartir con ustedes par de cosas referentes a la raspberry pi y conocer de ustedes su opinión al respecto y si tienen alguna idea o proyecto casero, porque no compartirla.

Para los que no saben, la raspberry pi es una placa computadora de bajo coste, creada en Reino Unido con fines didácticos, hay 2 modelos el A y el B. El modelo B a diferencia del A, consta de puerto ethernet y de un puerto USB adicional, 512 MB de RAM (a diferencia de los 256 MB del modelo A), ambos modelos poseen el mismo CPU y GPU además de una salida HDMI, pero las características adicionales presentes en el modelo B hacen que sea un poco mas cara que el modelo A. En resumen en esa pequeña placa si acaso solo un poco mas grande que una tarjeta de crédito, tenemos la base para armar una computadora, ya solo sería necesario los periféricos e iniciarla con un sistema operativo.

Durante mucho tiempo venia oyendo/leyendo acerca de la raspberry pi, pero no había dado el paso de adquirir una, pues bien hace pocos días encargue un kit de iniciación por internet y ya finalmente esta en mis manos. ¿Qué me motivo a comprarla? pues les confieso que la cantidad de proyectos mas que interesantes que empece o ver en artículos y paginas por internet, que hacen que quiera llevar a cabo yo también esos pequeños proyectos tipo DIY (Do It Yourself o como sería en español Hazlo tu mismo). Aunque yo ya poseo una placa Arduino, he trasteado/jugueteado menos de lo que hubiera querido pero aun así me he divertido haciendo cosas simples (p.e. java y arduino) y quiero seguir haciendolas pero ahora con usando también mi nueva raspberry pi.

Por internet he leido que con las raspberry han hecho de todo tipo de cosas como por ejemplo:

  • Un media center, reproductor AirPlay, smart TV (al estilo google TV o Apple TV).
  • Ordenador de abordo para el coche (computadora para el carro).
  • Una maquina de arcade con NES, SNES, SEGA, ATARI.
  • Punto de Acceso Wifi, servidor Radius.
  • Domótica, Internet de las cosas, robots.
  • Servidores NAS, Servidor Web, radio por internet, Rack de raspberrys (super computador de bajo coste, computación paralela).
Como ven igual que con arduino, aquí el limite es nuestra imaginación, e incluso combinando ambas plataformas también podríamos lograr cosas interesantes. Hay algunos proyectos que me gustaría llevar a cabo y se los detallo a continuación:
  • Controlar el termostato de la calefacción de mi casa vía Internet o SMS.
  • Construir reproductor AirPlay aprovechando unas cornetas que se les daño la conexión para el iPod/iPhone.
  • Una maquina arcade casero, y tener allí todos esos clásicos de ATARI, NES y SNES.
  • Un servidor RADIUS casero.
  • Notificar por redes sociales de forma automática mi localización cada 30 min o cada 50 km (por decir algo) cuando vaya de viaje en el coche (carro).
  • Enviar SMS o correo electrónico que me notifique, cuando llegue correspondencia a mi buzón de correo.
Estas son alguna de las ideas que me gustaría poder desarrollar, algunas demandan mas tiempo que otras y de igual manera podrán ser de mayor o menor interés para ustedes, pero a mi realmente me causan ilusión y me parece entretenido poder hacerlas, es por eso que denomino a la raspberry pi mi nuevo juguete.
¿Ya tienes tu raspberry pi? ¿Cuales han sido tus impresiones?, ¿qué has construido con ella o que proyectos te gustaría realizar?.


Documental de Arduino

Aqui les dejo el documental de Arduino, espero que lo disfruten tanto como yo, que grande son estos innovadores (para mi mas que soñadores, ya que lo hicieron realidad).

Documental con subtítulos en español

 

Por ultimo aprovechare este medio para solicitarles ayuda, todo material sea tutorial, biblioteca (library), sitio web, etc.. que conozcan, que trate acerca de XBEE explorer serial  en Mac os X y la XBEE communication  shield.

Estos son mis nuevos juguetes que me han regalo con motivo de mi cumpleaños y ya estoy deseoso de hacer algo con ellos.

Serialización de objetos Java en XML

JAXB (Java Architecture for XML Binding) nos proporciona una API que nos permite mapear (mapping) entre  documentos XML y objetos Java automaticamente. Será con este framework que llevaremos a cabo la serialización de un objeto Java en un fichero (que será un documento XML) persistiendo el estado del objeto, además de crear un objeto Java a partir de un documento XML (recuperando el estado que tenia dicho objeto al ser serializado).

Crearemos las siguientes clases:

1. Clase Localidad

2. Clase Provincia

Nada fuera de lo normal en estas clases salvo las annotations presentes.

@XmlType: Indica a JAXB que debería generar un tipo de dato XML schema a partir de un tipo de dato Java.

@XmlRootElement: Indica que JAXB debería generar un documento XML (la raíz) a partir de una clase Java

Por ultimo la clase con el main donde se llevará a cabo la serialización/deserialización de los objetos

Como pueden ver resulta bastante sencillo la serialización de objetos a XML, quizás aquí no podamos apreciar todo su potencial, pero les puedo mencionar que es justo esto lo que utiliza el framework jax-ws en los servicios web SOAP con tipos de datos complejos, por supuesto cuando trabajamos con jax-ws no nos percatamos de esto ya que el framework esconde este proceso de convertir los datos XML recibidos en objetos Java y los objetos Java enviados con el cliente del servicio web convertidos a XML (Los servicios web envían XML para de esta manera ser interoperables e independientes de plataformas y lenguajes), siendo transparente para el programador, de esta manera el programador se enfoca en desarrollar la lógica de la aplicación (sea la creación del servicio web o la aplicación que hace uso del cliente del servicio).

Además de esta funcionalidad JAXB también nos ofrece otras herramientas como xjc que nos permite crear clases Java a partir de un XML schema (XSD) y schemagen que lleva a cabo la función inversa, es decir, crear un XML schema (XSD) a partir de una clase Java.

Como compilar código Java desde una clase Java

Días atras dandole un vistazo a la Java API, me encontre con una interfaz que no tenia idea que existiera y es la interfaz JavaCompiler. A continuación un ejemplo sencillo de como compilar una clase:

Para el ejemplo anteriormente mostrado, asumimos que hemos codificado una clase y ubicada en c:/Example.java. Como mi idea es demostrar como compilar, le dejo a ustedes la tarea de crear una clase cualquiera, con y sin errores para poder observar la salida de la ejecución de este programa.

Brevemente comento del código.

  • Clase ToolProvider, disponible desde la versión 6, esta clase nos permite obtener proveedores de compiladores.
  • Invocación del método run, método heredado de la interfaz Tool (presente desde la versión 6 de Java), es una interfaz utilizada para invocar programas, y en nuestro caso la utilizamos para la invocación del compilador. Incluso podríamos obtener las versiones soportadas por la herramienta invocando el método getSourceVersions();

La anterior no es la única forma de poder llevar a cabo la compilación, he aquí otro ejemplo, pero en este caso usando métodos propios de la interfaz JavaCompiler.

Esta ultima forma de llevar a cabo la compilación, particularmente es de mi preferencia ya que nos permite mejorar en rendimiento, en el caso de que llevemos a cabo la compilación de un grupo de ficheros (archivos) mientras reutilicemos el gestor de archivos, además de poder pasarle de una forma mas ordenada las opciones de compilación.

NOTA: En este segundo ejemplo también dejo de parte de ustedes la creación del fichero a compilar (C:/Example.java), que en este caso he hecho uso del mismo en ambos ejemplos.

espero les pueda ser de utilidad, incluso podríamos hasta crearnos nuestro propio IDE, donde compilemos y a su vez nos muestre los mensajes de error en caso de haberlos.

 

Ipad 2 presentado a la sociedad

El pasado 2 de marzo fue presentado a la sociedad, el tan esperado y muy rumoreado Ipad 2, se podría decir que no se había llegado aun al tope de ventas del Ipad y ya se estaba especulando con la segunda versión del mismo. Se comentaban muchas cosas de esta keynote, un nuevo ipad con camara(s), capacidad de expansión de memoria con tarjetas SIM, pantalla con retina display, quizás más pequeño, nuevo procesador y mas… A su vez se comentaba la posibilidad de una nueva versión de iOS y un MobilMe gratuito, en fin había tantos rumores que dudo que los mejores adivinos del mundo incluso pudieran acertar en sus predicciones.

Y se hizo la luz, el tan esperado dispositivo fue presentado por Steve Jobs, con unas características hasta ahora muy bien valoradas por la critica y que a mi particularmente me han encantado. Señalo a continuación las características (resumidas) del Ipad 2:

  • Procesador A5 dual core de 1 GHz, que le permite procesar hasta 9 veces mas rápido el desempeño gráfico.
  • Doble cámara, una frontal VGA y otra trasera HD 720p 30 frames por segundo y zoom 5X.
  • 10 horas de duración de la batería en uso continuo (9 horas en caso de hacer uso continuo de redes 3G).
  • Dimensiones (alto x ancho x grueso): 24,12 cm x 18,57 cm x 0,88 cm y un peso de 601 gramos (607 o 613 gramos en el caso de ser la versión con 3G para redes CDMA y GSM respectivamente).
  • Pantalla LED de 9,7 pulgadas y resolución 1024 x 768 (misma pantalla del primer Ipad).
  • Giroscopio de 3 ejes, acelerometro, brújula digital y GPS asistido en la versión 3G además de funciones de teléfono.

Además de estas características también se presentaron 2 nuevos accesorios, la funda smart cover y el adaptador AV digital de Apple, cada uno con un valor añadido que no caeré en detalles sino que les dejo par de vídeos y les den un vistazo y luego me comentan que opinan al respecto. Por ultimo nos presentaron 3 estupendas aplicaciones  para Ipad que darán que hablar y desde ahora les auguro un éxito rotundo como lo fueron GarageBand, PhotoBooth e iMovie, sencillamente ESPECTACULARES en especial me ha impactado iMovie, da la impresión de poder llevar a cabo la edición de video casi en un modo profesional y sencillamente con tus dedos, ni mas ni menos.

 

En conclusión en esta oportunidad Apple nos ha traído un dispositivo muy mejorado, cuyas características traen consigo un valor agregado importante, como lo son el poder hacer uso de FaceTime para videoconferencias un nuevo procesador que nos da la oportunidad de crear mejores aplicaciones y aprovechar al máximo su velocidad así como su desempeño para tratar gráficos, un set de aplicaciones (y las que vendrán) que sencillamente y sin ser demagogo son ESPECTACULARES. Hay ciertas tablets con Android que me han llamado la atención como lo son la Xoom de Motorola, la nueva Galaxy tab de 10 pulgadas de Samsung y el prospecto de Sony la S1, que gozarán (y gozan) de una arquitectura de mucho poder, pero después de lo mostrado por Apple a día de hoy pienso que ninguno de estos dispositivos presenta la fluidez y amigabilidad que nos da el Ipad2 (y el Ipad) y por mencionarles algo y a su vez hacerles ver mi punto de vista, es cuestión de ver solo un pedazo de la keynote y ver la presentación de las aplicaciones  iMovie y de GarageBand aquí los hechos valen más que las palabras (con ello no quiero decir que no recomiendo adquirir uno de esos tablets, ya que se, que tienen su gama de usuarios ansiosos de mas control sobre el sistema, amantes de android, etc…). Es más en mi opinión ha sido una de las keynote donde la opinión de casi todos ha sido favorable al nuevo dispositivo y sus respectivos accesorios y aplicaciones, es mas no me extrañaría que surjan nuevos accesorios a usar con adaptador AV digital y darle a su vez mucho mas potencial del que tiene (visualizar películas en HD con o sin home sharing, video en espejo).

En fin para mi acabó la espera y he reservado uno para  el 25 de marzo, día que estará a la venta el Ipad en Europa. Estén pendientes, apenas lo tenga en mis manos tengo pensado hacer un video de unboxing.

y tu ¿Que opinas del nuevo Ipad? ¿Estas conforme con sus nuevas características?¿le agregarías y/o quitarías algo?

Aqui les dejo el video de la keynote