viernes, 15 de octubre de 2010

Entrevista sobre por qué Smalltalk es tan importante en Argentina

Este año durante ESUG, nos hicieron una entrevista a Leandro Caniglia y a mi sobre por qué creíamos que Smalltalk era tan importante en Argentina.
Pueden verla en http://blip.tv/file/4211623/
Por supuesto que es una visión subjetiva de los motivos, pero espero que les guste.

jueves, 14 de octubre de 2010

TDD en lenguajes estáticamente tipados y dinámicamente tipados

Subí un video que compara cómo se comporta la técnica de Test Driven Development (TDD) utilizando lenguajes estáticamente tipados (en este caso Java) y dinámicamente tipado (en este caso Smalltalk). El video está divididó en dos partes:

1) http://www.youtube.com/watch?v=RLAZjiK4UHc
2) http://www.youtube.com/watch?v=wXW9WN9ay2E

Traté de ser lo más objetivo posible. Por supuesto, es solo un experimiento y no se puede inferir todas las diferencias que ya conocemos entre estos tipos de lenguajes, pero sí puede servir como punto de partida para investigar un poco más el tema.
Espero que les gusten las conclusiones :-)

martes, 12 de octubre de 2010

Entrada gratis para el curso de TDD!!

Vamos a sortear una entrada gratis para el curso de TDD (http://tinyurl.com/25n4zwq) este jueves 14 en http://tinyurl.com/2du3yox
Aprovechen!

martes, 5 de octubre de 2010

TDD practicado en lenguajes dinámicos vs. lenguajes estáticos

eEte jueves 7 de octubre a las 18.30, en el grupo argentino de Ruby en Urban Station, El Salvador 4588 en Palermo Soho voy a dar una charla sobre TDD practicado en lenguajes dinámicos vs. lenguajes estáticos. Acá está la breve descripción:
La charla se centra en mostrar las diferencias esenciales que surgen al utilizar la técnica de Test Driven Development (TDD) en lenguajes dinámicos como Ruby respecto de lenguajes estáticos como Java.
Se hará una pequeña introducción sobre TDD y una demostración en vivo de las diferencias utilizando para ello otro lenguaje dinámico, Smalltalk, antecesor de Ruby y Java como lenguaje estático.
Los espero!

lunes, 27 de septiembre de 2010

Smalltalks 2010 - Declarado de Interés Provincial

La provincia de Entre Ríos declaró de Interés Provincial a la 4ta conferencia de Smalltalk en Argentina, Smalltalks!
No se imaginan lo contento que estamos!! Por más que sea una cuestión formal, es una gran reconocimiento hacia el evento, la comunidad de Smalltalk en Argentina y Smalltalk, así que estamos más que contentos!

miércoles, 22 de septiembre de 2010

Smalltalks 2010 - Inscripción abierta!!

Ya está abierta la inscripción para Smalltalks 2010! pueden registrase en http://www.fast.org.ar/
Este año lo hacemos en Concepción del Uruguay, Entre Rios, a solo 3 horas de Buenos Aires. Estamos arreglando descuentos con hoteles para aquellos que lo necesiten.
Además tenemos confirmada la visita de Lukas Renggli (creador de SeaSide entre otras cosas) y Gilad Bracha (creador de Newspeak). Tenemos un par de personalidades más en tratativas, así que no dejen de anotarse y presentarnos sus trabajos, va a ser una conferencia muy interesante!

martes, 7 de septiembre de 2010

Curso de Test Driven Development para todos!

Tengo el agrado de notificarles que está abierta la inscripción a uno de los cursos de Test Driven Development (TDD) que ofrecemos en 10Pines, el cual se denomina “Construcción de Software Robusto con Test Driven Development” a realizarse a partir del 15 de noviembre del corriente año.
Test Driven Development (TDD) es una de las prácticas ágiles que más adopción tuvo dentro de la comunidad de desarrollo de software debido a su simplicidad como proceso y efectividad directamente relacionada con la calidad del sistema generado. TDD ayuda a producir diseños más simples y menos acoplados, creando al mismo tiempo un gran conjunto de test que nos dan “coraje” al momento de realizar cambios o incrementar la funcionalidad de un sistema. Hay estudios que muestran que usando TDD, la tasa de error de los sistemas disminuye 10 veces aumentando al mismo tiempo la satisfacción laboral y técnica de los desarrolladores.
El curso, de 16 hrs, posee una breve introducción teórica para luego concentrarse en ejercicios prácticos especialmente preparados para que los asistentes aprendan la técnica.
Pero como el nombre del curso lo indica, este no se centra únicamente en TDD sino en la construcción de software robusto, por lo tanto además de aprender la técnica de TDD, se realizarán discusiones enriquecedoras de diseño y arquitectura que les permitirá complementar, validar y aumentar tus conocimientos sobre el desarrollo de software utilizando objetos.
Para más información sobre los objetivos, días, disponibilidad y costos del curso, hace click acá: Construcción de Software Robusto con Test Driven Development

Los espero!

lunes, 30 de agosto de 2010

Por qué las base de datos relacionales van a desaparecer

Si, si, es una predicción medio loca y hasta pareciera absurda dado el estado actual de tecnologías, pero hay mucho indicios que me llevan a pensar lo que puse en el título.
En realidad, son todos indicios tecnológicos y no de negocios, pero como nuestra profesión se basa en la tecnología creo que en algún momento se hará fuerte una tecnología que desplazará a las base de datos relacionales de la misma manera que ellas desplazaron a los archivos jerárquicos (como vsam, etc).
Lo que me llevó a pensar esto nuevamente es un proyecto en el cual estoy haciendo coaching en el cual estamos usando Java como lenguaje de programación y Hibernate para conectarnos a una base de datos relacional. Hubo dos "colaboraciones" que me hicieron recordar lo antiguo de esta tecnología:

1) Cada vez que se quiere persistir un objeto, hay que hacer: session.save(anObject)
2) Cada vez que se quiere borrar un objeto, hay que hacer: session.delete(anObject)

¿Qué tiene de malo tener que hacer esto? Simplemente que en otras tecnologías no es necesario hacerlo! por lo tanto son más simples desde el punto de vista de utilización lo que implica que son menos propensas a error.
Para el caso 1), en una tecnología como la que usa GemStone, no es necesario decirle a un objeto que quiero que se persista, simplemente si ese objeto es referenciado desde un objeto persistido, este se persiste. Simple, natural, lógico.
El caso 2) es quizá el más fuerte puesto que me hizo acordar al manejo de memoria manual, ¿recuerdan c++, tener que hacer "delete anObject" para desalocarlo y todos los problemas que ello conllevaba? Acá estamos en el mismo caso, utilizar base de datos relacionales es como utilizar un manejo de memoria manual algo que por suerte ya está abandonado (salvo para casos muy particulares). ¿Por qué tenemos que borrar un objeto explícitamente cuando el mismo puede desaparecer automáticamente, como cuando se realiza un garbage collect?. Por suerte ya hay tecnologías que hacen esto (de vuelta GemStone) y "borran" objetos cuando los mismos no están más referenciados. Simple, natural, lógico.
Creo que estos dos casos son indicios que muestran que trabajar con base de datos relacionales en algún momento tiene que cambiar. En algún momento nos tenemos que dar cuenta que trabajar con ellas es trabajar en un paradigma "viejo", similar al procedural donde se separan "datos" de "código", en vez de utilizar un paradigma que ya está probado ser más robusto y escalable para desarrollo de aplicaciones como el de objetos.
Claro está que la base de datos relacionales tienen sus ventajas. Por ahí la más fuerte desde el punto de vista tecnológico es el SQL, pero al mismo tiempo para mi es su cruz, es lo que no va a permitir que la tecnología evolucione, cambie paradigmáticamente. Y por supuesto no hay que dejar de ver la fuerza comercial que ellas tienen, pero como dije antes, en algún momento la comunidad estará preparada para algo nuevo, distinto, cuando se cansen de tener que hacer save y delete y se den cuenta que si en memoria no hay que hacer eso, ¿por qué hay que hacerlo con el disco?, en definitiva el disco es "memoria" y debería estar abstraído (salvo cuando hay que hacer aplicaciones que deben diferenciarlos :-) ).
Claro está que a los dos problemas que mencioné hay que agregar varios más, como el problemático mapeo, manejo de identidad, manejo de caching y unicidad, etc., problemas que en otras tecnologías no existen...
Para concluir, ¿cuándo pasará esto? No creo que rápidamente... de la misma manera que a las base de datos relacionales les costó desplazar a los archivos planos y jerárquicos, no será inmediato reemplazar a estas. Por ahí en 10 años se empiece a divisar y entender que hay una alternativa a ellas, no creo que antes, a menos que aparezca un player nuevo en la comunidad, un player que sea respetado y tenga fuerza y logre imponer el quiebre paradigmático... por ahí ese player puede ser VMWare si se da cuenta del productozo que compró (GemStone), pero habrá que ver si sus "gurús" logran salirse del paradigma actual y ver más allá... el tiempo dirá.

domingo, 29 de agosto de 2010

¿A quién le creo?

Este comentario no tiene nada que ver con objetos ni sistemas, sino más bien con la realidad que nos está golpeando a los argentinos respecto de los medios de comunicación.
El viernes mientras caminaba hacia un cliente para dar un coaching de TDD me encontré con un kiosko que tenía a los diarios Clarín y Tiempo Argentino juntos, motivo por el cual pude observar una contradicción impresionante sobre la misma noticia en la primera plana de ambos diarios.
Clarín decía: "Papaleo declaró que estaba libre cuando vendió Papel Prensa". (ver http://www.clarin.com/ediciones-anteriores/edicion-impresa/20100827)
Tiempo Argentino decía: "Papaleo ratificó que entregó Papel Prensa bajo presión" (ver http://tiempo.elargentino.com/ediciones/2010-08-27/notas)
¿Quién dice la verdad? Clarín? Tiempo Argentino? Ninguno? o los dos? ¿Qué contradicción no?.
Sinceramente no me inclino por Clarín, ya se han visto tantas manipulaciones que realizó que seguro esta es otra más. ¿Qué ha acerca de Tiempo Argentino? Es oficialista y nos han hecho creer que generalmente ser oficialista está mal y que los políticos siempre mienten, ah, pero claro, los que nos han metido en la cabeza eso fueron los periodistas (y también bastante los políticos con su actuar realmente)... ¿entonces?...
Finalmente me quedo con lo que me recordó mi viejo hoy por la mañana: "En una guerra la primero que pierde es la verdad"... creo que este es un ejemplo claro.

viernes, 6 de agosto de 2010

Tributo a Alan Kay en su cumpleaños 70

La gente de ViewPoints ha publicado un libro (que se puede bajar on-line) como tributo a Alan Kay en el cual personas que trabajaron con él escribieron un capítulo cada uno. Hay varios capítulos interesantes como por supuesto el de Adele Goldberg, con un poco de historia también... Por ejemplo no sabía que el primer "cliente" comercial de Smalltalk fue la CIA!!! jaja, increíble... menos mal que no lo siguieron usando o por lo menos no sabemos si lo siguen usado... o por ahí el motivo por el cual Smalltalk no creció más fue por que la CIA no quizo!! claro! por fin lo entiendo :-) y bue, la teoría conspirativa siempre tiene que estar presente :-)

miércoles, 4 de agosto de 2010

Working effectively...

with legacy code... Ese es el nombre de un libro que estuve hojeando (últimamente me cuesta mucho leer libros técnicos, me aburren!! lo cual no es un buen sintoma...) que está interesante, es recomendable pero que muestra nuevamente la cantidad de problemas que surgen en el mantenimiento de sistemas desarrollados con lenguajes estáticamente tipados.
Básicamente, el mayor problema es el acoplamiento que produce tipar las variables lo cual impede al momento de tener que escribir tests para código existente utilizar objetos que simplemente sean polimórficos con los objetos reales pero solamente para el conjunto de mensajes que se le envían y no para todo el protocolo declarado en el tipo!
Si, ok, están los mock objects y sus librerías para hacer su uso más fácil, pero igual sigue siendo más laburo del necesario o por lo menos del que llevaría en un lenguaje dinámicamente tipado como Smalltalk...
Por último, el libro muestra muchos errores de diseño típicos muy interesantes que haciendo TDD desde el comienzo no se cometerían que nuevamente tienen que ver con lograr diseños más desacoplados, algo que venimos comentando en nuestro curso de TDD desde que empezamos.

Para los que aman la historia de nuestra profesión...

como yo, salió una entrevista a Edgar Dijkstra realizada en el 2001 en la última Computer. La verdad, muy recomendable para conocer un poco más sobre el principio de nuestra profesión con comentarios sobre Algol-60, Peter Naur, Hoare, N. Wirth (y su relación con el paper de GOTO Considered Harmfull)... y como no podía faltar, la comparación USA/Europa que propició el comentario de Alan Kay en su Turing Award Lecture.
La entrevista completa está online para todos en: http://www.cbi.umn.edu/oh/display.phtml?id=320

martes, 22 de junio de 2010

Smalltalks 2010 Research Track: Call for Papers

Con esto, queda oficialmente anunciado el congreso Smalltalks 2010!!!
Este año lo haremos en la UTN de Concepción del Uruguay, Entre Rios.
Estamos muy contentos de poder hacerlo ahí, una facultad que ha hecho mucho por Smalltalk y ha traido mucha gente a todos los congresos, y estamos muy contentos de poder hacerlo en otra ciudad que no sea Buenos Aires puesto que nuestro objetivo es llevar Smalltalk a todo el país.
Por favor! miren que comité tenemos!!! la put... una maravilla (todo laburo de Gabriela Arevalo, grande Gaby!!)
Para la gente de Buenos Aires, les comento que estamos trabajando para hacer que el viaje y hospedaje sea factible para todos.
Personalmente creo que esta bueno salir un poco de la "gran ciudad", conocer otros lugares de nuestro país y apoyar la difusión de Smalltalk de esta manera, espero que puedan apoyarnos en esta iniciativa!
--------------------------------------------------------------------------------------------
CALL FOR PAPERS

SMALLTALKS 2010
4th Argentinian Smalltalk Conference
Research Track: Call for Papers
November 11th – 13th, 2010
Important dates:
Submission (Hard Deadline): September 7th, 2010 (Argentinian time: UTC/GMT
-3 hours).
Notification of acceptance: October 6th, 2010.
Camera Ready Submission: October 20th, 2010.
---------------------------------------------------------------------------------

Conference Site: Universidad Tecnológica Nacional (UTN), Concepción del
Uruguay (Entre Ríos, Argentina)

In the past three years the Smalltalks series of conferences (www.fast.org.ar)
have been a lively forum on Smalltalk-based software technologies that
attracted over more than 200 people from both academia and industry for
three days.

During the first three conferences, the industrial partners showed the
applicability of Smalltalk in business, while researches (both students and
professors) showed their advances and didactic uses of Smalltalk. The
presented
approaches and methodologies concerned the language, its implementation
technology, its programming tools as well as the software development
culture it supports.

This year the accepted papers not only will be available in the website but
also the best ranked ones will be published in a special edition of Elsevier
COMLAN Journal. Thus, we invite to submit papers in the research track on
original scientific research conducted in and/or for Smalltalk in general.

Topics of interest include, but are not restricted to:

• Aspects, Aspect Languages and Applications.
• Ambient Intelligence, Ubiquitous / Pervasive Computing and Embedded
Systems.
• Compilation Technology, Optimization, Virtual Machines.
• Educational Material.
• Language Engineering, Extensions.
• Model Driven Engineering / Development.
• Meta-Modeling, Reflection and Meta-programming.
• Programming in the Large, Design, Architectures and Components.
• Programming Environments, Browsers, User Interfaces, UI
Frameworks.
• Reasoning About Code (Analysis, Refactoring, Type Inference,
Metrics).
• Team Management.
• Testing, Extreme Programming / Practices.
• Web Services, Internet Applications, Event-driven Programming.
• Experience Reports.

Important dates:

Submission (Hard Deadline): September 7th, 2010 (Argentinian time: UTC/GMT
-3 hours).
Notification of acceptance: October 6th, 2010.
Camera Ready Submission: October 20th, 2010.

Papers:

Papers should be written in English, in pdf-format and not exceed 15 pages
(including references and figures), using Elsevier journal format.

Templates for LaTeX formats can be found at
http://www.elsevier.com/wps/find/authorsview.authors/elsart

Papers must be submitted through the EasyChair submission web site at
http://www.easychair.org/conferences/?conf=smalltalks10
The accepted papers will be digitally available in the conference website.
From accepted papers, selected ones will be published in a special edition
of Elsevier COMLAN Journal.

Papers submitted must not have been previously published and must not be
under review for publication elsewhere. Papers must strictly adhere to
submission guidelines. If you have questions, please send an e-mail to
Marcus Denker and Gabriela Arévalo to smalltalks2010-chair@fast.org.ar using
[Smalltalks2010-RT] as tag in the e-mail subject.

Program Committee
--------------------------
• Alexandre Bergel (DCC, Universidad de Chile, Chile)
• Noury Bouraqadi (Ecole des Mines, Douai, France)
• Gilad Bracha (Ministry of Truth, USA)
• Johan Brichau (Inceptive.be, Belgium)
• Johan Fabry (DCC, Universidad de Chile, Chile)
• Alejandro Fernandez (LIFIA - Facultad de Informática – UNLP,
Argentina)
• Tudor Girba (Sw-eng. Software Engineering GmbH, Switzerland)
• Andy Kellens (SOFT, Vrije Universiteit Brussels, Belgium)
• Michele Lanza (University of Lugano, Switzerland)
• Adrian Lienhard (SCG, University of Bern, Switzerland)
• Damien Pollet (INRIA / Université de Lille 1, France)
• Lukas Renggli (SCG, University of Bern, Switzerland)
• David Röthlisberger (SCG, University of Bern, Switzerland)
• Tom Van Cutsem (SOFT, Vrije Universeit Brussels, Belgium)

Program Chairs
--------------------
• Marcus Denker (INRIA, Lille, France)
• Gabriela Arévalo (Universidad Austral, Buenos Aires, Argentina)

lunes, 15 de marzo de 2010

Conclusiones sobre el Open Agile del Sabado

Este sábado fui al open agile que se realizó en el centro cultural Borges y del cual 10Pines fue auspiciante. Personalmente me gusta mucho la dinámica de los "open space", se logran charlas muy interesantes y todos aportan su conocimiento, si nunca fueron a un evento de este tipo, les aconsejo por lo menos ir una vez para ver cómo se realiza.
Respecto de la parte técnica del evento, saqué un par de conclusiones que quería compartir:
1) Me llamó la atención la confusión que existe entre TDD y test. Vi que hay muchas personas que creen que TDD es la única solución de test y lo quiren usar para resolver todos los problemas como la generación de UI, configuración de sistemas, etc. Sin embargo TDD implica desarrollo de software y no solo eso, implica escribir el test primero, por lo tanto testear la UI no es hacer TDD porque para poder hacerlo es necesario tener la UI por lo que no se escribe el test primero. Testear la configuración de un sistema no es TDD puesto que no se está desarrollando nada, etc. En conclusión TDD es una técnica más que entre otras cosas ayuda a testear, pero no es la única técnica de testing.
2) Me sorprende cómo cuando se habla de buen diseño la gente relativiza tanto el término "buen", hasta el punto donde puede ser "mal" y no hay problema. Esto es algo que me ha pasado en otros ámbitos y la facultad también, pareciera que el diseño de una aplicación puede ser cualquier cosa y hablar de "buen diseño" no tiene sentido. Yo soy completamente contrario a esa opinión. Para mi existen buenos y malos diseños y se pueden determinar en base a un conjunto de criterios bien establecidos que tienen que ver con aquellos que atacan la esencia del software y su desarrollo. Cuestiones como mantenibilidad, representabilidad, semántica, etc. son características esenciales del software que definen que tan bien o no está diseñado. Por último existe un conjunto de características no esenciales en la cual el diseño puede diferir fuertemente, como performance, usabilidad, etc. y donde creo que si se puede relativizar un poco más que es bueno o malo puesto que son características más contextuales que esenciales
3) Cada vez me lamento más que Kent Beck haya llamado a SUnit así. En realidad me lamento la parte de Unit puesto que a partir de esto se relaciona TDD únicamente con test unitarios y hay mucho más que test unitarios en tdd. Los test pueden ser bien funcionales, pueden ser user stories, se puede usar xUnit para escribir test de programación o diseño que nada tienen que ver con que sean "unitarios"... en fin, una lástima la confusión que se genera por este nombre.