Acerca del Sun Open Communities Forum

June 24th, 2009

Los pasados 18 y 19 de Junio, estuve en Madrid para asistir al Sun Open Communities Forum, mi opinión sobre el evento es que hubieron más oscuros que claros, aunque tampoco me sorprendió demasiado vista la web del evento y la agenda publicada.

Sobre las charlas, opino como Abel Mendivil, se pueden agrupar en fuera de lugar, falta de profundidad y las que tenían fundamento.

Como suele ser habitual en estos eventos, los patrocinadores tenían charlas y algunas eran paja en un evento para programadores, o lo parecían, ya que el segundo día no fuí a ninguna de las que tenían esa pinta: la mesa redonda sobre open source, la de redes sociales, madridonrails… al menos para mi no son productivas. Otras me resultaron aburridas, un tanto básicas, y sobre todo en las que eran en inglés, desconectaba con facilidad. Por lo que, como ya he dicho, me pegué parte del segundo día trabajando en unas mesas fuera de las salas, que en algunos momentos casi se quedaban hasta pequeñas.

Pero también hubieron charlas interesantes:

  • Las de Jorge Sánchez sobre ESB, que por no haber trabajado mucho en integración me resultaron curiosas.
  • La -no- charla de Francisco Morero, donde nos pedía a los asistentes que comentásemos aplicaciones exóticas desarrolladas con Java, y se acabó regalando un iPod como premio :).
  • La de Javier Ramírez acerca de JRuby on Rails, que aunque para mi no dijo nada nuevo, me gustó el enfoque que le dió a su charla de pasar un poco por Ruby, luego por Rails y finalmente ver como integrar con Java usando JRuby.
  • La de Dave Currie acerca de escalabilidad con MySQL, donde tampoco se dijeron cosas especialmente novedosas que no haya escuchado ya en otros eventos, pero siempre es interesante ver las soluciones tomadas en un caso real concreto(también me resultó gracioso que usara el topicazo de que Ruby on Rails no escala XD).
  • Desarrollo y test de componentes Ajax de Ignacio Coloma, sobre todo la parte de testing es la que más me gustó, y junto a la charla que dió el año pasado, tengo muy claro que sabe mucho de desarrollo web.

En cuanto a los talleres, el primer día asistí al de Spring 3.0 que impartía Sergi Almar, donde hubieron problemas de espacio en la sala, no habían suficientes tomas de corriente y los usuarios de Mac no pudimos seguir el taller por un problema de última hora, una pena que ante tantos problemas nos quedáramos sin tiempo para ver finalizar el taller completo, tal y como pasó el año anterior :S. El segundo día, fuí al de Grails que impartían conjuntamente Nacho Brito y Álvaro Sánchez-Mariscal, donde de nuevo nos quedamos sin concluir el taller completo, realmente había mucho que decir y el tiempo se terminó consumiendo :S.

Desarrollo y test de componentes Ajax

Sobre el tema puramente organizativo, hubieron algunos detalles mejorables: Las salas estaban bien pero no habían enchufes, nada más llegar al campus Montepríncipe no había ningún cartel ni indicación, tampoco se nos dieron identificaciones a los asistentes y ponentes, la tarde del segundo días se cambió la sala de las charlas del track 1 y no se pudieron emitir por streaming…
Pero lo que más eché en falta fué más tiempo para charlar/saludar/conocer a otros asistentes y ponentes, que hubiera sido fácilmente solucionable “convocando” a quien quisiera a quedar en algún lugar a tomar unas cervezas(lo que los modernos llaman networking :P), cosa que sí pude hacer con unos pocos y a otros no pude más que saludarlos y poco más :S.

Como podéis ver, un poco de todo en el evento. Veremos si Sun/Oracle siguen celebrando un evento de estas características en España, y si lo hacen, esperemos que intenten organizarlo para que resulte más interesante.

Primeros días de Jobsket en abierto

June 21st, 2009

Como supongo que ya sabréis los que os pasáis por aquí(o deberíais :P), hace un par de semanas que jobsket ha salido de la beta cerrada, durante este tiempo hemos recibido bastante feedback de los usuarios(muchas gracias a todos!).

Nos ilusiona mucho la repercusión que hemos visto por internet, y que incluso acabara nombrándose en la sección Espai Internet del Telenotícies cap de setmana de TV3(evidentemente, en catalán). Por otro lado, para los técnicos :), también me hizo una pequeña entrevista Nacho Brito para groovy.org.es acerca de como usamos Groovy y Grails en Jobsket.

A seguir trabajando!

Plugin de easyb para Grails 1.1

June 10th, 2009

Hace unas semanas que me suscribí a la lista de correo de easyb, un framework de testing para la plataforma Java, más exactamente para realizar behavior driven development.

Pues resulta que hace unos días se anunció un plugin para integrar easyb con Grails 1.1.

Sólo he hecho alguna pequeña prueba para ir conociendo easyb, pero por lo que he leído en la lista parece que tienen la intención de que un futuro se puedan integrar el plugin de testing por defecto de Grails con easyb.

Ahora mismo, tras instalar el plugin, puedes crear tus Stories o Specifications con la sintaxis estándar de easyb, tenerlos en el mismo directorio que tus test unitarios o de integración(con el sufijo Story o Specification en vez de Tests) y al ejecutar los tests con el script de easyb se ejecutan los propios de easyb junto al resto de tests “legacy” que tengamos, por lo que nos podríamos ahorrar la traducción de los tests ya escritos.

La única pega ahora mismo, es que por dejecto no es amigable con los sistemas de integración continua, al ejecutar grails test-app se da a alegir a ejecutar entre dos scripts, el de por defecto y el del plugin, aunque se puede solucionar simplemente cambiando el de easyb a otro nombre(test-app-all, easyb-test…).

Y aquí viene un ejemplo chorras de test de integración ;) :

before "initialize", {
given "CountryController", {
controller = new CountryController()
}
}
scenario "countries list", {
given "a country", {
country = new Country(name:"Spain")
country.save(flush:true)
}
when "go to index", {
countries = controller.index().countries
}
then "should have one country", {
countries.size.shouldEqual 1
}
}

Aunque creo que se entiende mejor el código XD: teniendo un controlador CountryController para todos los escenarios, con un escenario que es un listado de países, que tiene un país y cuando vamos a la acción index, entonces debería haber un país.

Las 25 mejores tiras cómicas de programación

June 4th, 2009

Simplemente geniales XD: 25 Best Programmer WebComic Strips

Difference between a Bug & Feature
Difference between a Bug & Feature

Vía @ecamacho

“Manual de desarrollo web con Grails” en español

June 1st, 2009

El 28 de Mayo se puso a la venta el libro Manual de desarrollo web con Grails (en pdf) escrito por Nacho Brito, editor de groovy.org.es y uno de los pioneros de la comunidad hispana en la adopción de Grails para los desarrollos desde su empresa ImaginaWorks.

Quizás sea casualidad, pero poco a poco voy encontrando algunos programadores que están interesados en aprender o que ya están experimentando, me consta que alguna empresa lo ha empezado a utilizar en sus desarrollos y que en algunos proyectos de internet también se ha usado Grails (entre ellos Jobsket :P).

En mi opinión, la publicación del libro es una muestra más(y otro empujoncito más), de que poco a poco la comunidad Grails hispana está creciendo.

Yo ya tengo mi copia :)

Actualización 04/06/08: El libro ya está disponible en papel en bubok.

Programación, usabilidad y el IV aniversario de Cadius Zaragoza

May 13th, 2009

Como programador que soy, la parte del desarrollo de software que siempre me ha llamado más la atención es el trabajo dentro de las tripas: lenguajes, frameworks, librerías, arquitecturas, metodologías de trabajo… que permitan mejorar el rendimiento, la calidad, etc. de un desarrollo y por otro lado la productividad como desarrollador, como creo que a la mayoría de programadores(bueno… si no contamos a los muchos que sólo les importa la nómina y la comodidad de lo que ya saben).

Por otro lado, percibo como un pensamiento bastante generalizado entre programadores nóveles(y a veces no tan nóveles), que la interfaz de usuario no es importante porque será sólo el “cascarón” de una super-mega-chachi-aplicación. Nada más lejos de la realidad, es un elemento diferencial en la calidad de un desarrollo, como escribía Isaac Ruiz (alias RuGI ;)) esta misma semana: Para el usuario final, la IU es el sistema.

Quien no ha pensado alguna vez al entrar por ejemplo a una web, que ha podido costar varios millones de euros y tenga mucho trabajo en las tripas, “menuda mierda” o “debo ser tonto”… ahora mismo me vienen a la mente unas cuantas…

Con esto no quiero decir que yo tenga grandes conocimientos de usabilidad, es una especialidad en la que me considero un aprendiz. Pero me interesa mucho y es algo sobre lo que procuro ir aprendiendo poco a poco a base de ver(o que me hagan ver) mis errores y los de otros, procurar leer a la gente que sabe sobre el tema, y desde hace un tiempo acudir habitualmente a las reuniones de Cadius Zaragoza.

Bueno, este post viene a cuento de que supongo que la mayoría de gente que pasa por aquí también seréis programadores y quizás, por un casual, aún hay que convenceros de que la usabilidad es importante :). Por esto, quería anunciar y animar a asistir al IV aniversario de Cadius Zaragoza (auspiciado por Hispalinux y el Ayuntamiento de Zaragoza), que viendo el programa tiene muy buena pinta, con la presencia de Javier Cañada que es el fundador de la comunidad Cadius:

  • 19:00 horas. Acto de bienvenida, a cargo de Daniel Torres Burriel, coordinador de Cadius Zaragoza
  • 19:10 horas. Ponencia: “Hispalinux y la defensa de los estándares abiertos”, a cargo de Jorge Fuertes (Hispalinux)
  • 19:30 horas. Ponencia: “Lectura y prensa online: diseñando para el ratito del café”, a cargo de Javier Cañada (vostok.es)
  • 20:15 horas. Debate
  • 20:30 horas. Networking

El aniversario se celebrará en el Digital Water Pavilion(al lado del Pabellón Puente en el margen del barrio de La Almozara) el jueves 21 de Mayo a partir de las 19:00. Si quieres confirmar tu presencia(que no es necesario para asistir), hay un evento en facebook.

Yo iré, sin duda.

Sobre el Innovate!Europe 2009

May 7th, 2009

Esta semana, del 4 al 6 de Mayo, se ha celebrado la final del Innovate!Europe en Zaragoza. Para quien no lo conozca, es una mezcla de mentorización y competición de startups tecnológicas europeas.

Las master classes eran todas cerradas, excepto la del 4 (junto a la inauguración) que era abierto al público. Ahí tuvimos la oportunidad de ver a David Sifry, Marten Mickos, Yoav Leitersdorf, Maximilian Niederhofer, Barak Berkowitz, Madeline Duva y Mike Rogers en una mesa redonda moderada por Ignacio de la Vega.

La verdad es que no dijeron nada que sonara especialmente nuevo para los que estamos emprendiendo y leemos sobre el tema (foco, pasión, no tener miedo al fracaso, pensar en monetizar y no en inversiones, estar un poco loco…); y sobre los nuevos negocios relacionados con innovación y tecnología, sólo llamó mi atención Marten Mickos cuando nombró Open Data (ojalá llegue a poder hacerse negocio, pero el camino tiene pinta de que será muy largo), el resto era un poco “lo de siempre” Saas, Cloud computing, tecnologías limpias… De todas maneras, se notaba que los miembros de la mesa estaban muy acostumbrados a este tipo de eventos, se les veía muy profesionales :)

Ayer también estaban abiertas al público las presentaciones de los últimos 10 finalistas, dónde hubo quien nos convenció más y menos a los que intercambiamos opiniones, pero por algo estarían entre los 10 elegidos XD. Al final, tras una larga y un tanto fuera de lugar intervención de Juan Tomás Hernani (secretario general de Innovación), se anunció la startup ganadora que fué Nomadesk.

Es el primer año que he podido asistir a este evento y, aunque creo que la asistencia de público al evento era más bien baja y que se haya notado un poco que las elecciones europeas están cerca XD, lo he visto bastante interesante. Sobre todo que sea en Zaragoza y Aragón, donde se encuentran pocos eventos relacionados con tecnología e innovación, a excepción de los pequeños eventos que se mueven de forma independiente.

A remix Manifesto

April 25th, 2009

Vía un post de Ricardo Galli, me encuentro el documental A remix Manifesto (que es un proyecto open source), que se emitió en TV3 doblado al catalán.

El documental habla sobre los actuales problemas que sufrimos gracias a las leyes de copyright, muy centrado en el caso de la creación de remixes o mashups a partir de otras obras, aunque se muestra también el punto de vista de consumidor.

Y seguirán tratando de ponerle puertas al mar…

Por cierto, no conocía Girl Talk, está bastante bien :)

Jobsket en el podcast de debug_mode=on

April 22nd, 2009

Han publicado ya en debug_mode=on, la entrevista que nos hicieron para su primer podcast a Jordi y a mi para hablar de Jobsket.

Para grabar la charla-entrevista, aprovechamos que yo tenía previsto un viaje a Barcelona y lo grabamos en las oficinas del SeedRocket, que es donde está trabajando actualmente el equipo de debug_mode=on. El estar todos en la misma sala, excepto Jorge Rubira, hizo que poco a poco fuera más distendida la grabación(creo que se nota que también había confianza :)).

Hablamos bastante de qué es Jobsket como proyecto, y mucho también de cuáles son nuestras herramientas de desarrollo: Java, Grails, Groovy, Lucene, Hudson, Eclipse… incluso un poco sobre microformats y, aunque fue muy por encima, hasta sobre Grails vs Ruby on Rails.

SQLite, booleanos y buenas prácticas

April 21st, 2009

Hace unas semanas estuve implementando un sencillo sistema de votaciones con la ayuda del plugin acts_as_voteable, para un proyecto con Rails, donde me surgió un problemilla que gracias a los tests resultó menos doloroso.

Tras tener ya prácticamente escrita la acción para votar, implementé el test para el controlador con sus diferentes contextos(que sí, que TDD, pero uno todavía está en la fase de acostumbrarse :P). Cuando ejecuté el test por primera vez, esperando que me diera algunos fallos en mi código, me llevé la sopresa de un error SQL con origen en el plugin, que no existía la columna TRUE ¿¿en el where vote = TRUE??.

Lo primero fue pensar que no era posible, con ActiveRecord de por medio eso era un poco raro, por lo que las sospechas fueron para SQLite, que era el gestor de bases de datos en el entorno de tests. Probando a ejecutar los tests con una base de datos MySQL, fallaba mi código y no el del plugin, se confirmó la sospecha.

Una vez implementada completamente la funcionalidad y los tests pasando, tocó perder unos minutos para ver qué estaba pasando y google contesta rápido. Resulta que para utilizar booleanos en queries con SQLite debe utilizarse ‘true’ y ‘false’, al mirar el código del plugin se confirmaba el problema:


votes = Vote.find(:all, :conditions => [
"voteable_id = ? AND voteable_type = ? AND vote = TRUE",
id, self.type.name
])

El valor de vote estaba hardcoded, pues como tocaba cambiar el código, aproveché a cambiar self.type que está deprecated, por self.class:


votes = Vote.find(:all, :conditions => [
"voteable_id = ? AND voteable_type = ? AND vote = ?",
id, self.class.name, true
])

Y al ejecutar los tests con SQLite, los pasó. Pero luego resulta que había alguien que ya había solucionado el problema, como era de esperar en la comunidad Rails, en el plugin vote_fu (llegando a combinar funcionalidades complementarias de tres plugins distintos).

Después de crear la migración para eliminar la tabla de acts_as_voteable y crear la de vote_fu, ejecuté los tests del controlador para ver si tocaba cambiar algo, pero pasaban correctamente.

Conclusiones, además de lo aprendido con los booleanos de SQLite:

  • Aprovechar (en la medida de lo posible) la independencia de bases de datos que aportan ActiveRecord u otros ORMs, sobre todo si estamos desarrollando componentes reutilizables.
  • Y a procurar seguir mejorando en cuanto a la automatización de tests. Desde que empecé a escribir tests, hago commits con la conciencia más tranquila :).