ESUG 2010 (día 1)

Por estos dias me encuentro participando de la conferencia anual del grupo de usuarios de Smalltalk de Europa (ESUG). La cuidad elegida para el evento en esta ocasión ha sido Barcelona.

DSC00517 (copy)

Informalmente el evento comenzó durante el fin de semana con el Smalltalk Camp (espacio de encuentro donde la gente hace networking, codea y comparte sus proyectos ). El inicio formal fue el lunes y como era de esperarse la apertura estuvo a cargo de Stef. Duccasse, presidente de ESUG. El resto de la mañana estuvo dedicado a la utilización de Smalltalk en ambientes enterprise, lo cual me resultó por demás interesante.

Por la tarde ya hubo 2 tracks, uno de ellos dedicado integramente a un workshop dictado por la gente Cincom. A diferencia de lo que podria pensarse el workshop no tenia foco en las herramientas de Cincom (que obviamente utilizamos) sino que el foco del workshop era ejercitar un proceso de desarrollo para trabajo concurrente sobre una única imagen. Para esto nos dividimos en varios equipos y la excusa del ejercicio era programar algoritmos para resolver Sudokus. La metodogia propuesta se llama Wolfpack (¿manada de lobos?) los detalles de la misma los voy a dejar para otro post. La herramienta que utilizamos para programar fue WebVelocity.

En el track paralelo hubo 4 sesiones sobre Gaucho, Etoys, Physical Etoys y Xtreams (no vi ninguna pues que me quedé todo el tiempo en el workshop, ups!)

Un punto interesante del evento es que todas las sesiones están siendo transmitidas en vivo con muy buena calidad. Para ver las sesiones pueden seguir este link.

El evento cerro con la exposicion y votación de los proyectos que compiten por los Award de Innovación, entre los que a mi entender se destacaron COG (la nueva máquina virtual de Squeak/Pharo) y Guacho (una herramienta para manipulación de objetos).

Luego de un aperitvo, los integrantes de la legión argentina (alrededor de 20 personas!!!) nos encaminamos hacia Plaza Cataluña para asi cerrar el dia entre copas y charlas de geeks.

🙂

Proyecto Seed (tercera parte)

En el post anterior nos habíamos quedado en: ¿que es lo mínimo que debemos poner dentro de la una imagen?

La respuesta depende de qué querramos hacer con la imagen. Básicamente podriamos decir que hay dos fines posibles:

– Cargar la imagen y trabajar creando instancias de las clases existentes, SIN agregar nuevas clases ni modificar las existentes.

– Idem caso anterior pero agregando capacidades para que la imagen pueda evolucionar incorporando nuevas clases. Para este caso es hay varias alternativas todas ellas partiendo del caso anterior y agregando por ejemplo un Compilador o algún componente capaz de cargar código binario (hay gente del equipo RMoD trabajando en esta última alternativa).

Casualmente esta mañana tuvimos una reunión en la que reorientamos nuestro enfoque y en este momento el plan es comenzar trabajando con el kernel definido por Pavel, analizarlo con algunas herramientas de análisis componentes y en base a eso identificar concretamente los cambios a realizar en cuanto a la estructura de paquetes y dependencias. El resultado de este análisis será un conjunto de backlog items para la una futura versión de Pharo (tentativamente la 1.2).

Bien, con este último post de esta serie de 3 doy por terminada la explicación de lo que intentamos hacer con el Proyecto Seed. En futuros post iré compartiendo los avances que tengamos.

Espero que se haya entendido.

Proyecto Seed (segunda parte)

Habiendo seteado algo de contexto en la primera parte ahora voy a hablar en concreto de lo que estamos haciendo en Seed. Arrancaré como bien dicen las practicas de proyectos por definir nuestra visión y misión.

Visión: Pharo cuenta con un kernel mínimo, límpio y extensible.

Misión: experimentar con distintas estrategias para crear un paquete que nos permita crear imagenes mínimas y customizables de Pharo.

Si bien esto parece bastante claro a estas alturas, las primeras 3 semanas de proyecto por momentos me sentí como turco en la neblina, pues había algunas cosas que no me cerraban. Al mismo tiempo, al comienzo nos dedicamos hacer algunas pruebas de concepto experimentado con los enfoques utilizados en otro proyectos y por momento era darse la cabeza contra la pared demasiado seguido. Por suerte, ya durante la cuarta semana de trabajo y luego de varias sesiones de peloteo con Stef y Marcus pusimos norte a nuestro barco definiendo el roadmap de trabajo.

Existen distintas posibilidades para atacar esta problemática, algunas de las cuales ya hemos descartado de entrada. Por ejemplo, hemos decidido manejar el mismo formato de imagen que Pharo, o sea, queremos seguir utilizando la misma máquina virtual (aunque no se decarta que en futuras versiones del proyecto se propongan cambios en la máquina virtual para así optimazar el funcionamiento del sistema).

Si pensamos en nuestro problema como «obtener una imagen tan chica como sea posible», básicamente existen 2 alternativas:

  1. Partir de una imagen existente y recortarla todo lo posible
  2. Partir de una imagen vacia y agregar lo mínimo necesario

Como se podrán imaginar, nosotros no somos lo primeros en atacar esta problemática, ya ha habido proyectos anteriores entre los que me parece importante destacar:

  • Chácharas: sin entrar en detalles, lo que hace es crear una imagen «vacia» y la va llenando en runtime y on the fly. O sea si cuando envia un mensaje a la clase X se intercepta la llamada, se chequea la validez del mensaje y si el mismo no se puede resolver se comunica con otro imagen e importa las clases que resulten necesarias para poder resolver la llamada. El detalle es que requiere de una máquina virtual modificada.
  • Gwen Bootstrap: este desarrollo lo hizo Gweneal Cassasio quien es también parte del equipo RMoD. Básicamente Gwen trabajó sobre Gnu-Smalltalk, modificó la máquina virtual y definió su propia imagen desde cero.
  • PharoKernel: este es un desarrollo de Pavel Krivanek quien a muy grandes rasgos tomó una imagen de Pharo y la entró a recortar y mediante prueba y error se aseguro que el subconjunto final era suficiente para cargar el sistema.

A diferencia de estos enfoques nosotros hemos decidido comenzar de una imagen vacia e ir agregando lo mínimo indispensable y al mismo tiempo de ir identificando «cosas sospechosas» para modificar en el proceso de creación de nuestra imagen.

Ahora: ¿qué es lo mínimo? Ja! ¡Que buena pregunta Mario! La respuesta queda para la próxima entrega porque no es trivial y va a requerir unas cuantas líneas.

Continuará…

Proyecto Seed (primera parte)

Finalmente después de un mes de trabajo voy a intentar explicar sintéticamente en que consiste el proyecto en el qué me encuentro trabajando. Pero dado que para entender lo que estamos intentando hacer es necesario cierto conocimiento de Smalltalk, he decidido dividir esta explicación en 2 partes. En esta primera parte voy a explicar algunas cosas básicas (o mejor dicho históricas) de Smalltalk. En la segunda parte voy a ahondar en la problemática de nuestro proyecto y en  los distintos enfoques que analizamos.

Smalltalk a diferencia de la mayoría de los lenguajes actuales, ofrece un desarrollo basado en una imagen. Esto es: al programar uno no manipula archivos de texto con código fuente, sino que el código es manipulado en el contexto de una imagen de memoria que contiene toda la definición del sistema, o sea sus clases y sus correspondientes instancias. Esta imagen es ejecutada por una máquina virtual, y en este punto sí es como Java, C# y algunos otros lenguajes actuales.

Si bien existen distintas implementaciones de Smalltalk (Gnu Smalltalk, VisualWorks, Squeak, Dolphin, Pharo, etc), todas ellas están basadas en la especificación del Blue Book, publicado a comienzo de los años ’80.

Todo sistema Smalltalk consta de dos componentes, una máquina virtual y una imagen. Una máquina virtual puede interpretar un formato específico de imagen. En el caso particular de Pharo, el formato de imagen es compatible con el formato de Squeak, porque en cierto modo Pharo surge inicialmente como un «branch» de Squeak.

La evolución de Smalltalk y en particular de Squeak/Pharo a lo largo de más de 20 años ha consistido en modificaciones «relativamente menores» en la máquina virtual y en la imagen. Y quiero que nos detengamos en algo, la imagen de Squeak se generó UNA vez, hace unos cuantos años escribiendo byte a byte según lo que esperaba la máquina virtual, de ahí en más la evolución ha consistido en modificaciones de esa primera imagen a partir de agregar/quitar/modificar clases, métodos e instancias. Si tenemos en cuenta que la imagen original data de una época en que la orientación a objetos recién daba sus primeros pasos, no es raro que al examinar el kernel de la imagen (clases Behavior, Class, Object, etc) nos encontremos con algunas cosas sospechosas desde el punto de vista de la orientación a objetos y la separación de incumbencias (dependencias poco felices, muuuuchos métodos dentro de una misma clase, métodos deprecados, etc, etc ).

Hasta aquí los conceptos, en la segunda parte entraré en cuestiones concretas del proyecto.

Algunas breves

Sinceramente tenía pensado escribir mucho más seguido durante estos meses, pero resulta que me cuesta encontrar tiempo para escribir. En general salgo de la universidad alrededor de las 5 y luego suelo recorrer la ciudad y me siento a tocar la guitarra en algún lugar tranquilo como La Ciudadela o el parque que está a un par de cuadras de mi departamento. Pero resulta que hoy se me terminaron de acumular más de 5 temas sobre los cuales escribir, así que decidí dedicar un tiempo y comenzar a ponerme al día.

Tema 1: Twitter

Un amigo me comento que dejó de lado su blog para escribir en twitter dado que cada entrada tiene máximo 140 caracteres, es muy rápido postear. Asi que siguiendo su consejo, abrí una cuenta hace poco más de un mes, pero sinceramente hasta el momento la he utilizado muy poco, aunque espero darle más vida de ahora en más. Con lo cual los interesados pueden encontrarme en https://twitter.com/inicopaez

Tema 2: Reciclado de pilas

Por estos días Greenpeace Argentina se encuentra llevando a cabo una campaña de reciclado de pilas. Este es un tema que siempre me ha inquietado, recuerdo en los ’90 andar todo el día con mi walkman Sony que comía pilas como lima nueva y guardar las pilas usadas en un caja para llevarlas a reciclar una vez al año. En esta ocasión, la campaña apunta a que las empresas fabricantes de pila se hagan cargo del reciclado, lo cual me suena muy lógico. Los interesado en sumarse a esta campaña pueden hacerlo siguiendo este link.

Tema 3: Smalltalks 2010

Esta cuarta edición de la Conferencia Argentina de Smalltalk se llevará a cabo del 11 al 13 de Noviembre en la UTN de Concepción del Uruguay (Entre Ríos). Hasta el 7 de septiembre se encuentra abierto el Call for Papers. Voy a intentar enviar una propuesta contando lo que estamos haciendo en el proyecto, pero depende de cuanto logremos avanzar en próximas dos semanas.

Esto es todo por ahora, los temas 4 y 5, merecen un post individual cada uno.

Nuevo proyecto

Esta semana empecé a trabajar en el proyecto que me va entretener durante los próximos 3 meses. En forma resumida voy a estar trabajando junto al equipo de investigación RMod del Inria, experimentando con algunas ideas para optimizar el proceso bootstrap de Pharo.

Durante esta primer semana de proyecto estuve haciendo algunos ejercicios para familiarizarme con el metamodelo de objetos y alinearme con la vision que el equipo tiene sobre la problemática a resolver. Ha sido una semana de pleno aprendizaje, pues el conocimiento que tengo de Smalltalk es desde el punto de vista del usuario y como tal nunca tuve la necesidad de trabajar a bajo nivel. Un punto interesante es que a pesar de estar trabajando a bajo nivel (estoy trabajando directamente en el kernel) sigo trabajando con código Smalltalk, dado que el trabajo es dentro de la imagen y no a nivel de máquina virtual (lo que implicaria trabajar con C).

No estoy seguro si lo mencioné en algún post anterior (me parece que no), pero para realizar este trabajo me transladé a Lille, una ciudad en el norte de Francia que según los locales, es la sexta ciudad en importancia de Francia y la segunda en cuanto a cantidad de estudiantes (no si esto será efectivamente así, pero es en verdad sorprendente la cantidad de residencias para estudiantes que hay a lo largo de la ciudad). Obviamente como podrán imaginarse intentaré aprovechar mi estadia para conocer las ciudades aledañas dado que aquí en Europa todo está cerca.

Para ir cerrando les dejo aquí algunas fotos que tomé ayer a la pasada mientras caminaba por el centro de la ciudad.

Nuestra presentación en Smalltalks 2009

El pasado viernes junto a Carlos presentamos el trabajo que estamos haciendo en algo3. En la sesión hubo unas 50 personas. Comenzamos la sesión presentando el contexto en el cual dictamos la materia, luego Carlos explicó el régimen de cursada y la forma en que se encara la parte teórica de la materia, después de eso yo expliqué el enfoque utilizado en la práctica, donde a mi parecer lo más interesante es el uso de alguna prácticas ágiles como TDD, desarrollo iterativo, pair programming, collective ownership e integración contínua.

Durante la presentación tuvimos algunas consultas de la audiencia . En una de ellas un asistente comentó que el pedirles a los alumnos un informe con la explicación del TP realizado le parecía «anti» ágil, pues los métodos ágiles prefieren código corriendo en lugar de documentación. La realidad es que tengo 2 respuestas para esto:

  1. Los métodos ágiles no dicen que no haya que documentar, sino que es más importante la aplicación funcionando y en nuestro caso pedimos la aplicación funcionando y ADEMAS un informe de cómo fue resuelta la problemática (en ese orden de prioridad).  Nota: próximamente voy a escribir un blogpost sobre agilidad y documentación pues creo que hay un mal entendido general de este tema)
  2. En el contexto de la materia enseñamos a desarrollar software, lo cual es más ámplio que la mera escritura de código, los alumnos deben entender el problema a resolver, tomar decisiones de diseño y comunicarlas. Un diseño por más bueno que sea, si no es bien comunicado puede traer muchas complicaciones a futuro. Es por esto que hacemos incapié en la aplicación funcionando y TAMBIEN en las pruebas unitarias y el informe como dos herramientas para comunicar el diseño.

Otro comentario que tuvimos fue tal vez la gran cantidad de herramientas y contenidos vistos podian restar importante cantidad de tiempo para el correcto aprendizaje del paradigma y junto con esto nos proponian dar todo la materia sólo con Smalltalk. Personalmente no comparto esta visión y creo justamente la variedad de herramientas vistas permite a los alumnos una mejor comprensión del paradigma.

Como de costumbre al finalizar la sesión pedí feedbak a los asistentes utilizando la técnica de las caritas ( 🙂  😐  😦 ). Comentí el error de no dejar en claro si el feedback era sobre la calidad de la sesión o si era una opinión sobre el enfoque presentado. Algunos dieron su opinion sobre ambas cosas, pero la mayoria no. Más allá de este detalle el resultado fue: 80% 🙂  20% 😐

Después de la sesión estuvimos hablando con varios docentes de universidades de la patagonia y de UTN quienes se mostraron interesados con el enfoque presentado.

Personalmente estoy muy conforme con la presentación y muy contento con el enfoque que estamos utilizando.

La presentación completa fue grabada por los organizadores del evento y próximamente está disponible (seguramente en el site de la conferencia). Mientras tanto para los interesados el slide deck utilizado esta disponible aquí (inglés) y también puse una versión en castellano aquí.

 

Smalltalks 2009 conference

During 19, 20 and 21 of November took place in Buenos Aires the 3 rd Argentine Smalltalk Conference. Among many international visitors there were Dan Ingalls (one of Smalltalk’s creators) and Stephane Ducasse (author of the famous book: Squeak By Example, and creator of Pharo).badge

The conference’s opening was in charge of Hernan Wilkinson, and inmediatly after him, Ducasse gave his session titled: I have a dream…. let’s make it come true. It was a really interesting session where Ducasse shared the vision that lead him to start Pharo project. Other interesting session were James Foster’s Introduction to Gemstone, Smalltalk in the pocket by Esteban Lorenzano (who talk about building applications for the iPhone) and 40 years of Fun with computers by Dan Ingalls. This last session was a review of the main projects Dan participated during his life. He finishes the session showing us his current work at Sun Microsystem developing the Lively Kernel (something VERY interesting I will be writting in short.)

My session was on Friday 20 th and I shared the stage with Carlos Fontela (my Senior Faculty). There were about 50 people!! a number over our expectations.  We talked about our experience at FIUBA, teaching object-oriented programming using Smalltalk, Java and agile practices. The slide deck used in the session is available here. And if you want to know more about our sesion I will be writting some more details in my Spanish blog.

Enjoy it!

Smalltalks 2009, calendario publicado

Desde hace un par de dias se encuentra publicado el calendario de la conferencia. Entre las sesiones que parecen más prometedoras a mi parecer (más allá de las sesiones de los invitados especiales) están la de Esteban Lorenzano, sobre desarrollo de aplicaciones para IPhone y  la Germán Arduino sobre Smalltalk Web Toolkit.

En cuanto a mi sesión, la misma fue confirmada para el viernes 20 a las 14 hs, a los interesados en conocer el enfoque que estamos aplicando en Algo3, ¡allí nos vemos!

Smalltalks 2009 (¡seré speaker!)

Del 19 al 21 de noviembre se llevará a cabo en la Facultad de Ciencias Exactas y Naturales (UBA) la tercer conferencia argentina de Smalltalk: Smalltalks2009. Esta edición contará la presencia de varias personalidades entre las que se destacan Dan Ingalls y Stephane Ducasse. Adicionalmentecomo  indica el título del post, voy a ser uno de los speakers de la conferencia, donde junto a Carlos vamos a estar contando lo que estamos haciendo en Algoritmos 3.

Aún no está confirmado el horario de la presentación, pero si quieren ver un abstract de lo que hablaremos, les dejo este link.

¡Nos vemos allí!