Posts Tagged groovy

Muchos temas pendientes

Tengo pendientes ya demasiadas cosas. Tantas que me van a salir hasta telarañas (como las de la foto). No sé si tengo justificación para todas, pero tampoco es que vaya a cambiar nada el poner excusas. Así que voy a hacer un pequeño resumen (otro) del estado de mi vida y así, de paso, me ayudará a poner en orden mis prioridades.

Contenidos recuperados

Tengo pendiente la segunda parte de la explicación de cómo conseguí importar mi viejo blog usando Groovy y la API de Google Reader. Esto es algo que requiere bastante esfuerzo pues, aunque tengo el código escrito, hay que explicarlo convenientemente (no es mi mejor pieza de código y no es suficientemente autoexplicativa) y además tengo que buscar un plugin de WordPress o algo que permita que el código fuente se vea decentemente. Se admiten sugerencias.

Claro, ahora que Google ha tenido a bien devolverme el viejo blog, algunas tareas de mejora sobre el proceso de recuperación pierden interés (me refiero a que hay anuncios que han quedado empotrados en los artículos importados y a que los enlaces han quedado apuntando al viejo blog) y aparecen necesidades nuevas. Lo primero que he hecho ha sido hacerme una copia de seguridad tanto de los contenidos -incluyendo los comentarios y la plantilla- y lo segundo poner un aviso de que me he mudado “para que conste”. Así que ahora he pensado que lo ideal sería importar esa copia de seguridad al nuevo blog, pero tengo que hacer una prueba en local y todo eso antes de hacer el cambio… y me está dando una pereza…

En cualquier caso, prometo escribir (pronto) la segunda parte del artículo sobre cómo importé el contenido del viejo blog. Aunque sólo sea porque lo prometido es deuda.

Reunión Agile Madrid

Tengo también pendiente el resumen de la última reunión del grupo local de Agile Spain en Madrid. Lo que pasa es que Alberto Peña (@plagelao) ha hecho tan buen resumen en su blog que casi que me voy a quedar en dejar constancia y poco más. Ya he subido las diapositivas que utilicé, pero no subiré las notas que escribí para ayudarme porque realmente no aportan nada a la presentación. Sólo para quede constancia: no es ni mucho menos mi mejor presentación; y me alegro mucho, mucho, de que se me olvidara comprobar el espacio en disco antes de empezar a grabar el video, y vuelvo a pedir disculpas públicamente a mis compañeros del grupo de Agile Spain por no haberme preparado bien la presentación. Podríamos haber aprovechado mucho más la reunión. Aunque son gente estupenda: no hicieron sangre conmigo y además me ayudaron a que el resultado final de la reunión fuera muy positivo.

Mi resumen de la discusión es el siguiente:

La confianza es el valor más difícil de alcanzar dentro de un equipo que se quiera autoproclamar ágil. Confianza en sí mismos, confianza entre ellos y confianza hacia el exterior (incluyendo a otros departamentos y, sobre todo, al cliente).

Yo siempre había pensado que la clave estaba en el coraje y la autoexigencia, pero después de esta reunión me di cuenta de que éstos son valores individuales, que requieren un esfuerzo individual. Pero el mayor obstáculo para ser ágil es un obstáculo colectivo: la confianza. Es relativamente fácil confiar en uno mismo, pero confiar en los demás… ay, ay, eso ya es otra cosa. Y que los demás confíen en nosotros… eso ya ni te cuento. ¿Verdad?

Agilismo.es

También estoy arrancando agilismo.es con el inefable Xavi Gost. Queremos hacer de agilismo.es un portal de referencia para el agilismo desde su perspectiva más de las trincheras. Hay ya muchos portales en español sobre Scrum y en general desde un punto de vista de la gestión de los proyectos. Por ejemplo, Proyectos Agiles (que dirige Xavier Albaladejo) es muy buen punto de referencia para esto. También Scrum Manager (iniciativa de Juan Palacio). Pero hemos visto que hay una gran carencia de contenidos de calidad cuando nos ponemos a buscar, desde el punto de vista de los desarrolladores, referencias en español sobre Extreme Programming, Integración Continua, TDD, Programación por Parejas, etc.

Ahora mismo es poco más que una “página güeb” donde este tipo y yo nos ofrecemos para dar coaching, pero no dudéis que va a ir creciendo rápidamente, con contenidos propios y de calidad.

iExpertos.com

Con Carlos Blé y su iExpertos.com tengo una relación muy curiosa. Además de proporcionarme “por la cara” el wordpress donde tengo mi nuevo blog, Carlos se ha empeñado en que yo puedo dar cursos. Bueno, a mi también me ha parecido buena idea, claro. Yo le había propuesto dar un taller sobre Integración Continua, pero no cuajó. Ahora parece que hay posibilidades de uno sobre Refactoring. Éste es más complicado porque requiere preparar muy bien el material. Pero me parece un taller muy, muy bonito. Ya veremos si sale y si lo puedo hacer yo o lo hace el propio Carlos, que de eso también sabe.

Por otro lado, hace tiempo le comenté que podríamos hacer un podcast “agilismo.es powered by iExpertos.com” y el tío ya tiene casi todo montado. Hasta hemos tenido que decir que no a Jorge Rubira para grabar un podcast de JavaHispano sobre el Agile Open Spain 2009, porque queríamos sacar el primer podcast antes de Navidades y Jorge ya no tenía hueco. Carlos es un tipo muy emprendedor e incluso se ha buscado un amigo que nos ha hecho una sintonía para no tener que pagarle a Ramoncín. Je, je.

También estamos pendientes, junto con Gregorio Mena, de arrancar una serie de webinars. Esto último es mucho más complicado incluso que el podcast, que ya tiene miga. Pero si conseguimos darle forma va a ser un bombazo.

¡Ah! Y el ya casi famoso libro de TDD de Carlos… adivinad quién ha escrito el prólogo… y no es el típico prólogo. Pero para saber de qué va lo tendréis que descargar. ¡Que será gratis!

Trabajo

Y la noticia de la semana es que ya tengo trabajo. La verdad es que ya casi tenía trabajo. Estaba a punto de cerrar un acuerdo para teletrabajar de “freelance” programando un par de aplicaciones JSF en un equipo scrum de tres personas (una jefa de proyecto, un junior y un servidor). Iba a ser mi primera experiencia como trabajador por cuenta propia. Pero hablo en pretérito imperfecto porque ayer por la mañana fui a una entrevista a la que había llegado convocado a través del INEM. (Sí, ya sé que es un poco extraño, pero ha sido así). Y resulta que he aceptado trabajar en un proyecto de 6 meses para el Ayuntamiento de Alcobendas. Bueno, y ellos también han aceptado trabajar conmigo, claro.

Estoy seguro de que va a ser un proyecto muy bonito en el que voy a poder aprender mucho. Creo que será muy bueno también para el Ayuntamiento, para los empleados a los que voy a ayudar y en última instancia para los ciudadanos. Durante la entrevista les expliqué por encima esto del agilismo y “alucinaron”. Claro. Les gusta mucho eso de ir teniendo “software que funciona”. Pero a continuación les cambia el gesto cuando se acuerdan de “las cosas de palacio van despacio”. Je, je. Dentro de un par de meses ya veremos quién ha sido más testarudo: si yo y mi “agilismo de guerrilla dentro de la recalcitrante administración pública” (parece el título de una peli de miedo) o ellos con su “no, no nos moverán”. Sospecho que ganaré yo. Mis armas son mucho más poderosas. Estoy dotado de un optimismo a prueba de bomba y ellos no. Todavía.

Coding Dojo

¡Pero esto NO es todo, amigos! El día 22 (el día de la Lotería) estamos montando un “coding dojo” en las intalaciones que Okuri Spaces tiene en el barrio de Tetuán (en Madrid). El maestro Xavi Gost vendrá a darnos una clase de su kung-fú programando en Java una aplicación para hacer un “pomodoro”. Y eso en un “pomodoro” de duración: 25 minutos. La sala es pequeña (apenas cabrán sentados unas 20 personas), pero lo grabaremos, tranquilos. Será gratis y la idea es que nos sirva para promocionar agilismo.es powered by autentia, que si todo va bien será una iniciativa muy interesante relacionada con la formación de calidad y de la que por el momento no os puedo comentar más porque tampoco hay mucho más y porque, ¡qué caramba!, hay que crear un poco de expectación.

En fin, esperemos a ver qué tal nos lo pasamos en el Dojo y si alguno de vosotros se decide a venir, no olvidéis saludarme, que a todo bloguero le hace ilusión conocer a sus lectores.

Tags: , , , , , , , , , , ,

Contenidos recuperados (I)

Por fin he conseguido recuperar mis contenidos del viejo blog en Blogger después de que Google y sus maléficas hordas de robots me lo robaran. Pero no creáis que lo que ha pasado es que Google se ha apiadado de mi y me los ha devuelto. Ni mucho menos. De hecho, sigo sin recibir noticias de Skynet. Creo que fue Leo Antolí el que me puso en la pista cuando me dijo que él podía leer mi blog con el Google Reader. Así que vi que había una API no documentada pero relativamente fácil de ir encontrando cómo extraer todo el contenido de mi blog desde el principio. Y me puse a ello. El resultado es que, a veces a ratos, a veces a sesiones más largas, ha dependido un poco del tiempo libre disponible, he conseguido:

  • extraer el contenido de mi viejo blog usando Google Reader,
  • lo he guardado en un fichero xml (luego explicaré un poco sobre el formato)
  • y ese mismo fichero lo he importado en el WordPress que mi amigo Carlos Blé ha sido tan amable de cederme en iExpertos.com para alojar mi nuevo blog.

He aprovechado que tenía que escribir este programita para poner en práctica lo que aprendí en el curso de Groovy al que asistí no hace mucho. Groovy es un lenguaje lo suficientemente parecido a Java como para que la curva de aprendizaje no sea una barrera, y además incorpora toda una serie de simplificaciones de la vida normal del programador que hace que ponerse a hacer algo y que funcione sea muy atractivo.

Lógicamente he practicado un poco de TDD, pero sinceramente, la experiencia de refactorizar en un lenguaje dinámico como Groovy hace que sea bastante pesado y a veces desmotivador. El IDE no te ayuda tanto (no puede hacerlo en parte por la naturaleza del lenguaje) y eso se nota. Hay que ser mucho más cuidadoso, ir más despacio… buff. Y lo peor es que te tienes que pensar muy bien los nombres de las cosas porque renombrar un método o una variable implica hacerlo a mano, con mucho cuidadito.

En cualquier caso, es estupendo programar usando TDD: te obligas a que tu diseño sea testeable, lo cuál te obliga a pensar muy bien en las responsabilidades de cada objeto. Se hace muy fácil ir explorando el problema simplemente añadiendo consideraciones en los tests.

Mi estrategia ha sido ir escribiendo todo lo que era necesario en el test para conseguir mis objetivos. Inicialmente lo que quise fue obtener el contenido de cada artículo del viejo blog en HTML y guardarlo (por si acaso, ya sabéis) :-) Más tarde, después de pensar un poco en cuál debería ser mi estrategia, decidí que lo mejor era guardar esos contenidos en un fichero para ser importado en el nuevo blog: un WordPress.

El primer objetivo era más bien jugar, practicando Groovy e ir escribiendo lineas de código para ir desentrañando la API de Google Reader. Una vez hecho esto, me olvidé un poco del código escrito (lógicamente aproveché trozos, pero no hice un trabajo de refactorización propiamente dicho). Lo interesante de esta primera parte fue que me ayudó a sacar varias conclusiones y afinar el entorno de trabajo:

  • trabajé con NetBeans y Eclipse y, aunque no está afinada la integración con Groovy en ninguno de los dos casos, me he de quedar con Eclipse. Por varias razones:
    • La más importante (para mi) es la fuerza de la costumbre. Estoy quizás demasiado acostumbrado a Eclipse y todos sus “keystrokes” (y eso que no programo últimamente demasiado)
    • La integración con Maven (uso el plugin m2eclipse -lo siento, Abel, no uso IAM)
    • El IDE de SpringSource, que apuesta decididamente por Grails y Groovy, está basado en Eclipse
  • La integración del plugin de Groovy y el plugin de JUnit es pésima. Hay que tener mucho cuidado porque te puedes encontrar persiguiendo fantasmas: se ejecutan tests que ya no están escritos, no se ejecutan tests que acabas de escribir o cosas por el estilo. Compilas, vuelves a compilar… y nada.
  • Llamar a Google Reader y procesar el JSON que devuelve como resultado usando Groovy es muy, muy, muy sencillo:
    def result = command.toURL().text
    JSON resultAsJSON = new JsonSlurper().parseText(result)
    
  • Extraer el contenido de cada artículo embebido en algún lugar de ese JSON se hace también muy, muy, muy fácilmente con Groovy:
    feed.items.each { item ->
      String title = item.title
      String content = item.content.content
      def out = prepareWriter(item.alternate[0].href - 'http://jmbeas.blogspot.com/')
      out << composeContentAsXhtml(title,content)
      out.close()
    }
    

De momento lo dejo aquí. En un par de días completo este artículo con la segunda parte, donde os explicaré cómo he generado el fichero en formato WXR (un RSS 2.0 extendido con etiquetas propias de WordPress), que tampoco está precisamente documentado.

Tags: , ,

¡Vaya semanita!

Me da mucha rabia no poder hipervincularme a mi mismo porque Google me ha robado mi blog, pero trataré de sobrevivir sin ello de momento.

No hace mucho explicaba que, aunque estoy desempleado, tengo mi agenda bastante ocupada. Esta semana ha sido un buen ejemplo:

Lunes

Para empezar, la semana ha sido más corta porque en Madrid el lunes fue festivo (“La Almudena”) y yo estuve de excursión familiar todo ese fin de semana largo. Estuve en el Valle del Jerte pasando unos días. En mi caso no sirve para quitar “estrés” ni cansancio, sólo se sustituye por otro tipo de “estrés” y cansancio. :-)

Martes

Tengo una vida doméstica muy rica. Lo cuál hace que a veces tenga que pasar mucho tiempo poniendo lavadoras y similares. :-) Pero entre lavadora y lavadora tuve tiempo para actuar como moderador en la lista de Agile Spain y dar “un toque” respecto a la Netiqueta. Esto de la Web 2.0 nos hace olvidar a veces que nuestra manera de comunicarnos debe adaptarse al medio. Pero bueno, también estoy seguro de que tiene mucho que ver con que el grupo de personas que participaban en la lista de Agile Spain ha crecido mucho en las últimas semanas y eso, necesariamente, obliga a que las costumbres se vayan ajustando.

Miércoles

El miércoles tuvimos reunión del grupo local de Agile Spain en Madrid. Agustín Yagüe (@ayague) nos explicó Kanban y estuvimos discutiendo sobre cuándo era conveniente usarlo. El resumen de Alberto Peña (@plagelao) es estupendo (así, de paso, me ahorro escribir más). Eso sí, una fotillo del “afterhours” donde la charla siempre es demasiado corta (sobre todo para los que tenemos que volver en cercanías).

El miércoles también empecé un mailing a algunos contactos para avisar de que vuelvo a estar dispuesto para incorporarme al mercado laboral. Efectivamente, he puesto el cartel de BUSCO EMPLEO. Así que ya sabéis, si conocéis a alguien que pueda necesitar un perfil como el mío para transformar sus equipos de desarrollo en equipos de alto rendimiento, no dudéis en darle mi CV. Lo siento, no os puedo ofrecer comisión, pero sí mi agradecimiento.

Jueves

El miércoles había grabado con la webcam del portátil la presentación sobre Kanban. ¡4 Gigas! Con lo que me pasé casi todo el día liado con conversiones de formato, subir el resultado a Vimeo, configurar el canal AgileSpainTV y el twitterfeed para avisar por Twitter. Incluso me curré una sencilla portada para el video, aunque ya estaba muy cansado y ha quedado como un “thumbnail”, que no me parece lo mejor, pero así se quedará por ser el primero.

Viernes

De madrugada me di cuenta de que Skynet me prometía que iba a restaurar mi blog en un día laborable. ¿Eso es calendario español? ¿USA? ¿China? No sé, no sé… Pensaba que Skynet tenía vocación de compañía global. ¿Acaso no saben que hay otros calendarios laborales? Podrían indicar a qué calendario laboral se refieren. ¡Ggrrr! ¿Se nota que estoy de uñas con esta gente porque me han robado mi blog?

A pesar de todo el maltrato, estuve jugando con Google Wave. Está muy verde. Mucho. Pero tiene pinta de que va a ser una plataforma de colaboración “brutal”. Yo ya estoy empezando a usarlo para colaborar con algunos a los que estoy enredando en cosas que tienen que ver con agilismo.es. De momento agilismo.es está más verde incluso que GoogleWave, pero creo que en el futuro será algo de lo que me podré sentir muy orgulloso e incluso vivir de ello (¡espero!).

También tuve mis más y menos con Juan Quijano (@Bendem) sobre si hay que poner comentarios o no en el código. Lo doy como batalla perdida. :-)

Sábado

Curso de Grails organizado por Escuela De Groovy (@escueladegroovy) y JavaHispano (@javahispano). Nacho Brito explica muy bien. Se nota que sabe de lo que habla. Me da un poco de “miedito” esto de Groovy y Grails por varias razones:

  • Me dan miedito los lenguajes dinámicos porque me gusta tener más control en tiempo de compilación y apoyo desde el IDE.
  • No me gusta el “scaffolding” por defecto porque da la sensación de que hacer aplicaciones CRUD-like está bien. ¡Y no es así!

Pero he de reconocer que hacerse una consola de administración con Grails es “cosa de niños” y que es ideal para arrancar una aplicación rápidamente y comenzar a obtener un retorno de la inversión rápidamente. Esto encaja muy bien con un enfoque ágil: iterativo e incremental.

Groovy es un lenguaje muy potente y una plataforma que ayuda mucho al
desarrollador. Está claro que ahorra muchas horas de programación
repetitiva.

Un cotilleo. Durante el café, Abraham me ha contado que están montando algo para Febrero relacionado con Spring. ¡Sólo puedo decir eso! ;-)

Y después de comer me he puesto a escribir este post, que iba a ser telegráfico pero ya ves… Je, je… y aún queda la noche del sábado y el domingo.

NOTA:
A todo esto, mi viejo blog sigue expropiado por Skynet.

Tags: , , , , , ,