Accesibilidad: tomando conciencia

La accesibilidad es una de esas “cosas” que uno sabe que está ahí. En su día me leí la guía de accesibilidad del W3C, he leído libros y artículos sobre el tema; sé qué es y sé que hay que tenerla en cuenta. Y aún así, nunca me he ocupado de implementarla en ningún proyecto, posiblemente porque no he tenido la oportunidad de trabajar en uno para el que la accesibilidad fuese uno de los requisitos. Como he dicho antes, sabes que está ahí y ahí se queda.

Eso ha cambiado la semana pasada. En noviembre me llamaron para dar un curso de introducción a Mountain Lion (OS-X) para usuarios avanzados de Windows. El curso era especialmente motivador; por fin podría enseñar todo lo que he aprendido con mi Mac en estos casi dos años. Un par de semanas antes del curso me dieron la sorpresa: dos de los asistentes eran ciegos y otros dos tenían resto visual. A la preparación habitual previa a cualquier curso, añadí una nueva herramienta, VoiceOver, que es el anotador que OS-X e iOS incluyen de serie. Todo bien, aunque a medida que se acercaba el inicio del curso, me daba cuenta de que me estaba poniendo nervioso. Después de haber defendido la tesis doctoral ante un tribunal en inglés que no es mi lengua materna, ser ponente habitual y llevar trabajando 10 años formando a los demás uno se pregunta porqué.

Tras cinco días con personas que no tienen barreras (somos nosotros los que se las ponemos) tomas conciencia de lo que realmente significa la accesibilidad. He visto cómo se mueven y trabajan con el ordenador, cómo manejan el iPhone, cómo se usa una línea Braille, cómo VoiceOver les ayuda. He vivido las ganas que le ponen, lo mucho que les gusta su trabajo, incluso cómo alguno pasó en unos días del escepticismo absoluto a declarar que iba a valorar el comprarse un Mac. Les he escuchado decir cómo esta u otra aplicación no era accesible, lo que las hacía difíciles o imposibles de utilizar. Pero sobre todo, me han ayudado a averiguar porqué estaba nervioso antes de empezar el curso: porque nunca me había ocupado de ellos cuando he desarrollado mi trabajo.

Doy formación porque me gusta transmitir el conocimiento y la experiencia que tengo, sea mucho o poco. Siempre que doy un curso vuelvo con algo en la cartera, a veces más y a veces menos. Esta semana me traigo de vuelta mucho más de lo que me llevé. La moraleja de esta semana es que se puede conseguir mucho con muy poco.

Aun siendo consciente de que no siempre me va a ser posible hacerlo, tengo el firme propósito de ocuparme de la accesibilidad de las aplicaciones y proyectos que desarrolle en adelante.

Muchas gracias a los diez por estos cinco intensos y productivos días.

Hoy lanzo un nuevo proyecto: aprendegit.com

Hoy es un día especial, estoy contento. Noto esa sensación en el estómago mezcla de nerviosismo e incertidumbre que tienes cuando notas que la cosas cambian. Hace unas semanas decidimos de común acuerdo en el equipo dar un pequeño giro a nuestras vidas. Después de dos años bastante duros de coaching, reciclaje personal y profesional y de trabajo para sacar adelante el proyecto de Extremadura Social, abrimos nuevos caminos y proyectos en paralelo.

El proyecto que he preparado con la ayuda inestimable del resto del equipo es aprendegit.com. Aprende git es el lugar en el que voy a contribuir, con todo aquel que quiera hacerlo, a corregir una carencia fuerte de muchos de mis compañeros de profesión aquí en España: la falta de disciplina a la hora de utilizar un sistema de gestión de código fuente. Como indico en el blog del proyecto, muy pocas veces me he encontrado con profesionales que conozcan “de verdad” una herramienta tan fundamental para hacer bien nuestro trabajo como es git. Cuando digo de verdad no me refiero a hacer un commit, un merge y un pull, sino a utilizar la tecnología para trabajar en equipo y mejorar el rendimiento del grupo de desarrollo.

Un poco de retrospectiva

Este proyecto se empezó a gestar en junio, cuando volví de la WWDC de Apple. La inyección de moral y de ganas de hacer cosas que recibí en San Francisco mereció la inversión. Durante el mes de agosto, tiempo en el que pude descansar y reorganizar mi cabeza y prioridades, el cuerpo me empezó a pedir cambios, notaba que necesitaba empezar algo nuevo y diferente. Entonces vi en inforlancer.com un anuncio en el que buscaban un profesor para dar un seminario de git… y ahí empezó todo.

Contacté con la escuela, Reforest School (una pena que ya no estén aunque tengo la suerte de seguir en contacto con sus fundadores) y dimos el primer seminario. De este seminario de 5 horas surgió un curso de 8 horas que dimos en octubre, y a raiz de los comentarios y conversaciones con todos los asistentes decidí en noviembre sacar el proyecto.

Cuando alguien me dice que tiene una idea y es reticente a hablar de ella, no sabe lo que se está perdiendo. Compartir y escuchar lo que los demás tengan que decir sobre lo que haces es lo que más te va a ayudar a sacar adelante el proyecto. Recuerda, la idea es sólo una parte, lo más importante es cómo se ejecuta.

La tecnología

Una prueba de fuego a la que me he enfrentado a nivel personal ha sido a la tecnología. He notado un cambio radical en cómo afrontaba un proyecto hace dos años y ahora. Estos dos años de formación y desarrollo personal han dado sus frutos y hemos aprovechado al máximo la tecnología existente para resolver los problemas y alcanzar la solución óptima con el menor coste y desgaste posible. Si me dices en 2010 que iba a acabar montando un proyecto como este en wordpress me habría entrado la risa. Esta fase y la de “Windows debería desaparecer del planeta” ya las he superado.

Confío en que aprendegit.com os guste y os sea de utilidad.

macports y XCode 4.3

Tras la actualización de XCode a la versión 4.3, es necesario hacer algunas modificaciones al sistema macports para que vuelva a funcionar. Aquí tenéis los pasos que he seguido yo:

  • Actualizar a XCode 4.3 desinstalando la versión anterior (en mi caso 4.2)
  • Una vez instalado, acceder a Xcode->preferencias->descargas e instalar las “Command Line Tools”
  • Actualizar macports a la versión 2.0.4
    sudo port selfupdate
  • Cambiar la ruta a la carpeta XCode con el siguiente comando
    sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

Una vez hecho esto, los paquetes empezaron a compilarse de nuevo con algunas excepciones que resolví de la siguiente manera:

  • Siempre que encuentres algún problema, lo primero es limpiar el paquete para volver a recompilarlo y reconfigurarlo:
    sudo port clean [paquete]
    sudo port upgrade [paquete]
  • apr-util: al compilarlo, buscaba la ruta al compilador clang en la antigua carpeta /Developer. Encontré la solución en este foro.El paquete apr, del que depende apr-util, guarda la ruta al compilador y es necesario recompilarlo
    sudo port upgrade --force apr
  • UPDATE: 22-03-2011 subversion-perlbindings: ocurría lo mismo que con apr, buscaba el compilador en /Developer. Se soluciona recompilando el paquete perl5.12
    sudo port upgrade --force perl5.12
  • memcached (versión 1.4.10_0): no compila bien con clang, es necesario utilizar otro compilador siguiendo estas instrucciones:
    sudo port upgrade memcached configure.compiler=llvm-gcc-4.

Actualizar / desinstalar XCode

Hoy estaba teniendo problemas para actualizar a la versión 4.2 de Xcode, actualización imprescindible para trastear con iOS 5. Los síntomas del problema eran los siguientes:

  • Abrir App Store
  • Actualizar Xcode
  • Cerrar App Store
  • Ejecutar Xcode, que seguía en la versión 4.1.1
  • Abrir App Store
  • Xcode me decía que seguía sin actualizar y volvía a bajase los casi 2 Gigas de la actualización.

Erróneamente pensé que algo no iba bien con mi instalación y probé a desinstalar Xcode (como si esto fuese windows ;-) ). Para ello ejecuté el siguiente comando desde la shell del Mac:

# sudo /Developer/Library/uninstall-devtools –mode=all

consejo que encontré en el blog de Pushkar Singh Arora. Tras esto, todo seguía igual, me bajaba la actualización del App Store pero no pasaba nada más.

La solución, como era de esperar, es mucho más sencilla que todo esto. La actualización de Xcode en el App Store en realidad actualiza el instalador. Por lo tanto, una vez finalizada la descarga hay que ejecutar la aplicación de instalación de Xcode.

Espero que os resulte útil para que no cometáis este error de “novato”.

De vuelta

Llevo alrededor de 6 meses desaparecido. El motivo: tenía que afrontar un cambio profundo en mí. En aquel entonces no lo sabía, sentía que algo no iba bien pero no tenía ni idea de qué era.

¿Y cómo me sentía? Es difícil de explicar. Trabajaba unas 14 horas al día y, aunque era cierto que estaba entrando cierto dinero en la caja (logré reducir mis deudas en un 60% en un año) yo seguía con poco tiempo libre y poco dinero. El concepto de fin de semana no existía en mi mente. No me sentía dueño de mi vida, de mi tiempo… estaba sometido a un fuerte estrés y por algún motivo los proyectos no salían bien. En las webs sencillas que en ese entonces estaba llevando, se cumplía con los clientes y estos estaban contentos, sí, pero a costa de mi vida personal y un número de horas de trabajo desproporcionadas. Sin embargo, en los pocos proyectos que tenían cierta envergadura las cosas no salían bien, no las estaba haciendo bien. Con respecto a mi vida personal… me sentía lejos de mis amigos y más aún de mi familia, lo cual es normal cuando no levantas el teléfono para llamar ni a unos ni a otros. En general, no me encontraba a gusto conmigo mismo y encima había cogido unos cuantos kilos que no ayudaban mucho a mi autoestima.

Llegados a ese punto, tomé una decisión: averiguar qué es lo que me estaba pasando. Decidí entonces cerrar todo y someterme a un proceso intensivo de entrenamiento. Cerré la empresa y, siguiendo el ritual, le pedí formalmente a mi entrenador que me entrenase pocos días después del Symfony Live 2011 en París. La decisión me costó tomarla, era tirarse a una piscina con los ojos vendados sin saber si había agua dentro. Tenía miedo, como era lógico, pero sentía que tenía que hacer algo. Así que me tiré de cabeza. Es cierto que me ayudaron a llegar al borde de la piscina pero no me empujaron, tuve que saltar yo. ¿Sabéis qué? Esa fue la primera decisión que tomé yo en mucho tiempo, pero “yo” de verdad, no mis clientes, ni mi empresa, ni mis proyectos ni mis fantasmas.

¿El resultado? Una persona distinta. He pasado de ciego a ignorante y, lo más importante, he averiguado qué me pasaba y porqué me había pasado. El qué me pasaba era muy sencillo pero a la vez muy difícil de asumir: había fracasado. Yo era un fracaso y no lo quería aceptar.  El porqué es otra conversación que otro día retomaré.

Ayer cerré la póliza de crédito de la empresa. El último paso y el más duro. Ha supuesto reconocer que he malgastado mi dinero y el de aquellos que me aprecian y me quieren y que creyeron en mí. Sin embargo, cuando firmé el papel en la sucursal y me dijeron “pues ya está, todo cerrado” me sentí libre… empiezo de nuevo pero con una gran ventaja: ahora sé lo que quiero (antes pensaba que lo sabía)  y, lo más importante, sé cómo conseguirlo.

 

Sí, me he comprado un Mac

Después de muchos (12) años usando máquinas Linux en mis tareas diarias, me he comprado un Mac. Me podéis llamar traidor y vendido, pero ¿sabéis qué? estoy feliz, y cuanto más trabajo con ella más me gusta.

Symfony meetup Madrid

El próximo día 26 de marzo tendrá lugar la primera reunión del grupo de desarrolladores de symfony en Madrid. El evento está organizado por Ceronet Telemática y será dirigido por un servidor. Lo que inicialmente se estaba organizando como una “quedada” informal de programadores, se ha convertido en una reunión con más de 25 personas inscritas y alcance nacional, con representación, entre otras, de las comunidades autónomas de Valencia, Cataluña, Andalucía y las Islas Canarias.

Symfony Meetup Madrid

Para este evento contamos con la colaboración de Professional Trainning Madrid, que ha cedido sus instalaciones en Nuevos Ministerios. Contaremos con varias aulas, proyector y conexión a internet para organizar los grupos de trabajo durante el meetup. Está situado en la calle Orense 10, en la primera planta, y es accesible por tren de cercanías, metro (líneas 6, 8 y 10) y autobus. Contaremos también con la colaboración de Pablo Díez, desarrollador principal de MondonGo, que nos dará una charla sobre MongoDB y Symfony que recomiendo no os perdáis.

El objetivo de este meetup es muy sencillo: intercambiar conocimiento y experiencia en symfony.

¿Cómo vamos a conseguirlo? Con grupos de trabajo. Tras 6 años impartiendo formación a profesionales, la experiencia me ha demostrado que aquello que mejor se aprende es lo que uno hace por sí mismo. Además, creo en la programación por parejas como herramienta para mejorar  y la calidad del código y la comunicación entre los miembros de un equipo de desarrollo. Por lo tanto, durante el meetup “haremos cosas” en grupo tales como instalar symfony/symfony2, buscar una solución a algún problema concreto que alguno de los asistentes pueda tener o ayudar a escribir documentación. Podéis verlo como un “pair programming a la española”. Si 25 programadores se reúnen para cada uno aportar lo que sabe, es imposible que terminemos el meetup sin haber aprendido algo nuevo.

¿Qué hace falta traer? Dos cosas:

  • Tu portátil.
  • Ganas de compartir tu conocimiento y experiencia con los demás.

¿Hace falta saber symfony? No, este evento está abierto a cualquiera, sepa o no symfony.

¿Qué vamos a hacer?

  • 10:00 – 10:10 Introducción y agradecimiento a los patrocinadores del meetup.
  • 10:10 – 11:10 Mandango al descubierto
    por Pablo Díez, Desarrollador principal del proyecto.

    MongoDB es una base de datos extremadamente rápida y uno de los mejores reemplazos NOSQL a las bases de datos relacionales. Veremos una introducción a MongoDB, la ventajas de trabajar con objetos con un ODM (Object Document Mapper), y por qué Mandango es a los ODM lo que MongoDB a las bases de datos. Descubriremos el por qué del cambio de nombre de Mondongo a Mandango, así como la killer feature que incluye, ya que aparte del cambio es una gran evolución. Y por supuesto veremos cómo usarlo en Symfony.
  • 11:10 – 11:30 Elaboración de los grupos de trabajo
  • 11:30 – 15:00 ¡a programar!
  • Comida

Los grupos de trabajo son abiertos, contando con las siguientes propuestas hasta el momento.

  • Primeros pasos con Symfony2.
  • Symfony2 y MongoDB con Pablo Díez.
  • Jobeet en Symfony2 con Albert Jessurum.

¿Cómo puedo colaborar? Es muy sencillo: participando activamente en los grupos de trabajo que se organizarán.

Si tenéis alguna duda con respecto al evento, al lugar, transporte o alojamiento en Madrid podéis contactar conmigo a través de mi cuenta de twitter @aalbagarcia. Para seguir los anuncios y cambios que se puedan producir a lo largo de lo que resta de semana, debéis seguir a @symfony_madrid, registraros en la lista de distribución y daros de alta en la página del grupo.

¡Nos vemos en unos días!

ACTUALIZACIÓN (22-03-2011 18:05): se ha modificado el programa de la jornada incluyendo el resumen de la charla de Pablo Díez y la hora de cierre de la misma.

Estado de Symfony2

La pregunta estrella del Symfony Live 2011 fue ¿cuándo estará Symfony2? La respuesta ha sido muy simple: bastaba mirar la nueva web de symfony, www.symfony.com, concretamente en la página de descarga de las distribuciones, para leer “Estará disponible mañana”. El mensaje fue muy claro: se está trabajando en un framework que será la base de todo lo que se construya en los próximos 5 años así que estará cuando esté (más o menos como hace la comunidad Debian con sus distribuciones)

El framework está más estable, sobre todo la parte del core, pero todavía no está terminado. Aún así, es significativo que en las tres semanas previas al congreso se contabilizasen 200 pull requests, frente a los 300 que se realizaron en todo el período anterior. El trabajo realizado por la comunidad de desarrolladores supuso una mención especial en la charla de cierro de Fabian.

También es significativo que ya existan 170 bundles teniendo en cuenta que el framework no está estabilizado.

¿Te estás planteando usar Symfony2 en tu próximo proyecto? si dispones del tiempo y la capacidad de mantener tu aplicación sincronizada con los cambios en la rama del repositorio git, úsalo. Si no vas a poder ir adaptándote a los cambios, utiliza symfony 1.4.

Si optas por Symfony2, puedes utilizar una versión determinada del repositorio y mantenerte con ella hasta que la actualización te aporte nueva funcionalidad o el framework esté más estable. También puedes decidir no utilizar las partes más inestables (como los formularios) y sacar provecho únicamente de las componente y bundles más maduros y estables.

Symfony Live 2011

Finalizado el pasado 5 de marzo el Symfony Live 2011, sólo se me ocurre una palabra para describir el evento: espectacular. Los números hablan por sí solos:

  • más de 500 participantes
  • 31 ponencias oficiales en las dos salas de la conferencia
  • 15 presentaciones o mini-charlas en la unconference (sección no oficial de la conferencia) organizada por Stefan Koopmanschap
  • en torno a 40 asistentes al hackingday
  • ponentes de varios países (Pablo Diaz  y Álvaro Videla fueron la representación hispano-parlante)
  • 8 grupos de entre 10 y 12 personas asistieron a la sesión de training

Si a todo esto le sumamos una organización impecable, un entorno extraordinario y una compañía excepcional, el resultado han sido cuatro días intensos y tremendamente productivos.

El training

Tuvo lugar el primer día de la conferencia y consistió en una versión reducida del curso oficial de Sensio. Puedo decir que a los que habiendo trasteado muy poquito con Symfony2, el curso  nos ayudó a fijar los conceptos  que llevábamos tras una lectura previa de la documentación. Durante el curso se habló de espacios de nombres, se creó un bundle, creamos un formulario y accedimos a base de datos usando Doctrine2; se configuraron las rutas y se usó constantemente el FrameworkExtraBundle. La primera conclusión a la que llegamos durante el curso es que las anotaciones de PHP nos van a simplificar mucho el trabajo. Sin embargo, hay que tener cuidado ya que pueden convertirse en un problema si se abusa de ellas: la configuración se reparte entre varios ficheros y eso dificulta el mantenimiento de la aplicación cuando esta crece.

Mi valoración del curso es buena y personalmente la inversión en tiempo ha merecido la pena. Sin embargo, si ya habías trabajado con el framework, leído la documentación y seguido los tutoriales en detalle,  el temario se te quedaba quizás un poco corto.

Las ponencias

Tanto Christian como Tom Boutell estuvieron actualizando su blog “en vivo” mientras tenían lugar las ponencias:

De todas a las que asistí, destacaría lo siguiente:

  • Muchas de las ponencias no versaban sobre Symfony2, sino sobre librerías y bundles que se estaban desarrollando (RabbitMQ, doctrator, Assetic), casos de éxito o de contenido más generalista. Esto demuestra que a pesar de que Symfony2 no es todavía estable, se pueden desarrollar bundles estables y que están siendo utilizados en varios proyectos.
  • La presentación de Alvaro Videla sobre RabbitMQ me resultó especialmente útil ya que es de aplicación inmediata en uno de nuestros proyectos; nos va a permitir resolver un problema de comunicación entre aplicaciones sin necesidad de implementar costosos servicios Web.
  • La presentación sobre formularios de Bernhard Schussek en la que nos informó de los últimos cambios realizados al incluir el DIC en los formularios.
  • La charla de cierre, que fue todo un ejercicio de agradecimiento a la comunidad symfony con mención especial a las personas más involucradas (entre ellas nuestro querido Javier Eguiluz).

Puedes encontrar los enlaces a las diapositivas aquí o en symfony.es.

Conclusiones

  • Symfony2 dispone de una comunidad de usuarios muy activa. madrua e involucrada con el desarrollo del framework.
  • Nos acercamos a la primera versión del framework. Sin embargo, todavía será necesario esperar unos meses para tener la versión definitiva y la documentación completa.
  • Vi muy poca representación española y latinoamericana, apenas encontré una decena de españoles en la conferencia. Entiendo que, dada la distancia, la presencia de profesionales de América Central y del Sur haya sido baja. Pero la falta de representación española me ha desilusionado. Es necesario mejorar nuestra participación e involucrarnos más en el desarrollo del framework.
  • La experiencia a nivel personal sólo la puedo describir como espectacular. El estar allí rodeado de personas con un altísimo nivel técnico ha sido especialmente motivador. Tengo que reconocer que no soy el mismo después de esta conferencia, me ha cambiado las prioridades de lo que quiero hacer y quiero conseguir en los próximos meses… ¡ya estoy deseando que llegue la conferencia del año que viene!