Archive for November, 2009

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: , , , , , ,

Google me ha robado mi blog

El 29 de octubre de 2009 (hace ya casi dos semanas) me avisó un amigo de que mi blog había desaparecido. Vaya, pongo el URL y Blogger (empresa propiedad de Google) me contesta con un lacónico “No se encuentra el blog que busca”. Tirando del hilo resulta que parece que algún robot de Google ha decidido, sin avisar a nadie, que mi blog era una mina de contenido inapropiado. Como en todo este tiempo no he recibido ni un triste correo de Google para explicarme la situación de mi caso, he decidido mudarme y, si en un tiempo prudencial no puedo recuperar mis contenidos, tendré que denunciar a Google. Sí, denunciar. Porque son mis contenidos y Google me los ha robado. No valdrán mucho, pero son míos y los quiero.

Por cierto, muchas gracias iExpertos.com por acogerme. Me parece que éste es el comienzo de una bonita amistad…

Tags: , , , ,