Unos compañeros del trabajo estuvieron hace unas semanas en Amsterdam. Una compañera compró allí un mechero. El mechero desde luego era un claro ejemplo de diseño centrado en el usuario, un usuario muy concreto. A diferencia de los mecheros más convencionales, este se había adaptado para el consumo de drogras psicotrópicas como el hachís.

Creo que es otro buen ejemplo para explicar en qué consiste la usabilidad y el diseño centrado en el usuario.
Son muchas las ocasiones en las hago uso de ascensores, tanto en edificios privados como en públicos. Su evolución en los últimos años es perceptible. Supongo que su mecánica ha ido mejorando en seguridad, calidad y rendimiento, pero eso no lo percibo directamente. Sin embargo, su diseño sí. Desde paneles con botones (pulsadores) grandes con el número de la planta impreso hasta botones que se activan con el tacto del dedo. Algunos de ellos han sustituido sus indicadores de luces por pantallas de LCD muy atractivas.
Hace algunas semanas me encontraba con un ascensor en el que había un panel con la misma funcionalidad que el convencional, pero adaptado para personas con discapacidad:

¿Por qué después de ver tantos ascensores me sorprendió? ¿Quizás porque no frecuenten mucho este tipo de adaptaciones?
Otro aspecto que me llama la atención es que en los ascensores se suele indicar el peso máximo que soporta el ascensor a partir del cual se pone en peligro a sus ocupantes. Resulta curioso esa relación entre el peso máximo y el número de personas aproximado. ¿De dónde han sacado esa relación? ¿Presuponen el peso medio por persona y su altura? En el único sitio donde he encontrado un ascensor con una escala luminosa para indicar el peso ha sido en la Universidad de Sevilla. La escala tenía definida tres segmentos, representados por los colores verde, amarillo y rojo respectivamente.
Me reafirmo en el título del post, el nuevo sitio web del Congreso de los diputados es perfecto. Es perfecto para usarlo como material tanto para preparar un curso o un seminario sobre estándares web, accesibilidad o usabilidad. Hay ejemplos sensacionales para explicar y exponer como no hacer las cosas. La verdad es que mientras escribo estas líneas sonrío porque estoy realmente alucinado de que este tipo de barbaridades salgan a la calle. Estos proyectos no valen ni para estar escondidos.
Ayer precisamente escribía un comentario en el blog de Luis Villa sobre su post titulado Grandes mentiras: la accesibilidad no es un coste añadido. Es evidente que si ponemos como ejemplo al sitio web que estoy comentando, la accesibilidad tiene un coste añadido. Por un lado hacerlo mal con un coste de casi 14 millones de euros , y por otro lado, hacerlo bien. Sospecho que el importe por el que se ha adjudicado el concurso público incluye otras cosas a parte del sitio web. Con independencia de la partida presupuestaria dedicada a la ejecución del nuevo sitio web, lo que si tengo claro es que se ha hecho con dinero público y el resultado es lamentable. Personalmente creo que se ha mal gastado dinero público y deberían dar explicaciones.
Después de estas impresiones creo que es el momento de aportar algunas cuestiones técnicas que justiquen por qué pienso que el resultado es lamentable. Como he comentado, sólo voy a enumerar algunas cuestiones relacionadas con estándares web y accesibilidad, justo las que me de tiempo antes de comenzar a cenar. Porque no es justo que encima les hagamos el trabajo a la UTE adjudicataria. Menuda pareja.
- El layout es fijo a 800 pixeles y centrado. Inicialmente esto no tiene por qué ser un problema, aunque para este tipo de contenidos un layout elástico hubiera resultado más interesante teniendo en cuenta la disparidad de configuraciones que los usuarios usan. Precisamente las consultorías previas están para este tipo de cosas, para obtener indicadores con los que posteriormente tomar decisiones. ¿Habrán realizado algún estudio sobre los agentes de usuario, resoluciones, sistemas operativos, javascript habilitado, java habilitado, etc…?
A pesar de haber elegido este tipo de layout, a una resolución de 800 pixeles de ancho aparece la barra de desplazamiento horizontal cuando no es necesario porque el contenido ocupa 765 pixeles. Evidentemente, el layout está mal implementado.


- Viendo la cabecera HTTP se comprueba que detrás de todo esto hay un producto comercial, en este caso de Oracle. Tampoco tiene nada de malo, pero parece contradictorio que haya tantas iniciativas y proyectos relacionadas con el software libre o de fuente abierta subvencionados por la administración pública y que luego se opte por soluciones comerciales para un sitio web como este. ¿Quizás el software libre sea argumento con fines únicamente políticos? En fin, esto es otra batalla.
Lo que pretendía comentar es que el servidor HTTP está devolviendo información con una codificación UTF-8 y sin embargo en el Content-type indica que es text/html; charset=windows-1252. Además lo indica cuatro veces. Pensaba que este meta se definía una única vez en la sección <head>.

- El documento que recibe nuestro navegador web no es un documento HTML, es algo que parece ser un documento HTML por las etiquetas de marcado que usan pero desde luego dista mucho de ser un documento HTML bien formado. No son son muchas las ocasiones en las que uno se encuentra una declaración de documento (DOCTYPE) en la línea 665, y en la línea 787, y en la 877, y en la 1409, y en la 1582. Un total de 5 apariciones. Desde luego se han tomado al pie de la letra el concepto de componente con los portlets.

- El layout está implementado usando tablas.
- Acopamiento máximo entre el contenido y su representación.
- Malas prácticas en el uso las hojas de estilo en cascada. No sólo no aprovechan su potencial, sino que la estrategia que han seguido les dificultará muchísimo el mantenimeinto. Más de 400 clases CSS y estilos inline lo dicen todo.
- Mínima accesibilidad en las URL del sitio web. ¿Qué sentido (semántico, claro está) tiene está URL: http://www.congreso.es/portal/page/portal/Congreso/Congreso? ¿Qué sentido tiene? Que nos encontramos en el congreso, que a su vez está el congreso en un nivel superior, que es un portal, que el portal es una página, que pertece a un portal, y todo ello en el nombre de dominio www.congreso.es. Desde luego existen otras URL que el gestor de contenidos genera que son un jeroglífico. ¿Dónde están esas URLs de la forma: http://www.dominio.es/seccion, http://www.dominio.es/noticias/54, http://www.dominio.es/contenido/2007/05/01?
- Carencia de contenido sindicado. Está claro que proporcionar canales alternativos de comunicación facilitan el acceso a la información. ¿Y eso no tiene algo que ver con la accesibilidad?
- Carencia absoluta de definición semántica de abreviaciones y acróminos.
- Ausencia de textos alternativos, descripciones contextuales (title, lengdesc) y otros elementos que ayuden al acceso de la información.
- Uso indiscriminado de javascript a lo largo de todos los documentos.
- Mal funcionamiento de los sistemas de caché por el uso inline tanto de las hojas de estilo como del código javascript.
Habría otras muchas cuestiones que comentar pero no voy a dedicarle más tiempo. Otros compañeros también lo han comentado:
Me pregunto qué pasa con la Legislación Española sobre Accesibilidad para la Sociedad de la Información. En fin, algo no va bien.
Hay gente que cuando llega el viernes, por un motivo u otro, quiere destacar una canción. Otros un video. Pues bien, yo a partir de ahora voy destacar una demo. Para mi es una forma de seguir “unido” a la que ha sido mi mayor afición, la demoscene [1] [2].
En esta primera ocasión voy a destacar una demo de farbrausch, fr-056: gravity of the moon.
A diferencia de las canciones y los videos, las demos siempre es aconsejable ejecutarlas, porque uno de sus encantos está en comprobar lo que se puede llegar a hacer en tiempo real con las máquinas que tenemos entre nuestras manos. Sí es cierto que esto antes tenía un mayor encanto, al menos así lo veo yo. Yo disfrutaba más cuando en un 286 veía mover figuras en 3D y yo sólo pintaba en modo texto un “hola mundo”. Para los que no tengáis una buena aceleradora gráfica, tenéis disponible un video en youtube. Y los que podáis ejecutarla, el ejecutable.

En un post anterior os publicaba un simple shell script que he preparado para las copias de seguridad de mis proyectos en trac. Partiendo de ese mismo script, lo he modificado para realizar las copias de seguridad de los repositorios de subversion.
Dejo el script por si a alguien le puede resultar útil.
Hace algunos meses tuvimos que instalar Opina en un Sun Java System Application Server Enterprise Edition 8.1_02 corriendo sobre Solaris. Dado que no contábamos con un Solaris, hicimos las pruebas con la versión 8.2 de ese mismo producto corriendo sobre Microsoft Windows XP. La verdad es que no fui capaz de instalar la versión 8.1_02 (JES 2005Q4) por un tema de dominios que parecía necesario tener configurado. Supongo que solución tendría, pero no pude dedicarle mucho tiempo y decidí instalar una versión superior para ver si la instalación se había mejorado/simplificado. Y efectivamente, desde la versión 8.2 la instalación, al menos en Microsoft Windows, ha mejorado muchísimo. El caso es que cuando hicimos la puesta en producción surgieron un par de problemillas que nos hicieron tocar los archivos sun-web.xml y server.policy. Una vez resueltos estos detalles, la aplicación comenzó a usarse sin problemas.
Aprovechando que tenemos nuevas versiones, he instalado la nueva versión Sun Java System Application Server Platform Edition 9.0_01 (build b02-p01) en Microsoft Windows Vista. Sin entrar en cuestiones técnicas me gustaría destacar dos aspectos. Uno de ellos es insistir en lo sencillo y fácil que resulta la instalación en este sistema operativo, supongo que el resto será muy parecida. Y el otro es que este producto lleva con la misma interfaz gráfica desde hace años y ya va siendo hora de que la rediseñen y mejoren su usabilidad. Sucede lo mismo con otros productos de Sun. Evidentemente esto no es prioritario, sin embargo, creo que deberían tenerlo en cuenta. Desde aquí me ofrezco a diseñar una nueva propuesta para mejorar la interacción con la herramienta de administración. Esto quizás sería interesante para Glassfish.
Pues teniendo el software instalado, me gustaría poner en marcha una serie de pruebas. Por lado quiero probar el rendimiento. Me gustaría tener datos objetivos por si alguien que quiera instalar Opina en este servidor de aplicaciones los necesita. Es probable que diseñe algunas pruebas con JMeter. Y luego tengo interés por conocer en qué consiste esa opción de verifier que existe cuando se depliega una aplicación.

He preparado un pequeño shell script para realizar las copias de seguridad de mis proyectos en trac. El script cuenta con tres parámetros de configuración:
- BACKUP_DIR: Directorio donde se van a almacenar los tar.gz correspondientes a cada proyecto.
- TRAC_PROJECTS_DIR: Directorio donde se encuentran los proyectos de trac.
- TRAC_INSTALL_DIR: Directorio donde se encuentra instalado trac. En mi caso hice la instalación con la opción –prefix=/usr/local/trac y por ese motivo tengo un diretorio base donde están instalados todos los archivos correspondientes a trac.
El script genera un archivo de la siguiente forma: PROJECTNAME_YYMMDD_HHMM.tar.gz. Una vez probado el script desde la línea de comandos, he programado una tarea en el cron que ejecuta el script todos los días a las 00:00h. Si tenéis algún problema con el script en el cron, comprobad que las variables de entorno necesarias de PYTHON están disponibles. En mi caso, antes de invocar a trac-admin con la opción hotcopy, he tenido que definir la variable PYTHONPATH.
Dejo el script por si a alguien le puede resultar útil.
Estoy preparando material para un nuevo seminario sobre la herramienta Apache Maven. En ocasiones anteriores, los seminarios que sobre Maven he impartido duraban entre 90 y 120 minutos, sin embargo, en esta ocasión estoy preparando un seminario un poco más extenso que bien pudiera estar entre un seminario y un breve curso. Aun no está concretado pero el seminario durará 4 o 5 horas.
El temario que he preparado es el siguiente:
- Introducción
- Qué es Maven
- Qué nos proporciona
- Principales conceptos
- P.O.M. - Project Object Model
- Secciones
- Project Information
- P.O.M. Relationships
- Build Settings
- Build Environment
- Environment Information
- Maven Environment
- Ciclo de vida asociado al proceso de construcción
- Descripción del ciclo de vida
- Relación entre el ciclo de vida y los roles de un grupo de desarrollo
- Plugins
- El verdadero valor
- Qué son y para qué sirven
- Cómo se organizan
- Cómo se usan
- Profiles
- Qué son y para qué sirven
- Definición
- Configuración
- Archetypes
- Qué son y para qué sirven
- Creación de archetypes personalizados
- Definición y configuración
- Centralizar y organizar la información
- Sitios web para nuestros proyectos
- Personalización
- HelloMaven, una demostración
Para el seminario probablemente prepare unas nuevas transparencias que acompañaré de un documento en el que desarrollaré el temario propuesto. Para reflejar los conceptos teóricos y verlos en acción tengo preparada una demostración con una pequeña aplicación en la que se hace uso de Log4J, Struts e Hibernate. En la demostración veremos cómo definir perfiles para entornos de desarrollo locales, entornos de preproducción y producción, generación de los hbm.xml desde Maven haciendo uso de XDoclet, cómo desplegar automáticamente nuestra aplicación en un Apache Tomcat, construcción del struts-config.xml, etc…
Cualquier sugerencia será bienvenida.
Sí sí, habéis leído bien. Soy de las personas que puede decir que disfruta con su profesión. Me sientro realmente afortunado de haber podido elegir la profesión que desde muy pequeño me entusiasma y me proporciona tantas satisfacciones. Es cierto que si me quedase aquí no estaría siendo sincero, también hubo momentos difíciles y duros, y los que quedan por llegar, pero como decía alguien muy especial para mi: “mientras te siga compensado“.
De este gran momento profesional son muy culpables mis actuales compañeros de trabajo. GRACIAS.
Viernes 8 de junio justo después de un día festivo en la ciudad de Sevilla. No todos hicimos puente. Lunes próximo una importante presentación y muchas cosas por terminar de preparar y probar. Como de costumbre, nada sale a la primera y los problemas aparecen por todas la esquinas. Mi intención era tener todo listo para el viernes después de comer, nada más lejos de la realidad. Conforme pasaba el día veía que se me haría muy tarde. Efectivamente, no me equivoqué. Sin embargo algo lo hacía distinto a otras ocasiones, tuve todo el apoyo de dos de mis compañeros (el resto se había ido ya pero estoy seguro que también se hubieran quedado). Verdaderamente toda una gozada contar con su apoyo y valía profesional.
Nada mejor para no olvidar ese momento cuando todo estaba listo que una fotografía:

Con la intención de organizar un poco el material de los proyectos en lo que he intervenido como profesional independiente (libre, freelance, o como se quiera llamar) he continuado añadiendo algunas capturas de pantalla de los siguientes proyectos:
Iré añadiendo a la galería más capturas.
A comienzos de noviembre publicaba una breve entrada en la que se hablaba del uso de navegadores web en el sitio web de la Consejería de Obras Públicas y Transportes de la Junta de Andalucía. La intención de aquella entrada era simplemente mostrar algunas estadísticas sobre qué navegadores web empleaban los usuarios de este sitio web. Aprovechando que por esas fechas acababan de aparecer Firefox 2 e Internet Explorer 7 parecía interesante tener alguna referencia para posteriormente comprobar la evolución de estas nuevas versiones.
Siete meses después de aquella referencia, los datos actualizados a día de hoy son:
Estadísticas de uso de los navegadores web:
Estadísticas de uso de Firefox:
Estadísticas de uso de Internet Explorer:
Si observamos los datos podemos obtener algunas conclusiones. Por la lado, un aumento sustancial de las alternativas a Internet Explorer. Teniendo en cuenta que la mayoría de los accesos a ese sitio web se realizaban desde dentro de la red de la Junta de Andalucía (consejerías, delegaciones, etc) y que los puestos de trabajo en la administración (al menos en la Consejería de Obras Públicas y Transportes y en el resto de entitades públicas en las que he estado) se instala Microsoft Windows como sistema operativo e Internet Explorer como navegador web por defecto, el aumento de las alternativas es todo un logro.
Y por lo otro lado, me parece interesante resaltar el impacto que tienen las actualizaciones automáticas en este tipo de software. Sospecho que si no existiesen este tipo de funcionalidades -prácticamente transparentes para los usuarios- los datos que hubieramos obtenido serían muy distintos. El que las especificaciones de los estándares web (xhtml, html, css, DOM, etc) evolucionen es natural y deseado, que sus implementaciones lo hagan acorde a las especificaciones también, sin embargo, que los usuarios actualicen el software que usan, es una necesidad. La clave está en saber cómo hacerlo y lograr conseguir que esta evolución sea natural y lógica.
Las estadísticas se han obtenido del servicio Google Analytics.
En el wiki de Opina existe un apartado con algunas capturas de pantalla de la aplicación. Dicho apartado se ha actualizado con nuevas capturas haciendo uso del servicio online flickr .
En cuanto tenga unos minutos, añadiré algunas capturas más.