lunes 21 de septiembre de 2009

Escoba de 15

En este comienzo de la primavera, les tengo un regalito. Hoy publico un juego en SourceForge.net, como código abierto, bajo una licencia libre. Se trata del clásico juego de naipes españoles de la "Escoba de 15".

Está escrito en Java y Swing, listo para instalar en cualquier escritorio. El único requerimiento es tener un JRE de Java 6. Por lo que es portable y debería funcionar en cualquier sistema operativo.

Por el momento solo permite jugar contra la computadora. Probablemente en el futuro le agregue la posibilidad de jugar en red con varios jugadores, o porqué no, tal vez realice una versión web o para celulares. El tiempo dirá.

Si lo descargan para probarlo, dejen sus comentarios aquí mismo. Y cualquier problema o sugerencia, por favor usen el sistema de soporte y seguimiento de SF.net. Que lo disfruten :)

Una captura del juego
Compártelo:

domingo 20 de septiembre de 2009

WebGL: llega el 3D al navegador sin plugins

Recientemente WebGL ganó soporte experimental en el motor de rendering HTML WebKit, y ahora también lo hace en las versiones de desarrollo de Mozilla Firefox.

WebGL es un estándar abierto en desarrollo, que ni más ni menos expone las APIs OpenGL ES 2.0 al navegador, haciéndolas accesibles desde JavaScript. El resultado es que permite dibujar gráficos 3D acelerados por hardware en el elemento Canvas de HTML 5.



La estandarización de WebGL comenzó el año pasado, luego de que un desarrollador de Mozilla realizó una prueba de concepto de la tecnología. Rápidamente, a principios de este año, el Grupo Khronos (la organización detrás del estándar 2D/3D OpenGL) se unió a Mozilla para conformar un estándar abierto, naciendo el grupo de trabajo WebGL.



Desde el comienzo, Apple es uno de los que están apoyando de forma muy interesada a esta tecnología, empujando rápidamente su avance. Recordemos que aun no hay soporte de Flash en los iPhone/iPod Touch, y que todos estos dispositivos usan WebKit para renderizar las páginas web. Como también lo usan los dispositivos móviles con Android y el Palm Pre (WebOS), y los navegadores de escritorio Safari, Google Chrome, y Konqueror.

Además, las implicancias para el mercado millonario de los videojuegos son inmensas. Dentro de un tiempo podría cambiar el escenario de forma dramática y afectar seriamente a las posiciones actuales de Flash en el mismo, al introducirse una alternativa abierta, estándar, y ubicua.

Por otro lado, Apple viene trabajando en extensiones al CSS para introducir animaciones y efectos 3D en los elementos HTML.

Google está dando su apoyo, aunque paralelamente está trabajando en una iniciativa propia, creando un plugin llamado O3D, que facilitará crear aplicaciones web 3D interactivas.

Sin dudas, finalmente veremos una integración entre la web y el 3D, de la mano de algún estándar abierto, que puede redefinir a la web como hoy la conocemos.
Compártelo:

domingo 30 de agosto de 2009

Crear documentación en Java: JavaHelp, DocBook y Ant

Recientemente, para un mini proyecto personal realizado en Java y Swing, necesité integrar un sistema de ayuda.
Help Wanted
Naturalmente pensé en el sistema estándar y predeterminado de Java para Swing: JavaHelp. Este nos permite crear un sistema de ayuda completo con tabla de contenidos, secciones, buscador y todas las funciones que esperamos encontrar. Incluye un SDK para el desarrollo, visualizadores, ejemplos y hasta puede extenderse para personalizarse si lo deseamos. Como está implementado 100% en Java, automáticamente está disponible para todas las plataformas.

Aunque lo conocía de antes, hasta el momento nunca había tenido oportunidad de usarlo, así que era una buena excusa para incursionar en el tema. Pero me encontré con un pequeño problema: no me parecía del todo útil aprender otro lenguaje de marcado, cuando encima solo podría generar como resultado archivos de ayuda en dicho formato. Estaba pensando en usar algo más universal, que pudiera generar salidas al menos en pdf y html, además del formato JavaHelp.

Una de las mejores alternativas, si no la mejor, es DocBook, que es el lenguaje XML específico para crear documentación en general y que cumple con todos los requisitos. Es un estándar muy usado para ello. Desde DocBook tenemos todas las opciones posibles para exportar a cualquier otro formato de salida, incluído JavaHelp, CHM, PDF, HTML (simple y multipágina), XML-FO y muchos más. Les enlazo una introducción en castellano a DocBook, en la cual pueden encontrar el siguiente diagrama:

Free Image Hosting at www.ImageShack.us

DocBook es una especificación abierta, implementada y soportada por distintas herramientas. Hasta existen editores visuales para escribir documentos en este formato, por si no queremos aprender el lenguaje de marcado. Es muy conocido y utilizado en el entorno GNU/Linux.

Pero para completar el círculo, el desarrollador en mi pedía automatizar el proceso. Investigando un poco más, busqué información hasta lograr armar el conjunto de herramientas adecuado. No hay mucha información al respecto, no al menos de forma completa. Terminé usando un script de ANT desde Eclipse 3.5 Galileo, con un archivo fuente XML en DocBook, y con el soporte de varias librerías, ya me permite generar toda la documentación completa tanto en JavaHelp como en HTML, y eventualmente en cualquier otro formato. Probablemente agregue PDF y tal vez CHM.

El mejor y más completo tutorial que encontré es "Build DocBook XML in Eclipse". Hay que seguirlo al pie de la letra. Tiene un dato clave que es que la implementación Xalan/Xerces proporcionada por ANT en Eclipse no funciona debido a un bug, y debe ser reemplazarla por la última versión estable. Por supuesto, tuve ese problema :D. También fueron útiles en cierta medida los artículos "Creating an Online Help System with JavaHelp and DocBook" y "DocBook with Eclipse - Tutorial", que aportan algunos detalles más.

Aunque se supone que generar archivos de ayuda y documentación debería ser una tarea bastante habitual para todos los programadores, la ausencia de buenos tutoriales y algunas herramientas actualizadas que faciliten la tarea demuestran que no es tan así. Al final termino confirmando esa sensación de que es un ítem bastante olvidado. Ojalá sirvan estas lineas para facilitar la implementación de esta funcionalidad tan importante, tantas veces descuidada.

Help!
Compártelo:

martes 30 de junio de 2009

Firefox 3.5


Firefox 3.5 ya está entre nosotros, y es más rápido que nunca. Hasta 2 veces más rápido que la versión 3.

Entre las novedades más importantes, encontramos muchas nuevas características que nos llevará a los usuarios, diseñadores y programadores a una nueva generación de la web. Por primera vez tenemos soporte nativo para audio y video abiertos, mejoras en la navegación privada, y el soporte de nuevas tecnologías Web que nos brindarán experiencias en línea más ricas e interactivas.

Performance: Firefox 3.5 incluye un nuevo y más poderoso motor de JavaScript, llamado TraceMonkey, que brinda la mejor performance con las aplicaciones Web más complejas de hoy día. Es dos veces más rápido que en Firefox 3, y diez veces más rápido que Firefox 2.

Audio y video abierto: al fin podemos disfrutar del contenido en audio y video dentro del navegador, sin la necesidad de ningún plugin. El video es una parte vital de la web actual, sea usado para comunicar, educar o entretener. Ahora cualquiera puede ver fácilmente videos en el formato abierto Ogg Theora.

Los desarrolladores web pueden usar estas tecnologías para diseñar páginas web que interactúen con el contenido en video en nuevas y exicitantes formas, ofreciendo experiencias interactivas más ricas y más allá del control de reproducción y volumen.

Control de privacidad: se incluyen nuevas características diseñadas para proteger la privacidad en línea y para proveer mayor control sobre los datos personales.

Al usar el nuevo modo de Navegación Privada en Firefox 3.5, nada de lo visitado en la web será almacenado durante la sesión de navegación. Firefox 3.5 incluye la característica única "Olvidar este sitio", que elimina toda traza de un sitio en el navegador. Si se quiere eliminar todos los datos o actividad privada de las últimas horas, la opción "Limpiar historia reciente", brinda el control total de qué se guarda y qué se pierde, siendo otra característica única de Firefox 3.5.

Geoposicionamiento: nos ahorra tiempo al permitir a los sitios web consultar dónde nos encontramos en cada momento. Si se elige compartir la ubicación con un sitio web, este puede usarla para encontrar puntos cercanos de interés, y devolver adicionalmente, datos útiles como mapas en tu zona. Todo es opcional: Firefox no comparte tu ubicación sin tu permiso.

Les dejo un video (en inglés) con la presentación de las nuevas características:




No dejes de visitar el sitio de la Comunidad de Mozilla Argentina.
Compártelo:

martes 9 de junio de 2009

HTML 5: Canvas

HTML5 es una nueva especificación de HTML, que ya está provocando una pequeña revolución, aunque que por el momento es solo un borrador.

HTML5 hace énfasis en varios temas, ninguno revolucionario por si solo, o al menos no para todo el mundo, pero que en conjunto, una vez que se vuelva estándar, tal vez nos lleve a una nueva dimensión en la web.

Uno de los temas que trae HTML5 es la etiqueta canvas. Esta pequeña etiqueta, que representa a una superficide de dibujo, muy habitual en cualquier entorno gráfico, puede generar una pequeña revolución. Hasta hace poco, no existía ninguna forma estándar de realizar dibujos directamente en el navegador, que salvo por algunos ingeniosos y oscuros hacks en CSS para crear ciertas figuras geométricas, las alternativas eran muy pocas. En realidad, si había que generar gráficos en el navegador, nos encontrábamos con pocas opciones:
  • usar Flash, el cual solo funciona si hay un plugin de flash instalado, y a pesar de ser una de las opciones más populares, el soporte en distintas plataformas y arquitecturas es muy variable. Incluso, es uno de los grandes dolores de cabeza para la estabilidad de los navegadores, siendo una de las principales causas de problemas y cuelgues de estos.
  • usar Java, en particular las applets. Otra opción problemática, porque también requiere de un plugin en el navegador, el tiempo de arranque de los applets suele ser mayor que en flash, y sufre de los mismos inconvenientes.
  • crear el dibujo en el servidor, mostrando la imagen resultante en el navegador, y usar ajax o algún mecanismo similar para realizar algún tipo de actualización. Es la opción más universal, pero la más ineficiente, porque limita mucho las posibilidades, como las de animación.
  • y otras soluciones intermedias o combinaciones de las anteriores.
Canvas, provee una superficie de dibujo con varias primitivas gráficas. Hay quien lo compara con Postscript o OpenGL. La gracia de Canvas, es que puede programarse, animarse y modificarse usando solo JavaScript, el lenguaje universal que ya soportan todos los navegadores.

¿Y SVG? ¿No es lo mismo? No. SVG nos provee gráficos vectoriales, que también son creados a partir de figuras básicas, de forma que ocupan poco lugar y pueden verse con la misma calidad sin importar cuánto ampliemos su tamaño. A pesar de su sencillez, mediante el uso de gradientes y canales alfa, también permite crear imágenes increíblemente realistas. Los Canvas, por otro lado, son como los viejos bitmaps: cuadrículas de pixels, con la capacidad de ser manipulados por JavaScript. Ambos están relacionados y se complementan, pero son diferentes.

Podemos pensar en Canvas como el equivalente de los gráficos creados con Gimp o Photoshop. Y en SVG como el equivalente de los gráficos creados por Corel Draw o Illustrator, siendo Inkscape el programa de software libre más destacado en la creación de estos gráficos.

¿Pero falta mucho para poder empezar a usarlo? ¿Si apenas es un borrador, debe faltar mucho, no? Bueno, en realidad, ya está siendo implementado en todos los navegadores modernos, y en las últimas versiones, o en las próximas a salir, ya está incluído el soporte experimental de estas y otras características de HTML5. Como es el caso de Firefox, Safari, Chrome y Opera, salvo IE, que como siempre, viene atrasado y/o se desconoce sus planes a futuro. Afortunadamente, es tal el interés de pesos pesados en la industria, como Google, que ya se están haciendo plugins y extensiones para IE, para que en caso que MS decida no incluir estas nuevas características, se puedan utilizar igualmente. No será lo mismo que un soporte nativo más eficiente, pero permitiría realizar sitios aprovechando el nuevo estándar, incluso si MS dejara rezagados a sus usuarios con IE.

Para seguir leyendo sobre el tema:
HTML 5 Canvas element
5 clever uses of the canvas tag
Javascript Wolfenstein 3D
Una presentación de Mozilla Corp. que compara SVG y Canvas
Algunos ejemplos
Compatibilidad actual de los navegadores
Tutorial de Canvas en Mozilla
Una cheat-sheet para Canvas
Lo que dice el borrador del estándar

Entonces, ¿al fin podemos decir: ¡Chau Flash!? No, no, tranquilos. Flash tiene muchos usos. De hecho, una de las cosas que más popularizó el uso de Flash en la llamada web 2.0, fue su capacidad de reproducir video, como nos demostró el éxito de Youtube y Vimeo. Pero... html5 nos trae más sorpresitas: incorpora una etiqueta video que permite reproducir video de forma nativa y estándar en el navegador, y ¡sin necesidad de ningún plugin extraño! Pero dejaremos eso y otras perlitas para otro artículo :)
Compártelo: