#XDP: Crónica I

Como ya avisé aquí, el pasado viernes nos reunimos un grupo de personas de Sevilla interesadas en las metodologías ágiles, y el desarrollo e ingeniería del software en general, bajo el título de #xdp.

La reunión fue genial, y es muy interesante ver cómo están organizándose otros grupos de desarrollo, y qué temas preocupan a colegas.
Una lista de algunos de los temas que se trataron está en la página de la reunión, así como la lista de asistentes.

En ese sentido, la verdad es que pese a lo precipitado de la convocatoria, tuvo muy buena difusión y aceptación, y nos reunimos 16 personas. Muchas gracias a todos los que difundieron la convocatoria.

Seguramente dentro de poco montemos una segunda reunión, y esta vez montaremos una encuesta para fijar el día, que varias personas han mostrado su interés pero tienen conflicto de horarios los viernes. Espero esta vez no olvidar tirar alguna foto. También espero tomar mejores notas y hacer la crónica cuando esté el evento más reciente, para poder extenderme un poco más.

Advertisements

#XDP: eXtreme Desconference for Programmers

Hemos organizado la #xdp, una desconferencia para tratar metodologías ágiles, ingeniería y desarrollo de software, o cualquier otro tema que surja. Las desconferencias son conferencias sin ponentes, o más bien en las que todos los asistentes son ponentes, y sin programa preestablecido, hasta que los asistentes lo deciden. La idea no es más que reunir a gente con intereses comunes, para conocernos y aprender y enseñar entre todos.

Supongo que la desconferencia versará alrededor de programación, diseño y metodologías, pero hasta que no estemos allí no lo sabremos. Desde hace tiempo quería organizar algo similar, pero no disponía del tiempo y los recursos que estimaba necesarios para ello. No obstante, alrededor de una discusión en twitter con @davidjguru, @xflx y @fran surgió el quedar para hablar de tecnología y tomar una cerveza, y vi la luz: no hacía falta nada más que querer. Así que hicimos la convocatoria abierta.

Así que de esta manera improvisada, se ha convocado la

XDP: eXtreme Desconference for Programmers
Desconferencias sobre desarrollo de software, metodologías ágiles y temas aledaños

y hemos quedado en vernos el

Viernes 7 Mayo 2010, 18:00h
en la Puerta Principal Escuela Técnica Superior de Ingeniería Informática
Avda Reina Mercedes s/n 41012 Sevilla

Para apuntarse y más información, vista la página http://xdp.jottit.com/
Puedes seguir la información en tiempo real en twitter a través de #xdp

Un precedente de eventos similares en Sevilla han sido las desconferencias de Ecosistemas Software.
A ver si conseguimos el mismo éxito 🙂

Herramientas para Scrum

Recientemente en la lista de Ecosistemas Software he rajado de lo lindo de las herramientas que he probado para un proyecto que usa Scrum, ensañándome especialmente con Agilo para Trac.

¿Alguien puede proponer alternativas?
Se agradece.

PD: Quizá sea un tema interesante para una futura desconferencia. Detrás de la tercera debe venir la cuarta, ¿no?

Archiva 1.2.1 sobre JBoss AS 4.0.5 en Windows 64

El primer paso es descargar JBoss 4.05 de la web de descargas de la comunidad de JBoss. Se descomprime en C:\ y se descarga el utilitario para instalarlo como servicio. Esta parte es muy simple y se explica en la siguiente url: http://www.jboss.org/community/wiki/JBossNativeWindows.

Una vez hecho esto, procedemos a montar Apache Archiva. Como vamos a usar de base de datos Derby, debemos copiar derby-10.1.3.1.jar y derbytools-10.1.3.1.jar en la carpeta server\default\lib.
Extraemos archiva-1.2.1.war en la carpeta server\default\deploy\archiva.war.

Creamos el archivo server\default\deploy\derby-ds.xml, con el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
     <jndi-name>users2</jndi-name>
     <connection-url>jdbc:derby:database/archiva;create=true</connection-url>
     <driver-class>org.apache.derby.jdbc.EmbeddedDriver</driver-class>
     <user-name>sa</user-name>
     <password></password>
     <min-pool-size>5</min-pool-size>
     <max-pool-size>20</max-pool-size>
     <idle-timeout-minutes>5</idle-timeout-minutes>
     <track-statements/>
  </local-tx-datasource>
  <local-tx-datasource>
     <jndi-name>archiva</jndi-name>
     <connection-url>jdbc:derby:database/archiva;create=true</connection-url>
     <driver-class>org.apache.derby.jdbc.EmbeddedDriver</driver-class>
     <user-name>sa</user-name>
     <password></password>
     <min-pool-size>5</min-pool-size>
     <max-pool-size>20</max-pool-size>
     <idle-timeout-minutes>5</idle-timeout-minutes>
     <track-statements/>
  </local-tx-datasource>
</datasources>

Necesitamos crear también el server\default\deploy\archiva.war\META-INF\context.xml:

<Context path="/archiva" docBase="/">
  <Resource name="jdbc/users" auth="Container" 
            type="javax.sql.DataSource" username="sa" password=""  
            driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
            url="jdbc:derby:database/users;create=true" />
  <Resource name="jdbc/archiva" auth="Container"
            type="javax.sql.DataSource" username="sa" password=""
            driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
            url="jdbc:derby:database/archiva;create=true" />
  <Resource name="mail/Session" auth="Container"
            type="javax.mail.Session"
            mail.smtp.host="localhost"/>
</Context> 

En server\default\deploy\archiva.war\WEB-INF\classes\application.properties tenemos que añadir appserver.home y appserver.base:

user.agent=Apache Archiva/1.2.1
appserver.base=
appserver.home=

Y por último, añadimos el server\default\deploy\archiva.war\WEB-INF\jboss-web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
 <resource-ref>
   <res-ref-name>jdbc/users</res-ref-name>
   <jndi-name>java:/users2</jndi-name>
 </resource-ref>
 <resource-ref>
   <res-ref-name>jdbc/archiva</res-ref-name>
   <jndi-name>java:/archiva</jndi-name>
 </resource-ref>
 <resource-ref>
   <res-ref-name>mail/Session</res-ref-name>
   <jndi-name>java:/Mail</jndi-name>
 </resource-ref> 
</jboss-web>

Profit!

Barbara Liskov gana el Premio Turing 2008

Barbara Liskov ha sido galardonada con el premio Turing 2008 por su contribución a los fundamentos teóricos y prácticos en el diseño de lenguajes de programación y sistemas, especialmente relacionados con la abstracción de datos, tolerancia a fallos y computación distribuida.

El premio Turing, otorgado por ACM, es uno de los más prestigiosos reconocimientos en el campo de la Computación.

Más info: https://ieeesb.us.es/ieeesb/

Software Versioning

Every day, we cope with software versioning.

We often hear sentences like: “Hey, have you seen the new Firebug 1.3.3?”, “Have you installed Ubuntu 8.10?”, “When will Windows 7 be released?”, “Is Gmail still in Beta?” or “Check my new web 2.0 site!”

Personally, and it seems that a lot of people agree about this, I like the Ubuntu versioning pattern: the major version indicates the year of releasing, and the minor one the year’s month when it was released.

If we talk about web applications, I prefer putting the revision number of the published revision in our source control in some hidden place, so if the application is hosted in different servers is easy to know what version of the software is our server running. (Note: check the downsides: if it’s a very public project, you are making cracker’s life easier)

It’s a reality that there aren’t any standards for software versioning and naming, and frequently development teams and marketing folks use different names for the same version of a product. As always, life will be easier if we had some standards in place.

But the way, we have some de facto conventions, and we should use them. If we use the popular X.Y.Z versioning format, a change in X implies massive architecture changes, and a change in Y means that there exists compatibility with other versions with same X.

If you are using .NET Framework, you should know that you can generate your assemblies version automatically based on the time of compilation. Check the article about AssemblyVersionAttribute from the MSDN:

When specifying a version, you have to at least specify major. If you specify major and minor, you can specify an asterisk (*) for build. This will cause build to be equal to the number of days since January 1, 2000 local time, and for revision to be equal to the number of seconds since midnight local time, divided by 2.
If you specify major, minor, and build, you can specify an asterisk for revision. This will cause revision to be equal to the number of seconds since midnight local time, divided by 2.

This article came to my mind when I read about the new PHP release, PHP 5.3. The previous was only some context for my rant:

What were PHP people thinking about when they decided changing only the minor version number with a new version with backward-compatibility issues?

If you are going to feel the pain, maybe this IBM post series can ease you: What’s new in PHP V5.3.

PS: They’ve introduced goto in the language too. I won’t say anything about it. Use it at your own risk.

If programmers have make a plane…