Gracias a un post de Mamen Pradel, descubro el curioso Wordle, del que ya había visto resultados pero no sabía de dónde venían (lo sé, debería haber preguntado :) ).

Aquí el que he hecho hace un rato:

Nube de tags de arragonán

Como curiosidad, está hecho con un applet java, y ha sido desarrollado por Jonathan Feinberg, empleado de IBM Research

Comments (2) Posted by Dani on Wednesday, July 30th, 2008


Ayer estuve leyendo los posts de Matt Raible sobre la OSCON 2008, recomiendo darles una ojeada a todos.

También ha publicado su propia charla en el evento, sobre frameworks de futuro:

Bajo mi punto de vista, osea en España donde en una inmensa mayoría de empresas aún no se plantea dejar el incombustible Struts 1, pienso que sobre Rails y Flex se puede decir que ya están aquí, ya que tienen cierta cuota de mercado; mientras que de GWT y Grails conozco muy pocos casos donde se esté(estemos) utilizando.

Me gustaría conocer de los que os pasáis por aquí, además de qué framework/s web estáis usando, cuáles son los que llaman vuestra atención. Personalmente me interesa seguir aprendiendo más sobre Grails y Rails, pero además también me llaman la atención GAE, CodeIgniter y Wicket para los que espero sacar tiempo, algún día :P .

Comments (10) Posted by Dani on Thursday, July 24th, 2008


Ayer lunes se hicimos el anuncio oficial del inicio del desarrollo de flatee (la mejor manera de compartir piso ;) ), que vamos a desarrollar entre Jesús Navarrete y un servidor.

El proyecto surge dentro del internship que estamos haciendo en Linking Paths y a raíz de una necesidad personal, los actuales portales de clasificados no cubren mis necesidades como deberían y por lo que he hablado con más gente, no soy el único.

flatee.com

Estoy convencido que será una experiencia muy enriquecedora, no va a ser desarrollar algo y ya está, tendremos que cubrir todos los aspectos para que resulte un proyecto exitoso, tanto técnicos como no técnicos.

Por lo que si te interesa el proyecto en sí, crees que pueden existir mejores formas que ayuden elegir con quién y dónde vas a convivir o simplemente tienes curiosidad por saber como evoluciona el proyecto, no dejes de seguir el blog de flatee donde compartiremos nuestras experiencias, ideas… ¡esperamos tus opiniones! :)

Comments (2) Posted by Dani on Tuesday, July 15th, 2008


Desde que empezó el Google Summer of Code no he explicado exáctamente qué es y el por qué de mi proyecto, ahora que veo cerca la primera versión (a falta de un problema con las urls que mapean a vistas) ya empieza a ser hora de hacerlo.

La cuestión es que Grails no tiene el comportamiento típico de include, tiene el tag render que es parecido(para el caso de un template estático sería igual) pero se orienta al principio Don’t Repeat Yourself en la vista, por lo que al render hay que pasarle los objetos o colecciones de objetos que se utilizarán para renderizar el template.

Esto puede llevar a un problema de repetición de código en los controllers, por lo que aquí rompemos el Don’t Repeat Yourself, siendo sensibles a futuros cambios. Ésto no quiere decir que el render no valga, en mi opinión para conseguir no repetir código dependiendo de los casos, lo mejor es combinar ambos comportamientos. Aunque el problema de la repetición de código se puede solucionar con nuestras propias librerías de tags, que con Grails son sencillas de crear, pero pienso que debería ser todavía más sencillo y limpio utilizando una acción de un controller que además podríamos reutilizar para por ejemplo peticiones XMLHttpRequest.

Metiéndonos ya en el uso del plugin, existen dos formas de hacer el include, la forma clásica con el tag includeURL:

<g:includeUrl url="/prueba/show?param=value"/>

Los posibles valores de url pueden ser tanto urls que mapean a controllers/acciones/vistas de nuestra aplicación grails, como a recursos estáticos como puede ser un html plano o un fichero de texto que se encuentren en el mismo contexto. Para el caso de las urls mapeadas, los parámetros se pueden pasar por los posibles valores de la url mapeada tipo REST como con parámetros de la request de los de siempre.

Y la segunda forma es para mi es la forma recomendada para los caso de hacer un include a acciones de nuestros controllers, includeController:

<g:includeController controller="prueba" action="show" params="[param:'value']"/>

Al que se le pasa el nombre del controller, acción y mapa de parámetros. Hay que decir que por la convención de nombres, en el caso de prueba buscará en controlador PruebaController. La recomendación es simplemente por la probabilidad mucho mayor de una cambio de mapeo de url que del nombre de un controller, cada uno verá de qué manera prefiere hacerlo ;) .

Hablando ya sobre la experiencia desarrollando éste plugin, la verdad que me esperaba que fuera más sencillo de desarrollar, estaba claro que sería necesario un wrapper del response para hacer el include con el RequestDispatcher. Al final he tenido que escribir también un wrapper para el request y re-escribir parte del filtrado del mapeo de urls de grails, al ser la misma petición y no estar contemplado este comportamiento anteriormente, ha habido que hacer un poco de trabajo extra investigando el código del framework en cuanto a mapeo de urls y hacer mucho debug por no conocer el código (gracias IDEA + JetGroovy! :) ).

A ver si dejo una versión estable de éste plugin en las próximas semanas, y comienzo a colaborar con el plugin de Java Content Repository para poder trabajar con ésta especificación de una forma más o menos parecida a como se usa GORM con Hibernate por debajo.

Comments (3) Posted by Dani on Wednesday, July 9th, 2008


En la sesión del openjavaday sobre grails, surgió la pregunta de si se podían añadir entornos además de los que vienen por defecto: development, test y production.

Me quedé con la duda si era posible o no, convencido que eso no se les habría pasado por alto a los desarrolladores y se podría hacer de alguna forma, casualmente he tenido que hacer unas pruebas con bases de datos desde cero y no tenía ganas de andar haciendo backups de la base de datos para recuperar el estado inicial (uno que es vago :P ), por lo que me venía como anillo al dedo.

En fin que, tal y como pone en la documentación, en este caso sólo he tenido que añadir al DataSource.groovy el entorno con su respectiva configuración, pero si lo necesitamos, también podemos añadir otros parámetros de configuración en el Config.groovy. Para arrancar la aplicación en nuevos entornos, deberemos ejecutar:

grails -Dgrails.env=mientorno run-app

Por ponerle una pega, estaría muy bien que fuera sólo con el nombre del entorno.

Comments (0) Posted by Dani on Friday, July 4th, 2008


Llevo unos días tratando de poner en orden las sensaciones que me ha dejado el Open Java Day mientras he ido leyendo otras opiniones sobre el evento. Aunque la organización me parece que podría haber sido mejorable, a niveles generales me llevo una buena sensación de estos dos días en Madrid.

En mi opinión hubo algunas ponencias que no tenían muy claro hacia qué tipo de público se dirigían, no pegaban demasiado en un evento de desarrolladores. Tampoco hubiera estado mal que se hubiese dado una identificación a los asistentes, aunque fuera por poder reconocerse entre la gente que ya se conoce pero no físicamente, o simplemente por poner nombre con quién hables.

Día 1:
Empezó la mañana con la ponencia High Performance Web Server: Cherokee de Álvaro Lopez, que sin ser una charla sobre java, resultó muy interesante que esplicara desde sus razones para crear el proyecto hasta ver lo amigable de la interfaz web de configuración del servidor.

Siguió la ponencia Sun, impulsando las Comunidades Abiertas y la Social Media de Joan Carles Agustí, sobre redes sociales y sobre aplicaciones dentro de facebook, que personalmente me dejó frío.

Luego con otra sobre Software Quality Assurance, dónde Francisco Moreno Peyrona nos habló de su trabajo en Sun en materia de aseguramiento de la calidad y de la herramienta que ha creado, CATI, para la trazabilidad entre la fase de diseño de software con la de implementación.

Después del descanso, vino la charla sobre Java Content Repsotory de Alfredo Casado, que se quedó corta, para los que ya supiéramos de qué va esta especificación nada nuevo, pero estuvo bien como introducción. A mi me hubiese encantado ver por ejemplo algo sobre el módulo de Spring o sobre Jackrabbit OCM.

La siguiente fué la charla sobre Struts 2 de Álvaro Sánchez Mariscal, dónde se habló de la muerte de Struts 1 y de que está basado en WebWork tomando la marca Struts. Con los problemas que hubieron al hacer la demo, no se pudo enseñar prácticamente nada de éste framework.

La última antes de comer fué Lecciones prácticas de capa web con Java de Ignacio Coloma, para mi una de las mejores del Open Java Day. Aunque tampoco fué nada novedoso creo que una charla así es importante cuando java se usa mayoritariamente en desarrollo web y que de los programadores java no se habla demasiado bien en el mundillo web, viendo las macro-aplicaciones de muchas AAPP y grandes empresas, con razón. Se tocaron temas de usabilidad, accesibilidad y javascript no intrusivo, frameworks javascript, frameworks CSS…

La tarde empezó con Desarrollo JavaME sin necesidad de portabilidad de Curro Rueda, dónde vimos formas de solucionar el infierno de la compatibilidad en el desarrollo de aplicaciones móviles con J2ME que han utilizado para el desarrollo de TagsME, como nunca he desarrollado para móviles algunas soluciones me sorpredieron mucho y otras muchísimo.

La última fué la sesión sobre Grails: desarrollo web con Java como siempre debió ser de Nacho Brito, que también se hizo corta, habló de forma general sobre Grails y groovy, y en la demo sólo dió tiempo de llegar hasta el scaffolding dinámico y al sistema de layouts, sin poder verse otras de las bondades de este frameworks. Eso sí, hubo quien vió el parecido con Ruby on Rails enseguida ;) .

Para finalizar el primer día, habían tres talleres a elegir(Spring, Trails y OpenCMS), asistí al de Spring 2.5. Primero hubieron problemas con la red Wi-Fi, por lo que cambiamos de aula, y depués nos encontramos con que no habían regletas suficientes para los portátiles, lo que retrasó el inicio del taller. Por estos problemas Erick Camacho y Sergi Almar tuvieron que acelerar y acabó pareciendo una sesión más, de cualquier forma resultó interesante conocer Spring 2.5 e ir viendo el código de la aplicación de ejemplo.

El día acabó redondo con el España-Rusia :P

Día 2:
El segundo día llegué tarde y no vi prácticamente nada de la charla Proyectos de la Fundación I+D del Software Libre de Máximo Martín, de la que me dieron opiniones encontradas :) .

Luego comonezó la sesión Developing Rich Internet Applications - A New Step Ahead de Jose María Corsino, de la que esperaba una charla mucho más técnica y finalmente no fue mucho más que nombrar las diferentes posibilidades que se pueden encontrar en el mercado.

Tras ésta, la siguiente sesión fue Introducción a Netbeans Rich Client Platform de Ibon Urrutia, que nos explicó su experiencia a raíz del desarrollo del IDE, basado en esta plataforma, para desarrollar aplicaciones con TagsME y nos enseñó la herramienta.

De la charla que seguía tras el descanso Infraestructuras Abiertas para un Mundo Abierto de Francisco Moreno Peyrona, tampoco puedo dar opinión ya que entramos bastante tarde.

Siguió la Introducción a Maven de Antonio María Sánchez Berrocal, tal y como indica el título de la sesión se quedó en una introducción, por cierto, que Antonio dijo la que para mi fue la frase del evento “Si sientas a un burro delante de un ordenador, sigue siendo un burro” XD.

Después vimos el video de la final de la Java Cup 2008, con un repaso de 1A a Laponia quedando 21-2, con ovación incluida en el primer gol de Laponia :) .

Después de comer, se retrasó la Mesa redonda sobre frameworks web por una charla que se tuvo que pasar del Open Solaris Day a la sala dónde se celebraba el Open Java Day. En cuanto a la mesa, me pareció que no se aprovechó la oportunidad de que se hablara sobre las ventajas o puntos fuertes de los frameworks de los que los miembros de la mesa son creadores o están especialicados, que al menos era lo que yo esperaba. Se habló de frameworks orientado a acciones o a componentes, para desarrollo de RIAs o web tradicional, si struts está muerto o no, frameworks surgidos de empresas o desde la comunidad open source… Y como era de esperar, acabaron surgiendo los innombrables ASP.NET y Ruby on Rails, que no salieron muy bien parados de los comentarios de los ponentes.

El día finalizó con otros tres talleres(OpenXava, Glassfish y ItsNat). Esta vez entré al de Glassfish que impartía David Bonilla. Me quedé sin batería en el portátil y no encontré dónde enchufar el caragador, además tuvimos que irnos antes de acabar por coger el tren de vuelta, de todas formas me estaba pareciendo un taller interesante sobre el que tendré que repasar la documentación que nos pasaron a los asistentes.

Como suele pasar en estos eventos, casi es más interesante lo que se mueve en los pasillos que el evento en sí, intercambiando impresiones sobre las charlas o sobre temas fuera de ellas. Un placer estar y charlar con gente como Alberto Gimeno(que me hizo un hueco en su casa :) ), Jesús Navarrete, Erick Camacho, Sergi Almar, Dani López, Nacho Brito… aunque me quedé con las ganas de coincidir un rato con gente como Manuel Recena y alguno más.

Ahora toca esperar a que se publiquen las presentaciones y los vídeos de las ponencias, tanto para los que queremos repasarlas como para los que no pudieron asistir.

Comments (11) Posted by Dani on Wednesday, July 2nd, 2008