Posts Tagged ecosistema

Separando configuraciones en Eclipse

Últimamente no hago más que probar IDEs. Sí, seguramente es que me aburro mucho. Bueno, el caso es que mi IDE preferido es Eclipse. He probado muchos y no es que sean peores (me ha gustado mucho IntelliJ su versión de pago por su colección estupenda de plugins y por el estupendo soporte para Grails), pero es que llevo muchos (quizás demasiados) años usando Eclipse y me da pereza cambiar. He probado también NetBeans, pero sigo sin conseguir ver que sea suficientemente mejor como para justificar el cambio. También he probado el Aptana para Rails y tiene buena pinta, pero creo que aún no tengo criterio suficiente para decidirme sobre un IDE en este entorno.

Bueno, el caso es que probando, probando… me ha vuelto a surgir la necesidad de tener varias configuraciones de Eclipse. Llevo mucho tiempo sufriendo la degradación de mi IDE cuando pruebo plugins que no están del todo bien, o cuando va pasando el tiempo y pruebo a desarrollar con Android, y con Grails, y con …. y al final la configuración del IDE es tan grande que empieza a degradarse todo. Y recordé que hace mucho estuvimos buscando, en una empresa donde trabajé, una manera de tener las instalaciones de Eclipse distribuidas remotamente para que todos pudieramos sentarnos en cualquier puesto de trabajo de la oficina, sin tener que depender de instalaciones locales.

Podría optar por tener varias instalaciones completamente separadas, pero me parece un poco excesivo. Es una solución sencilla, rápida y funciona, pero me parece excesivo. Así que decidí complicarme la vida y buscar en la web de Eclipse sobre las opciones de arranque (recordaba algo, así que no fue difícil).

Mi última instalación está en C:\eclipse-java-helios-win32\eclipse (sí, mi portátil tiene Windows, ¿qué pasa? :-( ) Como veis, no me complico mucho la vida. Despliego el zip directamente en C: con el nombre del propio zip. Así que la estructura que tengo para esta configuración por defecto es:

  • configuration/
  • dropins/
  • features/
  • p2/
  • plugins/
  • readme/
  • .eclipseproduct
  • artifacts.xml
  • eclipse.exe
  • eclipse.ini
  • eclipsec.exe
  • epl-v10.html
  • notice.html

Así que decidí crear un acceso directo con el que llamar a eclipse.exe con el parámetro -configuration C:\eclipse-java-helios-win32\eclipse\configuration-alternativa

Arranqué y todo parecía ir bien porque cambié el workspace de inicio y, según la configuración que usara me proponía uno distinto para arrancar. Pero arranqué con la configuración alternativa, instalé “Google Plugin for Eclipse” desde el nuevo “Eclipse Marketplace” y al arrancar con la vieja configuración me encontré con que también se veía ahí el nuevo plugin. Claramente no había tenido éxito.

Así que eliminé el plugin para dejar la configuración como antes (creo que hay una opción para volver atrás, pero nunca he sabido cómo es y no me apetecía desenfocarme) y moví la carpeta configuration-alternativa a C:\Users\jmbeas\eclipseConfigurations\alternativa\configuration. Modifiqué el acceso directo para ejecutar Eclipse con esta configuración alternativa y vi cómo, al arrancar, se creaba un fichero artifacts.xml y varias carpetas justo en el mismo nivel que la carpeta configuration.

  • configuration/
  • features/
  • p2/
  • plugins/
  • artifacts.xml

Y ahora tengo mi configuración para empezar a jugar con el Google App Engine completamente separada de la que tengo para jugar con Java o de las que tendré para jugar con Android u otras cosillas que quiera ir poniendo.

Espero que os resulte útil.

Tags: , ,

Parado, pero no ocioso

Aunque estoy en las filas del INEM, es decir, en el paro, no estoy ocioso ni mucho menos.

Por un lado estoy bastante involucrado en la organización del Agile Open Spain 2009. Parece mentira que un evento tan sencillito, con un formato tan ligero como openspace y con tan “pocos asistentes” (hemos limitado las invitaciones a sólo 150), pudiera ser tan laborioso. Supongo que tiene que ver también con el hecho de que ninguno nos dedicamos a esto de organizar eventos, que estamos geográficamente dispersos y que es la primera vez que hacemos algo así. Y por si fuera poco, me tengo que preparar alguna cosilla para el Open como el “mortal kombat” con Xavi Gost (un ejercicio de TDD y programación en parejas “en vivo y en directo”, que queremos grabarlo y todo) o un breve discursito de bienvenida a los que vengáis.

Por otro lado, estamos constituyendo Agile Spain como asociación, lo cuál no es mucho, pero suma (o resta, según se vea). Igual que las “relaciones exteriores”. Mantener el contacto con Red.es y otros contactos que puedan ayudar a Agile Spain en el futuro es algo necesario, que a veces quizás ocupa más de lo necesario.

El grupo de Agile Spain en Madrid requiere un poco más de energía y para eso tengo que “soltar lastre” en otros asuntos. Pero es difícil dejar de hacer… porque me había comprometido, por ejemplo, a participar como revisor del libro de Carlos Blé sobre TDD y colaborar con una breve reseña sobre DDD. Buff… hago lo que puedo, Carlos. ;-)

También estoy arrancando un proyecto personal llamado agilismo.es. Pretendo que sea un portal donde ofrecer contenidos de calidad relacionados con las metodologías y prácticas ágiles. No os puedo contar mucho más porque hay que ir creando expectativa…

He estado preparando mi CV (ya os contaré sobre la única respuesta que he tenido hasta el momento) porque “a Dios rogando y con el mazo dando”, ¿no?

Y por si fuera poco, ahora me he dejado enredar por iExpertos.com (Gregorio Mena y Carlos Blé) para dar un pequeño curso en Tenerife sobre Buenas prácticas en Integración Continua, donde explicaré cómo montar un ecosistema software muy sencillo y las mejores prácticas que conozco para tener una integración continua decente. Teniendo en cuenta que los que vengan van a salir con “recetas” para irse a su casa y ponerse a jugar enseguida, creo que es tremendamente barato (apenas 35€), sobre todo si lo comparas con esos cursos de tres cifras que apenas te sirven para irte a tu casa y pensar en cómo pones en práctica todo aquello (si algún día siquiera tienes la oportunidad de hacerlo). Pero es tan barato porque en realidad se trata sólo de cubrir los gastos de mi desplazamiento y poco más. No hay un verdadero interés por parte de los organizadores (ni de mi mismo) de lucrarnos con esto. Hombre, si vais muchos quizás haya para darme un paseo por alguna otra isla. :-) Pero debo confesar que me gustaría comenzar a “redituar” todos estos esfuerzos.

Necesariamente, toda esta actividad hace que la regla del “no me aprietes que no te abarco” entre en juego. Hay iniciativas que arranqué con mucho cariño, como la lista de DDD en español, o algunas lecturas que quería ir resumiendo en este blog (que también tengo un pelín abandonado, lo sé).

¡Ah! Se me olvidaba, tengo dos pequeños a los que tengo que llevar y traer del cole y demás actividades. Menos mal que el mayor se baña solo. :-D

En fin, lo dicho, parado sí, pero no ocioso.

Tags: , , , , ,

El fin del verano


El fin del verano llegó. Ya estamos de vuelta en el cole, se acabaron las vacaciones, la playa, también se acaba el calorcito, las terracitas… Igual que con el principio de año, las listas de propósitos de enmienda proliferan. En mi caso, mi periodo sabático se ha acabado y comienza un periodo diferente: el de salir del desempleo. Para mi particular inicio de curso tenía algunas tareas e incluso asignaturas pendientes. Con vuestro permiso voy a hacer un recuento público del estado de las mismas.

Mi caja de herramientas

Hace algo más de un año me dije que tenía que mejorar mis conocimientos teóricos y prácticos en varios aspectos de la Ingeniería del Software (concretamente SOA y DDD), montarme un ecosistema software (con su control de versiones, su integración continua, su wiki y todo) y añadir a mi caja de herramientas algunos frameworks, herramientas y lenguajes a los que hacía tiempo que les tenía ganas (concretamente Wicket y Spring 2.5, con sus anotaciones y todo, un DVD con herramientas de IBM que sigue en la estantería aún sin abrir, y Ruby y Groovy).

Bueno, SOA salió de la ecuación bastante rápido. Demasiadas cosas y ya se sabe: “el que mucho abarca, poco aprieta”. Aunque pude asistir a una charla que dió Udi Dahan en Madrid gracias a iMeta y que, además de aclararme un montón de dudas, me enseñó cómo hacer “SOA de verdad”, con servicios realmente autónomos. En cuanto a DDD, sigo ahí peleándome con el calendario y mis obligaciones diarias, pero algún día conseguiré tener mi ejemplo “end-to-end” para poder explicar esto de los repositorios, la “ignorancia de la persitencia” y todo eso que cuando lo lees resulta tan elemental pero a la vez tan difícil de traducir en líneas de código. Incluso creé en su momento un googlegroup, pero me temo que no le estoy dedicando tiempo ninguno y pido disculpas por ello.

El ecosistema software está funcionando en mi portátil a pleno rendimiento: Hudson, Subversion, Dokuwiki, Maven, Eclipse. ¿Se me olvida algo? ¡Ah! ¡Sí! Sonar. Aunque éste lo tengo un poco aparcado… Me quedan en el tintero afinar cosas como tener una buena estructura para los builds con Maven y las pruebas de integración y funcionales, probar cómo va eso de Git, probar el Testability Explorer de Misko Hevery (que por cierto tiene un blog sobre testing muy recomendable).

En cuanto a Wicket, he hecho mis pinitos, pero tengo que explotarlo aún más. Desde luego, lo que tengo claro es que antes muerto que JSF. :) Spring 2.5 está más o menos dominado: no era tan complicado. Y mi relación con Ruby-Rails y Groovy-Grails es un poco rara. No termino de creer en ninguno de los dos, pero aun así este verano he estado insistiendo a mi sobrino Nico para que aprendiera, le instalé el Aptana y le ayudé a refactorizar alguno de sus ejemplos de Ruby (el pobre no había llegado al capítulo de las subrutinas y yo dándole caña, ¡es que no tengo corazón!). El día 3 voy al curso que Escuela de Groovy organiza junto a JavaHispano. Este verano he estado jugando (no me atrevo a decir más) con Eclipse y un plugin bastante apañado, pero sigo sin “pillarle el puntillo”. No sé, debe ser que me pilla un poco viejo o que he perdido el gusto por programar…

Para no perder la práctica he estado entrenando un poco, pero claro, nada serio. Quizás lo más interesante fue el ejercicio del libro de Refactoring. Por cierto, me estoy haciendo (a ratos, porque no consigo tener la continuidad ni la serenidad de espíritu necesarios) un codekata que me está resultando bastante interesante.

De todos modos, hay temas que han salido de mi caja de herramientas (por lo menos por una buena temporada) como OSGi o JAX-WS.

Concordion

¡Ay! Mira que tengo ganas de poner lineas de código mías en Concordion. Incluso tengo un “issue” asignado desde hace la tira… pero de veras que no consigo sacar el tiempo necesario para programar. Ni pomodoros ni nada. Eso sí, conseguí mavenizarlo y que las “releases” se publiquen automáticamente en el Repositorio Central de Maven.

Tengo a medias un taller sobre especificaciones ejecutables que quiero armar usando Concordion, pero una vez más… “el que mucho abarca poco aprieta”.

Agile Spain

Realmente éste ha sido y es mi gran caballo de batalla. En principio mi interés consistía en formarme “formalmente” en esto del agilismo. Así que me apunté a un curso de Scrum de dos días que no tenía mala pinta y que no era “fu*ing expensive” como los CSM. Además lo daba un andaluz, como yo. Mala suerte. Me nació el pequeño en medio del curso. Por suerte, Ángel es un tipo muy amable y comprensivo y me dejó repetir el curso (desde el principio, je, je).

El 7 de junio de 2008 creé la lista de correo “heredando” el nombre de una comunidad que había ido languideciendo en los últimos años, pero no hubo nadie más hasta el 21 de julio que se añadió Juan Gutiérrez desde Finlandia. Pasaron algunos meses hasta que Jorge Uriarte y Xavier Quesada propuesieron la refundación y ahora somos 230 en la lista (aunque seguro que hay más gente que la lee y no está suscrito, pero los Googlegroups no dejan poner Google Analytics :( ) e incluso vamos a organizar el primer Agile Open en España, con 150 asistentes y una lista de espera que nos lleva hasta los 233 que hay ahora mismo. Pero es que además, para primavera queremos organizar algo aún más grande, como ensayo para una conferencia a nivel internacional. El día 2 nos han invitado a una reunión en red.es para ver de qué manera podemos colaborar. !A mi se me ocurren muchas ideas! Y también estoy en contacto con Agoranews (los que están haciendo la cobertura audiovisual del SIMO). Ojalá de unos o de otros podamos conseguir que se graben algunas o todas las sesiones del Agile Open, pero queda poco tiempo así que no sé. ¡Pero apretaré para el evento que haremos en primavera!

Buff, pero éste no era mi objetivo cuando empecé con esto de Agile Spain. Yo sólo quería hacer que los que hacían agilismo en España “salieran del armario”, de esa manera, pícaro yo, sabría a quién enviar mi CV. Pero la cosa se ha salido un poco de madre y me han invitado a grabar un par de podcasts (uno para JavaHispano y otro para 32minutos). Pero el colmo ha resultado cuando desde la Tenerife LanParty 2009 me han invitado a dar una charla sobre esto del agilismo. Y encima han quedado muy contentos y todo. Total, que resulta que cuando escribes en Google “agilismo” salgo en casi todos los primeros resultados. Vamos, que casi sin haberlo querido estoy bien posicionado.

Viendo que esto parecía que me abría una oportunidad profesional interesante, decidí explorarla este verano. Para ello he empezado a trabajar en un estudio de mercado sobre “agile coaching” en España. Quiero aprovechar el Agile Open para pasar una encuesta a los asistentes y así poder sacar conclusiones un poco más científicas que simplemente una sensación. Luego dejaré el estudio a dominio público porque para mi ya será suficiente y, quién sabe, quizás ayude a otros a decidirse por un camino similar.

He hablado con varios emprendedores y freelancers (con Ángel, con Abel, con Leo, con Xavi) y todos me dicen que adelante, sin miedo. Pero yo soy un “cagao” y tengo muchas reticencias. ¿De verdad se vive mejor como autónomo? Mi madre, hace muchos, muchos años, era propietaria de una tienda de ultramarinos (que antiguo suena eso) y estaba esclavizada por su trabajo. Por cuenta ajena, al menos tienes un horario (que tienes derecho a respetar). Pero claro, conociéndome, ese argumento suena a “excusa barata”.

Así que, claro, ahora me surge una pregunta: ¿Y ahora qué? ¡Ah! ¡Sí! Pues decidir si preparo el CV y lo subo a Jobsket o, por el contrario, preparo un porfolio de servicios y me hago freelance “porlagloriademimadre”.

Tags: , , , , ,

La invasión de las métricas mutantes

El escéptico Abel Muiño, Manuel Recena y otros más de la lista de Ecosistemas Software son unos “adictos” a Sonar, de modo que no me ha quedado más remedio que evaluarlo. Con una conexión más o menos decente a Internet seguro que se instala bien y rápido, las instrucciones son muy sencillas. El problema que he tenido es que cuando la conexión a Internet falla, la cosa se complica porque hay muchos jar que descargar… Pero bueno, el proceso es bastate robusto. Requiere de una base de datos: yo he elegido MySQL, pero pueden ser otras.

Para el que no lo sepa, Sonar es una herramienta que sirve para recolectar métricas de muy diversa índole y mostrarlas juntas. Por ejemplo, recopila los tests (maven’s surefire), la cobertura de los mismos (Cobertura), análisis estático (PMD), acomodación a reglas de estilo (checkstyle), etc. Además, elabora históricos, con lo que podemos ver la evolución y todo… Se puede jugar con él durante horas para ver todas las métricas, hipervinculadas con el código, con los tests, etc. Muy chulo.

Examinar un “dashboard” de Sonar es, sin embargo, un tanto agobiante. Mucha información. En mi opinión: demasiada. Ya lo hemos discutido varias veces en la lista de “agile-spain” y en “foro-agiles”, pero mi postura sigue siendo la misma: mejor pocas métricas pero que ayuden que muchas pero que despisten. El objetivo fundamental de un equipo de desarrollo es, desde un punto de vista agilista, claro, entregar valor al cliente al final de cada iteración y de manera sostenible en forma de software que funciona. Y esto es relativamente fácil de medir: cuánto incremento de valor hay en cada iteración. Lo ideal sería medirlo en euros, pero quizás algo complicado… mejor en puntos de historias de usuario.

De todos modos, Sonar es una herramienta que, convenientemente afinada, puede ser de gran, gran ayuda para los perfiles responsables de mejorar la calidad interna de los proyectos. Con Sonar se pueden preparar sesiones de revisión de código muy productivas. En cualquier caso, ésta es una discusión muy rica.

Tags: ,

Un tablero kanban en un wiki

Últimamente se habla bastante en las listas de agile-spain y foro-agiles sobre Kanban. Éste es un método menos prescriptivo (más relajado si se quiere leer así) que Scrum e incluso más adecuado que éste para situaciones en las que no es posible hablar de proyecto o incluso de equipo. En estas listas se ha hablado de aplicarlo, por ejemplo, en equipos que, por su naturaleza, se dedican a consumir “tickets”.

Si alguien está interesado, Henrik Kniberg acaba de publicar en su blog un excelente artículo en forma de comic explicando cómo usar los tablones cuando usamos kanban. Y lo podemos complementar con el artículo de Xavier Quesada en su blog sobre visual management, que es de donde he capturado la imagen para ilustrar este artículo.

Y por casualidad he encontrado una solución muy sencilla (a la par que elegante) para tener un tablero kanban en web. Se llama Simple Kanban y consiste en un HTML autocontenido, tipo Tiddlywiki, salvo que no tienen implementado el botón de guardar. Bueno, todo se andará.

Y se me ha ocurrido intentar integrarlo en un wiki, concretamente en dokuwiki (creo que cualquier wiki valdría). Así que me puse a ver cómo era ese HTML y cómo integrarlo en una página wiki. Se trata de un montón de javascript y un par de textareas donde se encuentran los datos (una lista para las columnas del tablero y otra para las tareas que van en cada columna, con un formato csv). He creado un sencillo plugin (a pesar de no tener ni idea de PHP) que me incluye casi todo el HTML (excepto el textarea con los datos de las tareas) y no se ve mal. Cuando edito la página del wiki queda bastante sencillo. Es algo como esto:

~~NOCACHE~~

<html><!-- The data for the stories --><textarea rows="1" id="stories" style="visibility: hidden;">P_Q,S17,Fix YSlowP,S3,Make application faster</textarea></html>

[SIMPLEKANBAN]

¿Dónde está el problema? Pues que todos los cambios que hago en el tablero mediante “arrastrar y soltar” no quedan guardados en ningún sitio. ¡Maldita sea! He vuelto a caer en la trampa del pistolero. Me he dedicado a disparar lineas de código como un poseso sin pararme a pensar en si era viable lo que estaba haciendo. Bueno, tranquilo, “inspect and adapt”. El problema es que mi diseño es incorrecto. El HTML de Simple Kanban modifica ese textarea donde contiene los datos que luego muestra. Necesito quizás modificar Simple Kanban para que, en vez de modificar el textarea, modifique un fichero con los datos. Otra opción sería poner un botón de “guardar” en el tablero y que hiciera algo parecido a lo que hacen los botones de “Editar” y “Guardar” de dokuwiki. Mmmm, no tengo ni idea de cuál de las dos opciones es más factible (si acaso alguna de las dos lo es).

¿Alguien me puede echar una mano con esto?

Tags: , , ,