Wednesday, December 24, 2014

Retrospectiva PiWeek (VII) (Mi segunda PiWeek)


Este viernes pasado termino la PiWeek VII edición, así que aunque con un poco de retraso, escribo este post con mis sensaciones y mis conclusiones de esta edición.
Para mi esta es mi segunda PiWeek y por supuesto no va ha ser la última :-)

En lo particular trabaje un poco con Javascript y con librerías para mostrar gráficas en tiempo real. En ese sentido he comenzado a enterarme de como se desarrolla en frontend. Sobre todo, me he pegado con la ejecución de varias librerías y comienzo a encajar algunas piezas. Sigo estando muy pez, pero siento que estoy en el buen camino :-)

Todo el código que se genero está en:


Y las librerías principales que hemos usando han sido:

En este caso, juntamos la idea que traíamos Ruben Eguiluz y yo, con el proyecto que proponía Enrique Paredes (iknite), y finalmente se nos unio David Villa (aunque solo pudo estar alguno de los días). 

El resultado ha sido un spike para gráficas 3D y 2D en tiempo real. Seguramente lo aprendido en este proyecto acabe en alguno de los productos de Alea Soluciones. 
Enrique que era el más interesado en las gráficas en 3D quería conseguir un campo de juegos y experimentación y creo que lo ha conseguido, por lo que a partir de ahí y de los aprendizajes obtenidos, seguro que nos sorprende con algún desarrollo potente relacionado. 

Retrospectiva de mi participación

Drop / Cosas a abandonar

  • Mi obsesión por cerrar cosas hace que para el miércoles comience a cerrar temas para la presentación y bajo el rendimiento para el resto de la piweek
  • Dedicar más tiempo a la gestión/organización del proyecto
  • Volver a mi zona de confort en cuanto me encuentro con algún problema que no se resolver (en mi caso dedicar esfuerzo a la parte de servidor en cuanto se me atascaba el frontend)
  • Proyectos demasiado relacionados con lo que hago habitualmente en Alea Soluciones (no por nada, solo por cambiar el chip)

Add / Cosas a añadir / mejorar

  • Preparar herramientas de teletrabajo (entre Ruben y yo, se notaba que teniamos las herramientas muy trabajadas, pero para el resto de casos no prepare las herramientas suficientemente bien)
  • Me quede con las ganas de hacer más pairprogramming incluso con miembros de otros equipos y con otros lenguajes
  • Forzar trabajar el 100% del tiempo en frontend (o en la parte que quiera mejorar)

Keep / Cosas a mantener

  • Trabajar con gente de otras empresas y skills
  • Salir de la zona de confort
  • Trabajar físicamente fuera de mi oficina
  • Pairprogramming

Retrospectiva (desde mi optica) de la PiWeek Vii

Drop / Cosas a abandonar

  • No se me ocurre nada :-) (y no es peloteo)

Add / Cosas a añadir / mejorar

  • Adelantar la publicación de la hoja de calculo de proyectos para la gente de fuera de Kaleidos
  • Estamos tocando techo en cuanto a gente que podemos ir a invadir a kaleidos

Keep / Cosas a mantener

  • Ambiente PiWeek
  • Proyectazos
  • Tecnologias variopintas (soft, hard)

Agradecimientos

  • Gracias a Kaleidos por la idea de la PiWeek y por ser tan buenos anfitriones
  • Gracias a https://taiga.io/ por la comida del jueves, me encanto que fuese tan variada

Resumen de la PiWeek VII como observador

En esta edición me he quedado muy gratamente sorprendido con los proyectos presentados. En la edición anterior también me impactaron mucho pero la calidad de los proyectos en esta edición creo que ha sido superior.
En concreto me han impresionado los siguientes proyectos y temas:
  • La calidad de los frontends realizados con clojurescript/om (Ghoul Reader/Sloth land).  En un vistazo rápido del código, parece que es bastante fácil de leer y el interfaz de usuario generado responde muy bien y muy rápido.
  • El juego (kam-fu) realizado enteramente en HTML5 indica que definitivamente ya tenemos disponible una tecnología web solida y nos podemos olvidar de los malos tiempos del IE6.
  • Los proyectos con hardware también han sido impresionantes.
  • Varios de los proyectos creo que pueden ser monetizables:
    • Sloth Land
    • Boocss
    • Dungeons & Projects
    • Wild Dex
    • Weather oracle



Nos vemos en la siguiente edición y seguro que no voy solo!!!!

Thursday, December 18, 2014

PiWeek VII Dia 2/3 / Esto tiene forma



Bueno, parece que el proyecto vectorscope-io va cogiendo forma. Personalmente, poco a poco, voy aprendiendo algunos conceptos de javascript. De momento lo que tenemos es funcional y aunque sucio, nos vale como prueba de concepto de gráficas en tiempo real.

Igual que en la anterior PiWeek noto que aprendo a buena velocidad y que además tengo esa ilusión por jugar y disfrutar programando que no siempre puedes notar en el día a día.

Aunque para mi, nuestro proyecto sea una pasada (más que por el proyecto, por permitirme empezar desde cero en algo que no había hecho nunca), tengo que decir, que los proyectos que se ven estos días por las oficinas de kaleidos son impresionantes... (Juegos interactivos con html5 y la webcam, drones controlados desde un dispositivo "wereable", lector de rss usando las últimas tecnologías de html5, proyectos en clojure/clojure script, etc... todo MUY espectacular).

Supongo que hacer software de sistemas e infraestructura hace que no sepamos/podamos hacer alicaciones sexis


Ahora a seguir en la recta final... A ver si conseguimos integrar gráficas 3D en vectorscope-io y pulir el formato de las de 2D...

Tuesday, December 16, 2014

Podcasts/Talks 2014 20 Nov - 16 Dic


Lot of time past since the last post about podcast/talks, but better late than never :-)

Would be nice to have feedback/comments about the talks... It's allways rewarding to share out opinions and learnings. Anyone interested?

Primer dia de PiWeek VII Dia 0/1



Una vez más me he apuntado a la PiWeek, además en esta ocasión de Alea Soluciones también se ha venido Rubén (uno de los nuevos fichajes del equipo Bifer de Alea Soluciones).

Mi idea es, siempre que el presupuesto de formación me lo permita, me apuntaré a todas las ediciones  de PiWeek, puesto que una forma de aprender/experimentar que me está funcionando.

En esta ocasión pretendemos aprender a realizar gráficas en tiempo real renderizando en el frontend. En mi caso, quiero centrarme en aprender todo lo que pueda sobre frontend (HTML5, CSS3, js).
Esto lo incluyo dentro de mi objetivo de mejorar esa parte en los siguientes meses, para lo que además de la PiWeek, voy a intentar hacer algún proyecto mentorizado.

La suerte ha hecho que lo que teníamos pensado Rubén y yo encajase perfectamente con otro proyecto de renderización de gráficas para monitorización en 3d presentado por Enrique Paredes (@iknite) . Así que se ha decido juntar los dos proyectos. Además, parece que el proyecto le ha parecido interesante a David Villa  así que se ha apuntado.

De momento el primer se ha hecho un poco duro en mi caso, puesto que se ha mezclado el estar totalmente fuera de la zona de confort con temas logísticos que me han impedido llevar un horario muy normal....

Pero bueno, esto no es como empieza, es como acaba, así que seguiremos informado....

Wednesday, November 19, 2014

Podcasts/Talks 2014 30 Oct - 19 Nov

This time I have a good list of interesting talks:-)
  • Polyglot Data (Greg Young) Good tips related to persistence, entities, events... Good explanation about the information lost when we only store the actual state of an entitiy instead the stream of events of the entity. There is no "best" database, only "best database for" some use cases. The benefits of separate bounded contexts and decide wich databases are the bests for this bounded context... Separation of reads from writes (CQRS). Lot of good stuff.
  • Virtual Machines, JavaScript and Assembler (Scott_Hanselman) Very fun talk. Also gives an interesting overview of current technology (cloud, web, etc.).
  • Our Responsibility to Defeat Mass Surveillance (Erik Dörnenburg and Martin Fowler) Inspirational talk about some of our responsibilities as developers.
  • Embracing Uncertainty (Dan North) Very interesting talk to be aware of our aversion to uncertainty. We usualy make bad decisions in order to avoid the feeling of uncertainty.
  • Are We There Yet? (Rich Hickey) Talk about the functional programming using immutable data structures and the benefits if this programming for systems requiring high concurrency.
  • Consistency without consensus in production systems (Peter Bourgon) Very practical talk, about real systems using eventual consistency and a good/practical explanation about  CRDT data types.

Wednesday, November 12, 2014

Presentación Python Herencia vs Composición (Luke soy tu padre) PyConES 2014

Estas son las diapositivas de la charla corta que di en la PyConES 2014 (Zaragoza) sobre Herencia vs Composición en Python:

Por si alguien se pregunta por qué no hice referencia al Liskov substitution principle  o por qué no di más ejemplos, tengo que decir que la charla duraba 10 minutos y la di a toda velocidad... Tanto que no se ni si me hice entender :-)

Cualquier feedback sobre el contenido de la charla o la forma de transmitir será muy bienvenida...

Articulos relacionados:

Friday, November 07, 2014

Taller Diseño modular dirigido por pruebas


Preparado por: Nestor SalcedaAlberto Perez (Apa)Jaime Gilyo mismo (eferro)
Basado en el taller creado por  Javier AceroGuillermo Pascual

Aprenderemos a crear una aplicación en la que el negocio sea el centro y que la arquitectura emerja del propio proceso de creación (por supuesto usando TDD).

Enunciado:

Vamos a desarrollar el equivalente Maño de twitter, llamado "Cós". Podéis ver el enunciado completo en: https://github.com/aleasoluciones/pycones2014

Restricciones

  • Haz lo más simple que pueda funcionar
  • Escribe el mejor código que puedas
  • No hagas más de lo que pide la funcionalidad
  • No introduzcas infraestructura si la funcionalidad no lo pide explícitamente
  • No dependas de librerías si la funcionalidad no lo pide explícitamente

Flujo

  • Evalúa el impacto de cada funcionalidad
  • Realiza los cambios que necesites para que la funcionalidad sea fácil de introducir
  • Introduce la funcionalidad

Forma de trabajo:

  • Trabajaremos en parejas, cada pareja con un portátil
  • Estaremos para ayudar/responder dudas cuatro personas
  • Haremos iteraciones

Requisitos:

  • Portátil python 2.7/3.x virtualenv pip
  • Conexión internet
Si quieres preparar el virtualenv usaremos las siguientes librerías:
  • expects
  • mamba
  • doublex (Puede no ser necesario)
  • librería http (Tornado, Flask, etc.)
  • librería para persistencia (Pickle, durus, redis, sqlite, mysql, etc.)

Ejemplos de soluciones:

(Si puedes no verlas hasta después, mejor)


Sabado 8 a las 16:00, Sala4




Friday, October 31, 2014

Verbos vs Nombres



Flujo análisis (continuo) en un proyecto
  • Centrar conversaciones en identificar comportamientos (behaviours). Intentamos identificar acciones, verbos, flujos, eventos. Viene fenomenal para OOP centrado en casos de uso o para un enfoque DDD y flujos de negocio complicados.
  • Centrar conversaciones en identificar comportamientos concurrentes en el sistema. Nos obliga a identificar relaciones entre esos comportamientos y nos ayuda a hacer un diseño escalable y fácilmente implementable mediante servicios independientes que encapsulan estado y que se comunican mediante mensajes (perfecto para implementaciones con Actores, Pipelines, microservicios, etc.)
Como se puede ver estos dos enfoques se centran en las interacciones de los usuarios con nuestro sistema o las acciones del propio sistema (Verbos) y  no tanto en las entidades con las que trabaja (Nombres)
Sin embargo el análisis más típico que se suele hacer en OOP (mal entendida por supuesto) se centra en identificar primero las entidades, perdiendo el contexto de las interacciones (mensajes, flujo, reglas, etc...)  derivando, no necesariamente, pero si típicamente, en modelos anémicos y pobres.

Conclusión:

Valoramos la identificación de las entidades (Nombres) con las que trabaja nuestro sistema, pero valoramos mucho más la identificación de los comportamientos (Verbos) que definen cómo interactuamos con nuestro sistema y qué tareas facilita.

Recordemos que los clientes NO quieren software/sistemas, quieren facilitar sus tareas o resolver sus problemas.

Nota adicional:

Este análisis de negocio se puede hacer a distintos niveles en el sistema, por lo que este enfoque de centrarnos en los verbos, nos puede servir para identificar servicios de nuestro sistema o eventos de negocio, o en un nivel mucho más cercano a una aplicación concreta para poder identificar los hilos de ejecución concurrentes o orientar el diseño hacia un sistema más reactivo.

Podcasts/Talks 2014 24-30 Oct

These are the most interesting talks I saw these last days:
  • Life is easy. Why do we make it so hard? Jon Jandai at TEDxDoiSuthep Inspirational talk
  • RubyRogues 178 Refactoring Ruby with Martin Fowler Quite entertaining episode with some interesting explanations/points about refactoring/reestructuring and the perverted use of the "refactoring" term.
  • The art of destroying software Greg Young Some good points about the easy evolution of a system when the services are small enough to be understandables and to be rewritten without fear. 
  • Crafted Design Sandro Mancuso Very interesting talk about architecture, general desing of an application. Very aligned with the DDD movement and the classic OOP architectures without framework coupling.
  • The Next Decade of Agile Software Development J. B. Rainsberger  Reflexive talk about the agile message, the (real) impact, the misunderstanding of the message and our attitudes and practices. An opportunity to reflect.

Saturday, October 25, 2014

TDD/BDD práctico para aplicaciones con dominio rico / scbcn14



Este domingo en la Barcelona Software Craftmanship 2014, Nestor y yo (@eferro) llevamos una sesión en la que queriamos obtener feedback sobre el flujo de trabajo con TDD que estamos haciendo en Alea Soluciones.
La sesión es una evolución de la que presentamos en la AOS de Valladolid (de tests unitarios de clases a tests untarios de funcionalidad) y las slides de la presentación que usamos están en:
Por supuesto las slides sin contexto son un poco densas y no aportan mucho, pero se grabo la sesión por lo que en cuanto tenga el enlace actualizaré el post.

Creo que a la gente les aporto algunas cosillas y lo mejor fue que obtuvimos un feedback muy bueno y se genero un debate que nos ha enriquecido muchísimo...

Muchas gracias a todos los que participasteis, ni os imagináis lo valioso que es el feedback Gracias.

Referencias:

Friday, October 24, 2014

Podcasts/Talks 2014 16-24 Oct

These are the most interesting talks I saw these last days:
  • Towards an Evolutionary Architecture Venkat Subramaniam. Good advise about how to delay decision and maintain the options open. Don't resolve problems that you don't have and of course make decision based on knowledge.
  • CQRS/DDD Greg Young. Very interesting talk about CQRS and Event Source with a very good introduction about Bounded Contexts, Ubiquitous Language and DDD economics.

Saturday, October 18, 2014

Software Craftsmanship Barcelona 2014 / Charla TDD/BDD práctico para aplicaciones con dominio rico


Este fin de semana que viene (25 y 26 Octubre) tengo el placer de poder ir al Software Craftsmanship Barcelona 2014 para poder compartir mi pasión por el desarrollo del software con otros profesionales del gremio.

El evento está creado por y para profesionales que comparten los valores y principios de la artesanía del software por lo que el ambiente de aprendizaje creo que va a ser inmejorable.

Nestor Salceda, Guillermo Pascual y yo (eferro) aportaremos nuestro granito de arena presentando la charla TDD/BDD práctico para aplicaciones con dominio rico.

En la charla mostraremos el flujo de desarrollo que usamos (TDD/BDD) y la evolución que hemos tenido desde un TDD mockists a un TDD más clásico y orientado a la funcionalidad.
Vamos a intentar que la presentación no dure más de media hora para que nos de tiempo a discutir esta forma de trabajar con el resto de artesanos.

Esta presentación es una evolución de la presentación que realizamos en el AOS 2014 de Valladolid.

Nos vemos en el Software Craftsmanship Barcelona.

Wednesday, October 15, 2014

Podcasts/Talks 2014 1-15 Oct


The interesting talks I've seen are:

Until the past week I don't know Fred George ideas about software development and his talks have impressed me a lot (although I have ethical restrictions on some of the business that he describe). So I decide to see all the presentations I could find.

All the presentations have some interesting tips and ideas...

Sunday, October 12, 2014

Book Review: The Lean Mindset. Ask the Right Questions



Great book that explains using real examples, the lean thinking applied to product development, software mainly, but not only.

It has substantially changed my way of dealing with software projects. It has helped me to focus more on the objectives / intrinsic problems to solve, relegating the normal flow of creating software continuously without really asking myself "why".

I recommend this book to anyone in product development (not only software), especially to all  passionate developers that sometimes forget "why" we develop software.
“What’s next is to stop thinking about software development as a delivery process and to start thinking of it as a problem-solving process, a creative process.”

And remember:
“There is nothing quite so useless as doing with great efficiency something that should not be done at all.”

Passionate developer, Read it now!!!

https://www.goodreads.com/review/edit/18635263
http://www.amazon.com/The-Lean-Mindset-Right-Questions/dp/0321896904

Thanks @pasku1 for the recommendation...

Wednesday, October 08, 2014

Taller y charlas seleccionadas para la PyConES 2014 Zaragoza



Ya se han seleccionado las charlas para la PyConES 2014 (Zaragoza). De las que habíamos presentado, finalmente han seleccionado las siguientes:


Podéis ver la descripción de todas las charlas en http://2014.es.pycon.org/talks

Para el caso del taller, el objetivo es poder crear una aplicación en la que el negocio sea el centro y que la arquitectura emerja del propio proceso de creación. Se trabajara en parejas y usaremos TDD para la creación. Por supuesto se requiere que los asistentes se lleven un portátil con un python + virtualenv instalado.


Nos vemos en Zaragoza !!!!



Tuesday, September 30, 2014

Podcasts/Talks 2014 22-28Sept


The interesting talks I've seen this past week are:



Sunday, September 28, 2014

Equipo desarrollo Alea Soluciones haciendo camino...



Parece que en el equipo de desarrollo de Alea Soluciones estamos en época de cambios... Esta semana pasada nos despedimos (o por lo menos de forma temporal) de nuestro compañero Guillermo que se va de nómada digital...
Al mismo tiempo comenzamos la búsqueda de un nuevo compañero de viaje...
El mensaje de "búsqueda" creo que explicita bastante bien nuestra misión y nuestros valores como equipo, por lo que lo pongo por aquí por si algún despistado todavía no lo ha visto :-)

Cualquier interesado, que contacte conmigo o con cualquier otro miembro del equipo y que no se corte en hacer preguntas...

Lo divertido no es el destino, lo divertido es el camino. Seguimos, viento en popa en nuestro plan de dominación mundial.



Actualización (1/10/2014):

Estamos que lo tiramos y además del puesto de desarrollador, también hemos comenzado la búsqueda de un perfil con un poco más de peso en la parte de sistemas... Alguien de los que ahora llaman DevOps....

Relación estable (versión DevOps)



Monday, September 22, 2014

Podcasts/Talks 2014 15-21Sept

From now on the posts about talks and podcast will be in English. Thanks @carlosble for the comment.

This week the talks/videos/podcast are focused on agile culture:

Sunday, September 21, 2014

Agilidad no es una receta para el éxito



Agilidad no es una receta para el éxito, es una receta para fallar....
Fallar de forma rápida, poco costosa y aprendiendo en el proceso... Esto no hará que dejemos de fallar, simplemente hará que no sea de la misma forma, en lo mismo, o de forma estrepitosa.

Concretamente la agilidad asume:
  • Que vamos a fallar estimando.
  • Que vamos a entender mal al cliente.
  • Que vamos a hacer malas decisiones tecnológica.
  • Que va a cambiar (lo que se necesita).
Por lo que propone:
  • Estimar cosas pequeñas.
  • Poner delante del cliente sistemas funcionando para obtener feedback y adaptar a lo que realmente necesita el cliente.
  • Usa prácticas técnicas para controlar la deuda técnica y permitir la evolución técnica incluso rehaciendo pequeñas partes del sistema.
  • Crear lo mínimo imprescindible y con calidad para poder adaptarse a los cambios (apoyado en las prácticas técnicas).
Y todo esto en ciclos muy pequeños (timeboxing) y continuos, por lo que aunque la liemos parda nunca podremos cometer errores muy grandes en tiempo. 

Y todo el proceso reforzado por un proceso continuo de mejora (con retrospectivas y mejoras de equipo).

Abraza el Fallo
Abraza el Cambio
Abraza el Caos


Wednesday, September 17, 2014

Votación Talleres / Charlas para la PyConEs 2014

Después de éxito de las charlas de la PyConES 2013, este año, para la PyConES 2014 (Zaragoza), el equipo de Alea Soluciones hemos echado la casa por la ventana y presentado gran cantidad de talleres/charlas.

Os pongo por aquí las propuestas por si queréis votarlas para que las acepten o por si queréis dar feedback sobre las mismas.

Muchas Gracias por vuestros votos !!!

En el panel de la pycon tenéis todas las charlas y talleres que se han presentado y que tienen pintaza :-)

Es posible que algunas de ellas, de forma directa o con modificaciones se presenten para la CAS 2014 (Barcelona) así que cualquier comentario, propuesta o mejora será muy bienvenida.


Tuesday, September 16, 2014

Charlas/Podcasts 8-14 Septiembre 2014

Esta semana he visto/escuchado bastantes podcast y charlas, de las que voy a destacar las siguientes:

Bastantes cosas aprovechables :)

Saturday, September 13, 2014

Micro nota sobre evolución de mis soft skills

Últimamente cuando escucho una charla sobre equipos, liderazgo o motivación, tengo muy buenas sensaciones. Por un lado me doy cuenta de lo mucho que me queda por mejorar, por otro lado me alegro de notar que el mensaje me llega y me estimula y me hace ser más consciente de la evolución que he sufrido desde las etapas de «ameba tecnológica»

Primero la conciencia sobre uno mismo, el autocontrol, seguido las relaciones y las personas..... y muy de lejos llega la tecnología.

Y esto por cierto siento que es el núcleo de la agilidad; personas, relaciones...

Monday, September 08, 2014

Charlas/Podcasts 1-7 Septiembre 2014


Esta semana he visto/escuchado poca cosa que me haya calado... Quizás lo más destacable sea:


Esta semana pasada, no ha habido mucho interesante, veremos la que viene....

Wednesday, September 03, 2014

Charlas/Podcasts 25-31 Agosto 2014


Voy intentar enlazar las conferencias, presentaciones, podcast y similares que vea o escuche y que me parezcan interesantes... 
Por un lado como nota personal para poder volver a buscar el contenido y por si a alguien le puede servir para buscar contenido interesante.

Esta idea, la he sacado del blog de Manuel Rivero Garajeando
Manuel lleva mucho tiempo registrando todas las charlas técnicas que ve y muchas veces a mi me servido cuando queria encontrar algo para escuchar o ver :-)

Así que grácias Manuel

Sólo voy a poner las charlas que me han parecido interesantes y que creo que me han aportado algo... 

Comienzo con las charlas/podcasts que me han parecido interesantes en la última semana de agosto (25-31 Agosto 2014)
La siguiente semana continuamos....

Saturday, July 26, 2014

Impresiones Go (golang)


Tal y como todos sabéis (después de la paliza que he dado durante estos días) durante la PiWeek me dedique a aprender el lenguaje Go.

Este post resume mis sensaciones sobre este lenguaje en el poco tiempo que lo llevo usando. Desde luego estas son mis opiniones, son intransferibles y cambian con el tiempo... (como todo).
:-)

Me ha gustado

  • Facilidad de expresar concurrencia. Esta parte en realidad me ha encantado, definir patrones de concurrencia usando comunicación por canales ha resultado muy sencillo y en nada de tiempo he desarrollado soluciones que solo de pensar en desarrollarlas y depurarlas en C++, me da dolor de cabeza. (Entiendo que los patrones aprendedidos en la ErlangCamp con actores y todo lo leído sobre sistemas distribuidos ha ayudado a que resulte fácil).
  • Me ha encantado la eficiencia en memoria de las soluciones generadas (comparando con el equivalente en python, ruby o en java).
  • Da gusto ver los ocho cores aumentando y disminuyendo su carga de forma uniforme. :-)
  • Generar  binarios estáticos o dinámicos que sólo dependen de la libc o la libpthreads es una delicia, sobre todo cuando tienes máquinas con distintas versiones de linux. Los despliegues se simplifican de forma brutal... quedando reducidos a un scp :-)
  • Orientación a Objetos, muy sencilla, siempre y cuando estés acostumbrado a hacer diseños en los que predomine la composición. Si eres de los que piensas que Orientación a Objetos es diseñar jerarquías, estás en un problema (en mi opinión, tanto en Go, como en cualquier otro lenguaje Orientado a Objetos).
  • Inferencia de tipos, hace que tengas las ventajas de un lenguaje estáticamente tipado sin tener toda la verbosidad.
  • Gran cantidad de documentación de alta calidad (charlas, ejemplos, libros). Esto desde luego tiene que ver con que han decido estabilizar la versión 1.x del lenguaje y ser muy conservadores en cuanto a los cambios.
  • El compilador es MUY rápido y el ecosistema es muy simple, lo que permite que el flujo de trabajo en cuanto a trabajo con tests, y feedback casi instantáneo, sea muy similar a trabajar con lenguajes dinámicos como python y ruby.

No me ha gustado

  • Aunque es algo más difícil, puedes liarla con los punteros. 
  • Se da bastante flexibilidad para cualquier solución de concurrencia, incluidas algunas formas de solventarlas que pueden ser peligrosas (Mutexes que dejemos sin cerrar, semáforos, etc). Por otro lado el lenguaje 
  • Evidentemente es un lenguaje de un nivel de abstracción bajo/medio, que permite estar en contacto con los tipos de datos a nivel de procesador y usar los recursos de una forma eficiente, pero en ocasiones echo de menos construcciones más expresivas y compactas de otros lenguajes de más alto nivel (bloques ruby, list comprehension python, etc.)
  • La sintaxis para los mapas se me hace poco legible.
  • Por supuesto, soy un enamorado de los lenguajes dinámicos, por lo que en algunas ocasiones me siento encorsetado al definir las estructuras de datos. Pero supongo que es por cómo suelo programar...
  • Si nos salimos de el tipo de aplicaciones para los que fue inventado, vamos a echar en falta bibliotecas potentes, aunque entiendo que eso es cuestión de tiempo.

No tengo opinión clara

  • Control de errores, sensación no definida, por un momento,  parece demasiado verboso, por otro lado parece buena idea obligar a los desarrolladores a que piensen en los errores...
  • La parte de testing integrada en el core del lenguaje y las herramientas me parece una gran idea, pero no los he usado como para tener una opinión formada sobre su funcionamiento.

Otros comentarios

  • Si estás acostumbrado a hacer objetos pequeños y facilitar el reuso por composición en Golang no vas a tener ningún problema.
  • Los escenarios en los que Go creo que es una opción muy viable son:
    • Aplicaciones de alta concurrencia y que requieran escalabilidad.
    • Aplicaciones reactivas y centradas en eventos.
    • Aplicaciones de networking.
    • Sistemas de monitorización, de control.
    • Lenguaje de sistemas
  • Escenarios en los que veo que hay mejores opciones:
    • Lógica de negocio complicada
    • Sistemas de información con flujos muy complejos
    • Existen tipos de aplicaciones en los que se van a echar en falta bibliotecas (pero esto dependerá de hacia donde evolucione la comunidad).
  • Lenguajes/entornos para los que creo que es un buen competidor
    • Susituto de Node
    • Susituto de C++ en aplicaciones de red y lenguaje de sistemas
    • Rust
    • Lenguajes dinámicos (python/ruby) para sistemas escalables o programación de sistemas

Go no es un lenguaje no hecho para hipsters. Aunque lo parezca porque es muy reciente y está consiguiendo mucha tracción, se trata de un lenguaje muy conservador, con una sintaxis simple y con pocas funcionalidades a nivel de lenguaje.
Parece que han decido que solo introducen funcionalidades al lenguaje en caso de que todos los diseñadores/desarrolladores del core estan de acuerdo, por lo que en general se añaden muy pocas cosas.
Se han centrado en tener la versión 1.0 y la van a mantener la compatibilidad durante varios años. Esto permite que se creen muchos recursos de gran calidad (charlas, libros, etc), cosa que no se ha visto con otros lenguajes que evolucionan mucho más rápido.

Patrón para la concurrencia :-)

Conclusiones

Creo que Go esta para quedarse, tienen muchos y grandes apoyos, y cubre una necesidad real (concurrencia y paralelismo, en un entorno de desarrollo y necesidades para despliegue extremadamente sencillo)
Es un lenguaje suficientemente bueno, centrado en un mundo escalable y reactivo, muy estable y que está creciendo a una velocidad de vértigo con una gran comunidad.
Es un lenguaje sin construcciones muy avanzadas y es un gran paso para desarrollos concurrentes y paralelos sin resultar disruptivo, de forma que lo más probable es que obtenga un gran exito (bueno, en realidad creo que ya lo está teniendo).

En esto de los lenguajes es lo de siempre:
"There are only two kinds of languages: the ones people complain about and the ones nobody uses". Bjarne_Stroustrup

Recursos Go:

Para empezar:
Más información de calidad:
Otros recursos interesantes:
Charlas recomendadas:

Enlaces relacionados:

Monday, July 21, 2014

Conclusiones PiWeek / Brutal :-)


Tengo que decir que la PiWeek ha sido para mi uno de las semanas más intensas y de más retorno de la inversión que he tenido en bastante tiempo.

En mi caso pretendía aprender GoLang y tengo que decir que el objetivo ha sido cumplido con creces. No quiero decir que ahora domine el lenguaje, pero sin duda puedo decir que ahora estaría en condiciones de empezar un proyecto que se pudiese poner en producción y creo tengo las nociones necesarias de los conceptos más importantes (concurrencia expresada mediante procesos ligeros (gorutinas), comunicación por canales, los diseños share nothing, etc)

Resumiendo, que hace mucho tiempo que no era capaz de centrarme toda una semana en aprender algo, en un ambiente en el que todo el mundo está entusiasmado por crear, aprender, construir... innovar.

Desde el punto de vista de empresa creo que es una forma muy barata de impulsar la innovación, de fomentar el trabajo en equipo y de crear nuevos productos. Por poner un ejemplo, en una sola semana, he visto proyectos que pueden ser perfectamente un nuevo producto, yo mismo he aprendido una nueva tecnología a un nivel que no podría conseguir en un curso y ahora mismo me veo con capacidad de aportar todo lo aprendido en mi empresa. Seguramente pudiendo ahorrar mucho coste en cierto tipo de proyectos.

Vamos, que desde el punto de experiencia personal, de cumplimiento de expectativas y de retorno de la inversión, le doy una puntuación de:

9/10


El juego de la perfección. Para que la PiWeek fuese la mejor opción para la innovación personal y la innovación tecnológica, y por tanto un gran paso para la dominación mundial por parte de los nerds, falta mejorar los siguientes puntos:
  • Preparar proyectos con un poco más de antelación, para que se pueda generar interés en los proyectos (internamente en Kaleidos puede que se genere, pero desde fuera es mucho más complicado).
  • Logística de telecomunicaciones para que sea más sencilla la incorporación de proyectos realizados desde otras sedes.
Otra posibilidad es impulsar la actuación más local para que se expanda la idea de forma más global. Es decir, dar más peso para que se generen sedes en otras ciudades que actúen como centros de innovación, como actúa Kaleidos en el caso de Madrid.


Desde luego, me he quedado encantado y seguro que voy a intentar repetir la experiencia en las siguientes convocatorias...

Muchas gracias Kaleidos por la idea y la puesta en práctica


Enlaces relacionados:

Saturday, July 19, 2014

Diario PiWeek Dia V (El desenlace final)

Hoy era el último día de la PiWeek y el ambiente que se notaba era entre festivo y de nerviosismo. Todo el mundo estaba cerrando las últimas tareas o preparando la demo/presentación.

En nuestro caso, la verdad es que el jueves teníamos ya implementado las dos soluciones que pretendíamos hacer, así que lo único que podíamos hacer era abrir el proyecto e intentar meter más funcionalidad o seguir leyendo y autoformandonos en Go, y dado que yo soy más bien de asegurar, no quise tocar el código y simplemente he pasado la mayor parte de la mañana leyendo sobre Go y debatiendo sobre temas de agilidad con Yamila.   :-)

A punto de empezar las demos
A las doce y media se paso ha realizar las demos de los proyectos. Recordemos que uno de los requisitos de la PiWeek es que en la demo se presentase un sistema/aplicación funcionando. No vale con presentaciones, tiene que ser algo real, algo funcionando. Esta regla te obliga a tener unas expectativas reales y gestionar muy bien el tiempo del que dispones.

Las demos me han gustado mucho puesto que no había podido seguir el avance de los proyectos durante la semana y algunos estaban muy currados y podrían ser perfectamente la base de un producto.

Una cosa me ha quedado clara, una aplicación servidora con interfaz de linea de comando no es muy impactante precisamente. Quizás podríamos haber generado gráficas en tiempo real o algún tipo de medida de rendimiento para que se viesen más claramente las ventajas que hemos tenido por desarrollar en Go. O mostrar parte del código para que se viese lo fácil que ha sido expresar la concurrencia.

Todos los proyectos me han parecido muy interesantes y esto no es por ser un pelota, lo digo de forma sincera. Había de todo, pruebas concienzudas de tecnologías, proyectos de integración, posibles productos para publico masivo, webs de contenido especifico, integración de sensores y hardware, aplicaciones móviles, webs, bases de datos, multitud de lenguajes, multitud de tecnologías, etc.
Una de las presentación ha tenido incluso música en directo creada expresamente para la ocasión. Contra eso está claro que no se puede competir :-)

Presentación con música en directo (flipa!!!!)

Por cierto, muchas gracias Yamila por apuntarte al proyecto, se aprende muchísimo más en compañía y además así ha resultado mucho más fácil completar toda la funcionalidad que pretendíamos :-)
Un gusto trabajar contigo.






Enlaces relacionados:

Thursday, July 17, 2014

Diario de PiWeek IV (Jueves)

Nuestro logo de proyecto
Hoy la verdad es que se ha dado muy bien, hemos terminado todos los hitos funcionales que nos habíamos planteado al comienzo del proyecto.

Por lo que una vez preparada la demo que vamos a hacer mañana, hemos podido ir estudiando como podemos hacer el código más idiomático. Recordemos que el objetivo principal es aprender Go, asi que todo lo que podamos aprovechar esta tarde y mañana antes de la demo, para seguir aprendiendo será perfecto.




Yamila se ha currado el servidor http y sus correspondientes pruebas y yo he terminado las pruebas del servicio por amqp. La verdad es que en ambos casos no se ha dado mal.

El diseño que ha quedado es el siguiente: dispone de un motor de consultas snmp asíncrono, que a partir de un canal de peticiones snmp, las despacha para diversos workers creados por cada destino y que se balancean la carga permitiendo hasta un máximo prefijado de operaciones snmp por destino. Una vez realizada la consulta snmp, la respuesta se devuelve por otro canal.
Por supuesto este canal de salida está desordenado, puesto que se ponen en el canal de salida en cuanto termina de realizarse la petición snmp y eso dependerá totalmente del host destino y de la consulta snmp.

Usando este motor de consultas se han creado dos servidores:

  • amqpsnmpqueries (pasarela amqp/snmp)
  • snmphttpserver (pasarela http/snmp)

amqpsnmpqueries


Partiendo de una cola AMQP (en rabbitmq) de peticiones snmp, publica en un exchange AMQP las respuestas a las peticiones. En este caso, la aplicación es casi un uso directo del motor de consulta snmp asincrono.

Diseño interno amqsnmpqueries. 

snmphttpserver


Permite realizar consultas snmp por http. En este caso dado que cada cliente quiere una respuesta sincrona a su petición exite una capa de adaptación que apartir de las salidas desordenadas se encarga de despachar cada respuesta al cliente correcto.
Diseño interno snmphttpserver

En un plano más mundano, Kaleidos ha invitado a unas riquísimas empanadas de Milan Dopico que hemos disfrutado en la azotea.
Cualquiera que me conozca sabe que disfruto con esas cosas como un cerdito en la charca :-)



Y mañana demo!!!  La verdad es que hay unos proyectos chulisimos y estoy deseando ver hasta donde han llegado...
Por mi parte, con el nuestro hemos cumplido, puesto que creo que las bases de Go como para desarrollar algo que vaya a producción están asentadas.

Enlaces relacionados:

Wednesday, July 16, 2014

Diario de PiWeek III (Miercoles)

Artista con las tizas...
Tercer día de la PiWeek, hoy hemos comenzado los primeros prototipos para interactuar con el servicio usando AMQP y http.
De momento sólo tenemos algunas pruebas, pero creo no debería ser demasiado difícil enganchar las piezas.

Hoy después de repasar el punto en el que estamos en el proyecto, decidimos dividir el trabajo y abrir dos vías de forma simultanea, una para amqp (que he empezado yo) y otra para el servicio http que ha empezado Yamila.

Por desgracia, Yamila, fue requerida por una urgencia (de fuera de PiWeek) y no tubo todo el tiempo disponible.

Hasta ahora mis sensaciones con respecto a Go son:

  • Permite expresar muy bien la concurrencia de un programa
  • El tratamiento de errores, se me hace pesado (supongo que porque es tan divertido como documentar :-) )
  • Por otro lado, la velocidad de desarrollo es muy buena en este tipo de problemas, aunque se nota que tenemos una falta de conocimientos brutal, puesto que aunque las cosas funcionan no tienen para nada pinta de ser muy idiomaticas. Asi que creo que nos queda mucho que aprender sobre como organizar el código, los paquetes y como abstraer y reusar usando iterfaces.
  • En cualquier caso, suelo preferir hacer algo que funciona y luego ir iterando verificando que sigue funcionando. Así que nos centraremos en tener el servicio amqpsnmp y httpsnmp y ya nos preocuparemos de refactorizar haciéndolo más idiomatico y reusable.

A última hora...
No solo de programar vive el PiWeekero y también se ha celebrado un campeonato en la pequeña recreativa que hay en la oficina.

Entre pomodoro y pomodoro, puede echar un vicio...

Mañana más...

Enlaces relacionados:

Tuesday, July 15, 2014

Diario de PiWeek II (martes)

Segundo día de la PiWeek y el proyecto a toda marcha...

El lenguaje Go nos esta resultando fácil y nos está permitiendo con muy poco coste solventar los problemas de concurrencia.
Aparentemente la aplicación es robusta y se ejecuta de forma paralela en todos los cores sin tener que añadir nada de código.

Al igual que ayer, hemos generado algunos deadlocks, en muchos de los casos por intentar escribir en canales sin buffers de los que todavía no existe un lector.
En cualquier caso, han sido fáciles de detectar y de solventar.

Todavía no hemos empezado con temas de interfaces, pero cada vez se me hace más evidente que con un buen diseño el core es reusable para otro tipo de operaciones de red.

Hoy, no he acaparado tanto el teclado y creo que hemos avanzado en conocimiento los dos.

Lo que a estas alturas tengo claro es que verbalizar problemas de concurrencia y sincronización es bastante complicado, por lo que creo que Go hace un trabajo excelente en permitir expresar en código esa concurrencia de forma más o menos sencilla (teniendo en cuenta lo difícil que es en otros lenguajes).

Bueno, mañana más....

Enlaces relacionados:

Monday, July 14, 2014

Diario de PiWeek I

Llegue a las 9:00 a Kaleidos y ya estaba casi todo el mundo cerrando su participación en los proyectos. En mi caso, parece que la proyecto para aprender Go le ha convencido a Yamila Moreno por lo que se ha apuntado al mismo....

Inicialmente parecía que Antonio de La Torre tenia interés, pero después de la primera reunión en la que he comentado un poco por encima como funciona snmp, el interés a decaído y finalmente ha decido pasar a otro proyecto que seguramente sea más interesante. :-)

Total, que nos hemos embarcado Yamila y yo con el proyecto.

Hemos empezado por montar el entorno de desarrollo en el equipo de Yamila y conseguir algunos temas de logística como teclado, monitor y acceso a wifi. Posteriormente nos hemos metido en el fregado y hemos empezado por mirar el código que tenia yo desarrollado de días anteriores.

Y ya por fin hemos comenzado a desarrollar, aunque en esto tengo que decir que sin darme cuenta he acaparado bastante el teclado :-(  Mañana no pasará. Lo siento, Yamila.

Es muy gratificante poder trabajar y contrastar las ideas sobre como hacer algo con alguien que cómo tú está fuera de su zona de confort. Creo que esto ayuda mucho a hacer las preguntas más absurdas o las suposiciones más raras sin temor a quedar mal, puesto que los dos estamos en el mismo punto :-)

El resto del día se ha pasado familiarizándonos con la forma de usar canales y funciones concurrentes y haciendo cambios muy pequeños de forma que el avance fuese lento pero seguro y que sirviese para ir afianzando conceptos.

El uso de canales para la sincronización me gusta tanto o más como me gustaron los mensajes entre procesos en erlang.

Durante el proceso:

  • Hemos generado dos dead locks
  • Nos hemos liado con la sintaxis de Go unas cuantas veces
  • Hemos en muy poco tiempo realizado un programa con bastantes hilos de ejecución sin generar un caos muy grande (punto para Go)

Resultado:

  • Entorno de compilación en los dos equipos
  • Trello con bastante contenido
  • Esqueleto de aplicación en el que cada comando se despacha a una cola por destino en el que procesaran un numero máximo de procesadores concurrentes
  • Main de prueba que acepta comandos en texto por la entrada estandard
  • Ejecución de snmpwalk sin ningún tipo de control de errores y sin almacenar el resultado, solo limpiándolo en pantalla.

Bonus point

Algunos otros proyectos tenían cierto interés en seguir prácticas de DDD en su implementación y aprovechando que nosotros estamos usando muchos de esos conceptos en el desarrollo en Alea Soluciones, realice una presentación medio improvisada sobre DDD en python.
Creo que ha resultado de interés y estaré al tanto para ver si alguno de los proyectos realiza una implementación de ese tipo.
Junto con el tema de DDD hemos visto también como estamos haciendo el testing unitario y como la arquitectura que usamos nos permite postergar las decisiones.


Mañana, mas y mejor...


Enlaces relacionados:

Diario de PiWeek 0

Este viernes pasado fue la presentación de proyectos para la PiWeek. En esa presentación los participantes presentan los proyectos en los que quieren trabajar durante la semana, e indican el tipo y numero de participantes que pueden necesitar para llevar a cabo el proyecto...

Se genera un ambiente muy divertido en el que se produce una especie de subasta inversa de proyectos y skills, en que cada uno intenta generar tracción alrededor de su proyecto para conseguir que otros participantes se apunten a colaborar.
En esta ocasión fue especialmente gracioso ver como varios proyectos se intentaban disputar la participación de un diseñador, que parece que es conocido de anteriores PiWeeks por realizar unos diseños espectaculares :-)

Una vez presentados los proyectos, la gente muestra su interés inicial en uno o más proyectos, y tiene todo el fin de semana para decidir en que proyecto participará finalmente.

Realmente es el lunes a primera hora cuando se terminan de cerrar los participantes de cada proyecto.

Esta era la segunda presentación de proyectos en la que he asistido, aunque la primera en la que presentaba un proyecto. En mi caso, presente con el nombre de Go, Forrest Go!!! una aplicación para realzar consultas snmp de forma concurrente y paralela que servirá de  hilo conductor a un proceso de aprendizaje de lenguaje Go (aprendiendo golang en la piweek)

El proyecto se podrá seguir en:



Enlaces Relacionados:

Monday, July 07, 2014

Aprendiendo GoLang en la PiWeek

Este año, en el equipo estamos autogestionando nuestro presupuesto de formación por lo que cada uno que debe proponer los eventos/cursos/formaciones a las que quiere asistir al resto del equipo y entre todos se decide que es lo que se va ha hacer.

En mi caso, aparte del AOS 2014 de Valladolid, y seguramente de la PyCon.Es de Zaragoza, he decido que una buena forma de mejorar como desarrollador es aprender un nuevo lenguaje y que mejor forma de hacerlo que dentro del marco de la http://piweek.com/ organizada por Kaleidos.

Para los que no lo conozcan, la PiWeek (Personal Innovation Week) es una idea de la gente de Kaleidos que consiste en durante una semana parar de realizar trabajo "facturable" para la empresa y dedicarse a la innovación, pero desde un punto de vista personal, en el que cada uno decide sobre qué quiere trabajar.

Solo tiene dos reglas:
- Solo puedes usar software libre
- El viernes de esa semana tienes que mostrar el producto realizado durante esa semana

Así que esta semana que viene, dentro de la http://piweek.com intentaré aprender http://golang.org para la creación de servicios de red de alta concurrencia.
En concreto, voy a intentar desarrollar:


El objetivo es conseguir soltura de desarrollo en Go para entornos concurrentes y poner en práctica muchos de los patrones de concurrencia y comunicaciones vistos en Erlang, Go y los que actualmente suelo implementar en python.

Si alguien va ha participar en la http://piweek.com y comparte alguno de estos objetivos estaría encantado de que trabajásemos juntos, en los servicios propuestos u en otros, dado que el objetivo es el aprendizaje.

Otra opción podría ser un servicio de check de servicios http, pero eso dependerá de si hay alguien más interesado...

En el siguiente panel tengo la intención de gestionar los avances del producto
https://trello.com/b/JQxhbtfa/eferro-piweek2014


Gracias a Kaleidos por estas ideas geniales
 y sobre todo gracias por compartirlas....


Referencias:




Sunday, July 06, 2014

AOS 2014 Valladolid

El pasado 6 y 7 de junio asistí al AOS2014 en Valladolid, para el que no lo sepa el AOS (Agile Open Space) es una de las dos eventos a nivel nacional que realiza al año Agile Spain
Un Open Space es un formato de des-conferencia auto-organizada por los propios asistentes donde no está definida la agenda previamente.
Esta definición de Open Space que he leído en cachirulovalley deja claro que es una conferencia, en que todo lo que sucede es resultado de los propios asistentes. Por lo que aunque en este post voy a dejar mis sensaciones, cualquier cosa que refleje, para bien o para mal, es simplemente lo que tenia que pasar en ese momento y con esos asistentes.

Era mi tercer AOS, y como siempre es uno de los eventos que espero con más ilusión puesto que además de encantarme el formato de Open Space es uno de los eventos donde más se invita a interactuar y compartir y eso para mi es importante.

Resultado resumido:

Me lo pase genial. No aprendí mucho, aunque si que centre algunas ideas... Aproveche a salir un poco de mi zona de confort y apuntarme a dinámicas y sesiones en las que normalmente no me suelo apuntar.
Y también me di cuenta que cuando estoy con temas que me gustan soy bastante brasas (así que mis disculpas a los afectados :) )
Tanto el viaje, como el alojamiento fue en grupo y la experiencia fue muy enriquecedora. El alojamiento nos salio un poco rana, pero ese es otro tema.

Equipo desarrollo Alea Soluciones
(@apa42 @eferro @pasku1 @jaimegil @nestorsalceda)

Resultado un poco más pormenorizado:


  • Es el primer AOS en el que he podido disfrutar del ambiente de tarde/noche, en anteriores había viajado con un Bebe por lo que las prioridades eran otras :-)
  • Fuimos todo el equipo de desarrollo de Alea Soluciones y eso en si mismo es fantástico, por todo lo que se comparte y se debate.
  • Me gusto que al final hubiese algunas sesiones algo más técnicas y dedicadas a temas de desarrollo (aunque me sigue pareciendo que son insuficientes, cosa que me sorprende, puesto que la mayor parte de los asistentes se dedican al desarrollo de software, o eso dicen :-)  )
  • Como soy un desastre no apunte las sesiones a las que asisti, pero si que me acuerdo de las sensaciones que tuve...
  • Me gusto especialmente la sesión Daily standup el musical @giropa832 
  • También me gusto el taller sobre refactoring que organizaron @istepaniuk  @pasku1
  • Como siempre, recordé de cuanto comparto con muchos de los compañeros de profesión con los que me encuentro sistemáticamente en este tipo de eventos.
  • Por otro lado, la hospitalidad de los organizadores fue fantástica y se preocuparon de que tanto durante el evento como después del evento nos sintiésemos como en casa.
  • Presente la sesión "de test unitarios de clases a tests unitarios de funcionalidad" en la que compartimos como hacemos TDD actualmente y como fue la evolución. Creo que aporto ideas a los asistentes y por el debate generado, creo que gusto.

Y ahora para poder expresar las cosas que creo que son mejorables, el "juego de la perfección". 
Yo a este AOS 2014, le doy un 8, y para ser un 10, creo que debería mejorar lo siguiente:
  • El segundo día, el tiempo de las presentaciones de las sesiones se fue de las manos, por lo que fue un lio de votación.
  • Me falto la retrospectiva final y quizás alguna dinámica de cierre (aunque soy consciente lo difícil que es hacerlo con tanta gente). Pero un evento ágil sin retrospectiva, me resulta raro.
  • La comida de los dos días de picnic fue exactamente igual (un poco aburrido). Aunque me encanto la posibilidad del picnic que ayuda mucho a juntarse y charlar.
  • En algunos momentos el barullo era molesto, sobre todo cuando se intentaron hacer varias sesiones en el espacio principal.
  • Me faltaron más sesiones sobre técnicas de desarrollo, profesión, desarrollo de software, etc. (No solo de abrazar arboles vive el agilista :-) )

Muchísimas gracias a todos los organizadores 



Me quedo esperando con ganas al AOS del año que viene... 
Nos vemos por Asturias...