Showing posts with label Soft Libre / Cultura Libre / Gnu Linux. Show all posts
Showing posts with label Soft Libre / Cultura Libre / Gnu Linux. Show all posts

Saturday, July 18, 2015

Ultimo post de la PiWeek VIII

El último día de la PiWeek es una mezcla de nervios para  algunos y de ambiente festivo... La verdad es que en toda la semana me lo paso muy bien, pero el viernes es el día más divertido.

Algunos equipos controlan mejor que otros los nervios y son capaces de trabajar en el proyecto hasta el último minuto, yo no soy de esos y siempre prefiero trabajar con margen y dejar las cosas cerradas el día anterior.

Durante un rato  estuve preparando la demo, aunque no había demasiado que hacer.
Luego comente las notas que tenia del libro ClojureScript Unraveled e incluso creo que Andrey ya comenzó a hacer ciertos cambios a partir de ese feedback.

También tuve algunas enriquecedoras conversaciones, principalmente con David, sobre el coste real de una funcionalidad cuando se trata de un producto software y no de un proyecto que se transfiere a un cliente. También comentamos como hacíamos en Alea Soluciones para poder desplegar con un buen ritmo en nuestras aplicaciones. Le comenté como usaban feature toggles la gente de etsy y de facebook para poder tener un tren continuo de despliegues a producción.

Espero que David me tenga informado de si alguna de las cosas les ha ayudado a mejorar :-)

Sobre la una de la tarde llego el climax de la PiWeek... las presentaciones... como en otras ediciones, las siguientes dos horas y media fueron de presentaciones de unos 10 minutos por proyecto.
El ambiente fue de completa fiesta y de asombro por la calidad de todos los proyectos.

Es una mezcla de fiesta geek, nervios por hacer la presentación del proyecto en el que te has dejado la piel durante esta semana y de tomar notas para investigar las cosas que han hecho en otros proyectos.

Hay que tener en cuenta, que no hablamos de presentaciones powerpoint o equivalente... hablamos de código funcionando o diseños, algo real, palpable, nada de documentos de buenas intenciones...



Todos los proyectos tienen un nivel impresionante, pero lo que más me ha impresionado es el proyecto uxbox, realizado en clojure script. Además de lo bien y fluido que queda el interfaz de usuario, la velocidad de desarrollo que han tenido ha sido impresionante, sobre todo teniendo en cuenta que varios de los miembros del equipo eran la primera vez que trabajaban con ese lenguaje.

Como otras veces, me he quedado impresionado por todo lo que tiene que ver con Frontend, UX, diseño y similar. Toda mi experiencia ha estado siempre centrada en software que no ha requerido parte visual importante (sistemas industriales, backends, telecomunicaciones, retail, ...) así que siempre alucino con los proyectos de la piweek (se nota la experiencia acumulada en software muy visual). En especial en estos temas, me han impresionado Guild Empire, Zombie Time!, Baoqu, Mineralis, etc..

Cada PiWeek es distinta y en cada edición consigues más o menos avances personales, noto que esta edición, junto con la primera a la que asistí, son las que más han aportado a mi avance personal como desarrollador.

Así que otra edición más, reto conseguido...

Referencias:

PiWeek edición VIII (Cuarto Día)


Aunque lo escribo con retraso, este post corresponde al cuarto día (jueves) de esta edición de la piweek.

En el proyecto eventsview avanzamos hasta dejar una versión usable con búsqueda y los filtros activados. Estoy bastante contento, por que aunque no es nada vistoso nos va a valer como base para desarrollos que tenemos que hacer en Alea y que poco a poco voy cogiendo flujo en javascript y en la parte web. Hay que tener en cuenta que en mi día a día no suelo tocar para nada web, por lo que sólo puedo avanzar en este tipo de cosas con proyectos personales, así que algo como la piweek para mi es un "acelerador" para mi aprendizaje.
Una vez más, los consejos sobre usabilidad que  nos ha dado Esther han servido para hacer la interacción con el usuario mucho más sencilla.

En cuanto a expects ya conseguimos tener todos los tests en verde y Jaime se encargo de generar una nueva versión release candidate y de actualizar doublex-expects que depende de expects.
Como mis objetivos para la PiWeek eran darle un empujón a mi aprendizaje de javascript, disponer de una base para desarrollar un visualizador de eventos y ayudar a Jaime a generar una nueva versión de expects, la verdad es que para el jueves a media mañana los objetivos estaban cumplidos...
El truco como siempre es tener unas expectativas bajas y gestionarlas bien ;-)


El caso es que a partir de ese momento me dedique a investigar cosas que me parece que a medio plazo pueden resultar muy interesantes.
Entre otras cosas estuve trasteando con react y creo que puede tener su sitio para crear partes del frontend reusables para la arquitectura de servicios que estamos desarrollando en Alea Soluciones.

También curiosee con clojurescript y la verdad es que me pareció impresionante las cosas que se pueden conseguir. En este caso, creo que si ahora mismo quieres aprender algo sobre clojurescript, tu sitio es la oficina de kaleidos.
En concreto repase un capitulo del libro de  Andrey Antukh y Alejandro Gomez,  ClojureScript Unraveled y tome algunas notas para poder enviarles feedback y pequeñas correcciones.
También trastee con ayuda de Alonso hasta tener una versión de clojurescript decente en mi equipo. Podéis ver las notas de la instalación en https://github.com/eferro/clojurescriptnotes

Me quede bastante impresionado con cómo se puede trabajar con el entorno creado usando https://github.com/bhauman/figwheel-template para crear un proyecto. En concreto el flujo de desarrollo en un proyecto con reagent parece de lo más interesante y el proyecto uxbox de la PiWeek así parece confirmarlo.



Desde luego, para la tarde del jueves ya estaba completamente Agotado!!!! el ritmo de piweek es bastante demoledor.

Referencias:


Wednesday, July 15, 2015

PiWeek edición VIII (tercer día)


Ya estamos en el ecuador de la piweek y parece que todos los proyectos están muy encarrilados... Como siempre se ve un nivel espectacular y además de las cosas en las que estoy metido, suelo intentar curiosear, sobre todo en los proyectos realizados con clojurescript, que tienen muy buena pinta...



Tengo pendiente darle un empujón fuerte a ClojureScript Unraveled el fantástico libro que están escribiendo sobre clojurescript Andrey Antukh y Alejandro Gomez
Me he comprometido con Andrey a leer y dar feedback de la parte de instalación y tooling para ver si es adecuado para alguien que no tenga ni idea (como yo :-) )
Así que mañana le dedicaré unos cuantos pomodoros.

En cuanto a los dos proyectos en los que estoy metido con Jaime, la verdad es que vamos avanzando a buen ritmo.



Eduardo - Piweek from kaleidos on Vimeo.

Con expect ya volvemos a estar en verde después del cambio de diseño para mejorar los mensajes de error :-) (hacia tiempo que no pasaba tanto tiempo con los tests rotos)

En cuanto al visor de eventos, hoy hemos metido gran cantidad de eventos medio reales y hemos realizado las adaptaciones para comenzar con el filtrado. En este caso el avance es mucho más lento, pero como el objetivo en mi caso es aprender javascript y no tanto el resultado final, pues estoy bastante contento.

Una vez más, Esther Moreno nos ha echado una mano con el UX, ayudandonos a aclarar las ideas.
Además, me he aprovechado de estar rodeado de mucho conocimiento para hacer preguntas de novato de javascript y del entorno.

En concreto, creo que era la única persona en el planeta tierra que no sabia que se podia poner un punto de ruptura para arrancar el debugger en el chrome con solo poner "debugger;"

Gracias Alonso, solo por ese detalle puede que ya tenga amortizada la piweek!!!
En otro orden de cosas, hoy en kaleidos se ha hecho una comida especial de piweek, como siempre, ambiente festivo a tope.
El que no se divierte en la piweek es por que no quiere.


Referencias:

Tuesday, July 14, 2015

PiWeek edición VIII (primer y segundo día)



Una edición más me ha apuntado a la piweek. En esta ocasión me he apuntado a última hora puesto que en principio en estas fechas iba a estar de vacaciones.

En esta ocasión, del equipo de Alea Soluciones, he conseguido liar a https://twitter.com/jaimegil
Cómo sigo con mi cruzada personal por aprender algo de javascript, hemos decido implementar un pequeño visualizador de eventos https://github.com/aleasoluciones/eventsview
No tenemos muchas pretensiones en cuanto a las funcionalidades a realizar, el objetivo en mi caso es seguir aprendiendo, por lo que me importa mucho más tener la mente abierta que realmente tener una funcionalidad interesante.


De momento hemos realizado un pequeño listado de eventos que se va refrescando por ajax y lo hemos separado en dos objetos de vista, un presenter y un repositorio.
Estábamos planteándonos probar a implementarlo usando react (una vez más, sólo por aprender).

Una cosa muy interesante que he aprendido es lo importante que es tener acceso a alguien experto en UX. En este caso Jaime y yo teníamos la idea preconcebida de como queríamos hacer el visor de eventos, pero una conversación de unos 10/15 minutos con Esther Moreno (experta en UX de kaleidos) y hemos cambiado y simplificado la idea que teníamos.  Nos hemos ahorrado un montón de trabajo innecesario y gran cantidad de software a mantener :-)

En Alea Soluciones, nos vendría muy bien contar con algún tipo de "UX as a service" para mejorar la interacción con nuestras aplicaciones, que aunque no es mala, si que se nota que está pensada por un grupo de programadores con buenas intenciones pero a los que nos faltan conocimientos avanzados de UX y de diseño. Concretamente en mi caso, se nota mucho que siempre he trabajado en procesos de backend.

Además del visor de eventos, estamos dándole un empujón a la fantástica biblioteca de asertos expects que usamos al hacer TDD en python.
Está biblioteca creada por Jaime nos permite crear aserciones en los tests al estilo rspec y aunque es muy potente, Jaime  tenia algunas mejoras pendientes que no estaba pudiendo llevar adelante. Así que mejor ocasión que la piweek para darle un poco de cariño.



En esta ocasión hemos comenzado por un cambio interno de diseño para mejorar los mensajes generados cuando los asertos no se cumplen. Este cambio que puede parecer menor, en realidad es muy importante puesto que en este tipo de utilidades los mensajes son los que ayudan al desarrollador a identificar el problema lo antes posible, por lo que sucede como con los lenguajes en que los mensajes de error pueden ser una diferencia significativa en su facilidad de uso...


Esto es lo que han dado de si los dos primeros días de piweek... seguiremos informando


Referencias:





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

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....

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:




Monday, August 06, 2012

Instalación de stack python independiente...

Tal como comente en el post sobre uso de paquetes deb de python no oficiales en la mayor parte de los casos, para el desarrollo de aplicaciones de servidor, lo normal es disponer de una stack python independiente del de sistema, por ello, lo normal es descargar y compilar python y utilidades básicas para gestionar paquetes y entornos virtuales.

En este ejemplo, vamos a instalar la última versión de Python 2.7 en el directorio /opt/py2.7

Python 2.7.3 for old gnu/linux systems (test debian/ubuntu)

Una vez que hemos realizado la instalación y verificado que el interprete python funciona correctamente, podemos pasar a instalar las setuptools, pip y el virtualenv.

setuptools, pip and virtualenv installation

En este punto ya disponemos del interprete de python y de las herramientas mínimas para poder crear entornos python, instalar paquetes, etc...
Este proceso permite usar un stack python moderno en servidores que dispongan de una versión obsoleta de sistema operativo.
Aun en el caso de que nuestro servidor disponga de una versión moderna de python, es bastante conveniente disponer de nuestra propia versión controlada del interprete y de las herramientas separada de la que viene con el sistema operativo...

Wednesday, August 01, 2012

Paquetes Python no oficiales para Ubuntu

En cada versión de ubuntu suele existir un par de versiones de Python soportadas de forma oficial, normalmente una de la rama 2.x y otra de la rama 3.x. En algunas ocasiones puede ser conveniente disponer de paquetes para otras versiones de Python para poder hacer pruebas de aplicaciones, depurar paquetes deb o para poder generar paquetes que puedan ser usados en varias distribuciones de forma simultanea. Para estos casos nos puede venir muy bien el respositorio de launchopad https://launchpad.net/~fkrull/+archive/deadsnakes Este repositorio contiene gran cantidad de paquetes de Python con distintas versiones capaces de convivir con los paquetes de Python oficialmente soportados en esa versión de ubuntu.... Para poder acceder a esos paquetes, lo primero es añadir ese repositorio a nuestros sources, por ejemplo ejecutando:

sudo add-apt-repository ppa:fkrull/deadsnakes
Una vez hecho esto, podemos por ejemplo instalarnos un Python 2.5 en una Ubuntu lucid 10.04, con los siguientes comandos:

sudo apt-get update
sudo apt-get install python2.5
Este repositorio contiene paquetes Python desde la versión 2.4 hasta la 3.2 para distribuciones ubuntu desde Lucid 10.04 hasta precise 12.04 Recomiendo el uso de este repositorio para el caso de que tengamos que trabajar con los paquetes Python oficiales por algún motivo, o si estamos trabajando con paquetes deb de programas hechos con Python y necesitemos probarlos en varias distribuciones o hacer las primeras pruebas de cómo funcionarían con otras distribuciones o cuando queremos hacer un backport de un paquete que nos de problemas por la versión de python. Por supuesto, si tenemos una aplicación de servidor, lo más normal es usar nuestro propio stack para el deploy usando virtualenv y no usar ninguna de las versiones de python y de paquetes de python del sistema.

Tuesday, May 17, 2011

#nolesvotes: por un voto responsable




Via Ricardo Gallir

1.- OBJETIVO DE #NOLESVOTES. Las personas que apoyamos a la iniciativa #nolesvotes desde sus inicios, a la vista de la catarata de tergiversaciones vertidas por políticos y medios de comunicación, queremos recordar y subrayar que la iniciativa en ningún modo promueve la abstención, y que surgió para hacer una llamada al ejercicio del voto responsable el próximo 22-M. La iniciativa pide específicamente que no se vote a los partidos que responden a intereses distintos a los de la ciudadanía: PP, PSOE y CiU, pero recomienda que en su lugar se examinen otras opciones. La iniciativa no pide el voto para ninguna opción concreta: el voto es responsabilidad de cada ciudadano.

2.- HAZ DE TU PÁGINA UN CARTEL ELECTORAL. Las calles están llenas de carteles electorales, pero muchas personas no se ven representadas en ellos: la intermediación hizo que la política sea cada vez más lejana al ciudadano. Para subsanar tal déficit democrático, proponemos que todo ciudadano que así lo desee pueda convertir su blog, su web, su muro o su twitter en un “cartel electoral” del movimiento. Si quieres respaldar esta iniciativa, convierte tu sitio en Internet en un cartel electoral antes de las 24 horas del próximo día 20 de mayo, con el logotipo de #nolesvotes o de las plataformas con las que simpatices, y el texto “ni PP, ni PSOE, ni CiU”.

3.- COLABORACIÓN DISTRIBUIDA. Te invitamos a copiar este texto y construir páginas de enlaces que referencien todos los sitios que dan apoyo a la iniciativa. De igual modo, invitamos a los demás colectivos que comparten nuestra propuesta a que lleven a cabo acciones similares. La fuerza de la red reside en la distribución y colaboración entre sus nodos.

4.- TÚ ERES EL ALTAVOZ. Tan importante es la red como la calle: no te limites a actuar en internet. Levántate y explícaselo a todos tus conocidos, especialmente a aquellos más vulnerables a la propaganda en los medios de comunicación masivos.

5.- ACCIÓN. No te quedes en casa el domingo 22. Sal a la calle y ejerce tu derecho al voto. No votes a quienes, actuando abiertamente en contra de la voluntad e intereses de los ciudadanos, han convertido la democracia en una burla de sí misma. Por la participación democrática activa: ni PP, ni PSOE, ni CiU.

#nolesvotes

Más información
Manifiesto de #Nolesvotes
Wiki colaborativo #nolesvotes
Twitter #nolesvotes
Facebook #nolesvotes
Material gráfico #nolesvotes | http://goo.gl/dbGAb

Friday, May 06, 2011

Problema imagen bocabajo Webcam Asus N61JQ en ubuntu 10.10

Al poner Ubuntu 10.10 en mi portátil Asus N61Jq resulto que la imagen de la webcam aparecia bocabajo.
El problema parece que es debido a que la webcam está montada con un conexionado que no es el correcto.

Las posibles soluciones a este problema son:
1 Parchear el modulo de kernel para que de la vuelta a la imagen o para que por lo menos disponga de un parametro para hacerlo.
2 Modificar las librerías de usuario que usan las aplicaciones para acceder a la webcam, de forma que sean estás librerías las encargadas de cambiar la imagen.

En mi caso, descarte la primera opción, puesto que los parches del módulo que encontré no me compilaban con las versiones de kernel/modulos de mi ubuntu y no me apetecia ni tener que depurar el problema, ni mantener posteriormente una versión compilada (sin ser de paquete). Vamos, que básicamente lo descarte por perezoso :-)

Así que busqué la solución centrandome en la segunda vía, es decir, en encontrar parches para las librerías de acceso a la webcam. Por suerte, alguien hizo lo mismo e incluso dejo la solución en forma de librería v4l modificada, compilada y en un bonito paquete deb que ha dejado disponible en http://ppa.launchpad.net/libv4l/ppa/ubuntu.

Por tanto, para instalar el paquete parcheado de la librería v4l, debemos añadir el repositorio ppa a la lista de repositorios, y posteriormente actualizar la lista de paquetes e instalar el paquete libv4l-0.

En mi caso ejecute como usuario normal los siguientes comandos:

REPO=http://ppa.launchpad.net/libv4l/ppa/ubuntu
DISTRO=`lsb_release -c | awk '{print $2}'`
echo -e "\n# libv4l PPA\ndeb ${REPO} ${DISTRO} | awk '{print $2}'` main" \
| sudo tee -a /etc/apt/sources.list
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com C3FFB4AA
sudo apt-get update
sudo apt-get install libv4l-0


Con estos sencillos pasos, disponemos de una nueva versión de la librería v4l, que además no colisiona con la librería que ya tuviésemos disponible...

La mayor parte de las aplicaciones que usan la v4l inmediatamente usarán la nueva librería y el problema quedará solucionado. Pero algunos programas, como el skype, no usan directamente la librería v4l, por lo que se necesita forzar a que la usen, mediante el LD_PRELOAD.
Por ejemplo para arrancar el skype usando la nueva librería instalada podemos usar el comando:

LD_PRELOAD /usr/lib32/libv4l/v4l1compat.so skype



Se puede consultar información ampliada sobre este problema en:
http://radu.cotescu.com/flipped-images-ubuntu-webcam/
http://gejanssen.com/howto/U53jc/index.html#mozTocId84857

Monday, April 18, 2011

Charla Empaquetamiento Deb aplicaciones Python (grupo Python Madrid)

Para la última reunión del grupo Python Madrid, prepare una pequeña charla sobre cómo empaquetar en formato deb módulos python o aplicaciones realizadas en python.

Si alguno de los que no pudo ir y está interesado en el tema, puede echar un vistazo a la presentación que prepare:


Se dispone de un resumen de la reunión, donde se pueden encontrar enlaces de temas interesantes que salieron en la reunión.

Además de la charla que di yo, Kiko, presento una charla muy interesante sobre cómo se usa python en entornos científicos. La presentación está disponible en python cientfico introducción a numpy y matplotlib