Bug con IE 6 y LiveValidation

Este dolor de cabeza en forma de bug hacía bastantes días que lo tenía, utilizando la librería LiveValidation para validaciones con javascript con IE 6.

Pues resulta que cuando intentaba crear una nueva validación a un textarea concreto en un formulario, me daba un error:

LiveValidation::getElementType - Element must be an input, select, or textarea!.

A base de "debuggar" el código de la librería vi que al final la causa era porque ese textarea tenía un id=description, y al hacer la comprobación de si el elemento con ese id es un input, un textarea o un select devolvía un meta por el meta name=description... del header.

La solución tan sencilla como cambiar el dichoso id y seguidamente informar a los autores de la librería sobre el bug.

Curso avanzado sobre diseño de sitios web accesibles

Acabo de leer un correo que me han mandado desde el ICH, informándome de que quedan 90 plazas para su curso avanzado sobre diseño de sitios web accesibles. El curso se realiza vía online y es gratuito, y está orientado a trabajadores por cuenta ajena y autónomos.

Se parece mucho al curso que ya hice el año pasado con ellos, quizás hayan extendido en algo el curso, al menos parece que han puesto como última unidad didáctia una parte práctica. Pero personalmente me da la sensación que no deberían llamarlo avanzado, probablemente acabe siendo un buen curso introductorio pero no mucho más.

Por otro lado, ya que hablo sobre accesibilidad, también aprovecho para comunicar que Dani Torres y Javier Prenafeta van a impartir un seminario sobre la nueva legislación sobre accesibilidad web y sus implicaciones técnicas.
Esto será el día 31 de enero a las 19:00, en el local de Hispalinux en Zaragoza.

Lista sobre ecosistemas de software

Hace algo más de un mes que Manuel Recena anunció que había creado una lista de correo sobre ecosistemas de software basados, principalmente, en herramientas de código abierto.

En un principio su idea era crear una lista de correo de maven en español. Pero me parece muy interesante que se ampliara la temática, ya que habiendo tocado un poquito de maven espero empezar a "jugar" con herramientas de integración continua y, de esta forma, tengo un lugar de referencia dónde encontrar gente con experiencia en estas herramientas en caso de atascos/dudas.

Recomendaciones para invertir en tu portfolio de conocimiento

Últimamente no he escrito demasiado, las principales razones: un final de año en el trabajo que ha absorvido la mayoría de mi tiempo, acabar unas prácticas para la universidad y ésta última semana de merecidas vacaciones :), que he conseguido desconectar casi del todo, he empezado a leer el libro The Pragmatic Programmer.

En el primer capítulo(A pragmatic philosophy) habla, entre otras cosas, de invertir en tu portfolio de conocimientos, nuestra experiencia y nuestro conocimiento son nuestros activos más importantes, y da algunas recomendaciones de cómo hacerlo. Y aprovechando que se acaba el año me los pongo como propósitos para 2008.

  • Conocer un lenguaje cada año: Diferentes lenguajes resuelven de diferentes formas los mismos problemas, de esta manera, puedes tener un punto de vista más amplio para resolver un problema. Este año espero tener tiempo para empezar con Ruby(RoR) y con Groovy(Grails).
  • Leer un libro técnico cada 3 meses: En principio recomiendan leer sobre tecnologías con las que trabajas normalmente, pero también que cuando las domines realmente, cambies y estudies otras diferentes a las que estés acostumbrado. Veremos cuando acabe éste libro, que libros interesantes hay por ahí.
  • Leer también algún libro no técnico: Hay que recordar que los ordenadores los usan las personas, como no soy demasiado aficionado a la literatura me dejaré recomendar.
  • Asistir a clases: A ver si tengo tiempo(y me seleccionan) para asistir a algún curso del CTA, no conozco muchos más que puedan resultarme interesantes.
  • Participa en grupos de usuarios locales: Con intención de hacerlo activamente, por aquí esto está complicado, están hispalinux y cadius, que serían lo más parecido, pero que yo sepa nada de puramente para programadores. Aunque de forma online, seguiré participando activamente en todo lo que pueda en JavaConGanas, que podría ser lo más parecido a ésto.
  • Experimenta en diferentes entornos: A ver si este año por fin me cambio a usar Linux como mi SO principal, y en casa pruebo a fondo con IDEA y NetBeans.
  • Mantente actualizado: Sigo portales como javaHispano, infoQ y TheServerSide además de bastantes blogs que tocan temas de actualidad TI ¿Recomendaciones?.
  • Mantente conectado: Para encontrar gente que domine alguna tecnología, para esto ya utilizo sitios como los foros de javahispano, forosdelweb... Además de buscar información en internet, para esto además de los buscadores, mis contactos en del.icio.us me ayudan muchísimo:P.

Aparte de todas estas recomendaciones, que no son pocas, me apunto dos más.

  • Aprende/Mejora tu inglés: Esto no lo comentan en el libro más que nada por que los autores son anglosajones :), pero los que no dominamos demasiado el idioma debemos de hacer un esfuerzo en mejorar. Evidentemente la mayoría de documentación/libros aparecen en inglés primero y en muchas ocasiones no se llegan a traducir nunca, además así no nos limitamos a comunicarnos sólo con hispanohablantes.
  • Colabora en algún proyecto open source: De ésta forma, además de aumentar tu portfolio de conocimentos, aumentas tu experiencia. También tiene alguna otra ventaja, como licencias gratuitas de herramientas de pago para utilizarlas en proyectos open source.

Bueno, ahora ya sólo me queda desearos a todos un feliz 2008, y cuidado con la resaca ;)

Control de errores

Acabo de leer en el blog beautifulcode, una interesante entrada de Michael Feathers sobre el control de errores.

El post comienza con éste párrafo, que traduzco libremente: ...œEl control de errores es un poco cómo discutir quién saca la basura. Todos sabemos que hay que hacerlo, pero no dedicamos demasiado tiempo en pensar en cómo hacerlo....

Habla sobre trusted zones (zonas de confianza), en éstas zonas de nuestro código, no deben existir comprobaciones, únicamente la lógica de lo que estemos desarrollando, de ésta forma conseguimos un código más limpio y mantenible.
Si desarrollas librerías o frameworks, como no tienes control sobre cómo van a ser utilizados, sólo puedes hacerlo de forma confiada tus zonas de confianza no pueden ser muy amplias. Mientras si desarrollas una aplicación, debes tratar de separar el control de errores todo lo que sea posible de la lógica de negocio. El control de errores debe ser una cuestión de diseño, no algo de última hora.

Vamos, que por lo que parece utilizar trusted zones es una idea similar al diseño por contrato, pero sin contrato (sin precondiciones, invariantes o postcondiciones), y así evitar la programación defensiva para tener mejor código, más ...œbeautiful... :)