17th July 2008

Subclipse not working after Sourceforge SVN migration

Today Yesterday we’ve had a really busy day fixing obscure bugs in order to prepare the next release of the Contract core components. What we didn’t know was that the Sourceforge.net SVN migration was scheduled for yesterday. 12 hours of read-only access has been really painful, mainly concerning concurrent development.

However, after the migration finished, I still couldn’t commit the huge amount of changes I had done through the day. In fact, it was giving me the same error as during the whole day:

svn: Commit failed (details follow):
svn: Commit failed (details follow):
svn: MKACTIVITY of ‘/AgentWS/!svn/act/f371347b-0541-0410-8082-ddb3ab739141′: 403 Forbidden (https://ist-contract.svn.sourceforge.net/svnroot/ist-contract)

I even checked with a different SVN client and I could perfectly commit with no problem. Looking for a solution in Google didn’t help very much and I started panicking over the idea of having to check everything out in a separate project (or workspace) and remake all the changes. My sources in Eclipse didn’t even get updated with the changes I had made with the SVN client.

But then, the miracle. After checking out in a blank workspace, I switched back to the faulty one to start checking which files were changed. I don’t know exactly why, but I tried updating a project… and it worked!!!

Don’t ask me how and why these things happen, or if it’s even something only related to Subclipse. I am too tired right now to think on a logical conclusion. Probably it has to do with the host certificate or something like that but, in any case, these things can really spoil a mood in case of bad luck or a solution misleading. Anyway, software developing wouldn’t be so interesting without this kind of nonsense problems, would it?

Just kidding.

posted in Cahiers de l'Informatique | 3 Comments

15th July 2008

The intelligent i-Walker

In the same office we work at, we have the SHARE-it guys. The main purpose of this project is to design and implement AI systems that help people with disabilities, as the acronym indicates: Supported Human Autonomy for Recovery and Enhancement of cognitive and motor abilities using Information Technologies.

This definition, as always, seems quite abstract, but they are already showing stuff that will be really useful. The underlying IA system will allow for the creation of intelligent software and hardware to assist disabled people, specially elders.

SHARE-it IA infrastructure

One of these devices is the i-Walker, an intelligent walker that is location-aware, and assists the patient in moving, for example, through a house or a hospital. The user can interact with an interface plugged into the walker using verbal commands, and its levels of autonomy can be adjusted for a better experience. The same concepts will be applied to a wheelchair.

Other devices that will be built on top of the IA system include an RFID bracelet which collects information about the movements made and the objects around the user. With this information, a PDA will be able to act as a personal agenda, predicting the needs of the user and the recommended actions to take (e.g. it’s time to take the pills).

This running project not only looks good from the research perspective but also seems to have real useful application. In fact, along with one of its leaders, Ulisés Cortés, SHARE-it has started to have a deserved media exposure.

posted in Cahiers de l'Informatique | 0 Comments

23rd May 2008

Trip to AAMAS 2008

Last week some of the KEMLg guys (Roberto, João, Javier, Guiem and I) spent some days in Estoril, attending the Autonomous Agents and Multi-Agent Systems (AAMAS) conference. It’s been the first time I go to such a big conference, with around ~450 participants.

One could think that an event of this sort can be quite boring. Well, at some specific sessions I got really bored, but attending the whole conference has really paid off. Many papers and specially the invited speakers have been quite interesting. In fact, the research field is very very broad at the moment and there are many topics that are worth checking. If I manage to get some time, I will try to post a review of the advances that seemed more interesting to me.

Concerning our participation, we all presented our papers on the Monday workshops (AHC and SOCASE). It was a funny experience, once we have gone through it. However, we have set ourselves the objective of getting papers accepted for the main conference ;)

The end of a (very) long day

Also, all the Contract presentations in the SOCASE workshop and the Industrial Track had a good attendance and a lot of feedback, and even opened the chance of collaborating with other business process and service contract related projects. It seems that the results of the project will have a fair amount of impact.

Anyway, the best part came after the conference finished, when I went to Porto and spent some days of relax thanks to the priceless hospitality of João. But that’s a different topic :) I have opened a Flickr set of the trip.

posted in Cahiers de l'Informatique | 1 Comment

15th April 2008

Un juguetito nuevo: el Lego Mindstorms

A principios de mes, Albert y yo nos agenciamos un juguete nuevo: el Lego NXT Mindstorms

La caja sin abrir del Lego MindstormsEl contenido de la caja del Lego MindstormsEl Tribot Lego Mindstorms

Habíamos estado mirando vídeos y alucinando con lo que se puede hacer con él, pero después de hacer un par de pruebas, parece incluso mejor de lo que parecía.

El Tribot, el ejemplo que viene en el manual y que se puede hacer en media hora, no está nada mal, pero está un poco limitado. Aquí tenéis un vídeo bastante cutre que muestra el Tribot moviéndose de manera aleatoria:

Ahora nos toca diseñar por nuestra cuenta una estructura suficientemente genérica como para implementar varias ideas que tenemos sin tener que tocarlo demasiado, y que además sea estable. Lo más probable es que acabemos haciendo algo parecido al Giant Wheel:

Está a años luz de hacer cosas espectaculares como el Rubik Cube Solver, pero ya llegaremos, pasito a pasito.

El Mindstorms viene con un firmware que admite programas hechos con un IDE hecho por Lego, pero ahora mismo estamos utilizando LeJOS que incluye un compilador de código en Java. Ya convenceré a Albert para probar la API para Ruby ;) Quién sabe, a lo mejor hasta le metemos un sistema de razonamiento de IA basado en BDI.

En fin, que después de haberlo probado, la compra no parece nada insatisfactoria. Si alguien se anima a sugerir alguna idea, o incluso se quiere apuntar a hacer algún día geek intensivo para probar locuras con el robotito, será bienvenido :D

posted in Cahiers de l'Informatique | 3 Comments

15th April 2008

¿Ruby o Python? Pues lo mismo da… mientras no sea Java

Durante las últimas semanas nos hemos cansado de patear Internet, intentando decidir un lenguaje de programación para un proyecto considerablemente grande. Conclusión: será Ruby o Python.

Hasta ahora había usado Java principalmente, tanto para cosas sencillas como para cosas complejas. De hecho, siempre había pensado que era un lenguaje bastante decente. Ja.

Puede que para proyectos pequeños sea un lenguaje incluso simpático, aunque obligue a escribir demasiado código comparado con otras opciones. Pero para proyectos grandes, donde debería ser el lenguaje dominante, es algo mastodóntico que no hay por dónde coger.

Es como cuando te tienes que enfrentar con la suegra. Sabes que la tienes que tratar bien, porque si no, te van a dar bien por el buffer. Pero lo mismo da, ya que por mucho que lo hayas intentado, las hostias te van a caer igualmente y probablemente tú no tengas la culpa.

Java es demasiado rígido.  Cada vez que hay que jugar con los tipos, como por ejemplo siempre que se utiliza una base de datos, la genericidad no es suficiente y hay que liarse a crear soluciones demasiado complejas y costosas de probar. Si hay que buscar maneras creativas de implementar algo, automáticamente el desarrollo se volverá ineficiente, y las horas delante del teclado acabarán por el desagüe casi sin darse cuenta.

Lo peor de todo es la gestión de las librerías. Es increíble que a estas alturas aún no haya un sistema mínimamente decente de versionado y compatibilidad de ficheros .jar. Me dijeron que probara Maven, pues tampoco. Al final acabas con toda una lista de posibles .jar, añadiéndolos uno a uno y probando la aplicación completa en busca de incompatibilidades. Y nunca estarás seguro del todo. Pues espérate, que cuando actualicen una de las librerías el lío aún va a ser más gordo, porque van a fallarte todas por efecto dominó.

Ni siquiera se puede defender ya que sea elegante. Cosas como las anotaciones lo sobredimensionan tanto que, por el camino que van, llegarán a traicionar la gran virtud que Java tenía en su nacimiento: esquivar los defectos del chapucero C++.

Por suerte siempre estará Eclipse para hacer la vida más fácil a uno. Pero sólo para J2SE, porque si hay que pelearse con J2EE sin NetBeans, prepárate para entrar en el Infierno. Aunque bueno, NetBeans es otro infierno en sí mismo, más pesado que una vaca en brazos y con tantos automatismos bastos que como necesites un mínimo grado de libertad vas arreglado.

Eso sí, comprendo que para según qué empresas, que puedan permitirse tiempos de desarrollo más amplios y no se salgan demasiado del ámbito de las aplicaciones de gestión, Java es bastante razonable.

Lo que nosotros buscamos es un lenguaje de desarrollo rápido pero escalable, que implemente la máxima del DRY, que permita soluciones creativas para algoritmos de IA y que además tenga un apoyo considerable de la comunidad.

Así que será cuestión de tirarse a la piscina. Ruby y Python parecen los lenguajes de moda y por algo será. Decidirse entre ambos ya sí que parece más complicado, ya que si eliminamos las opiniones de los fundamentalistas de cada uno, los que opinan de manera neutral no parecen decidirse por ninguno de los dos de manera clara.

De todos modos estoy ligeramente inclinado hacia Ruby. De eso tiene bastante culpa que tenga similaridades con LISP o Eiffel (el lenguaje de los que he tocado que más me ha gustado), o algunas features como los blocks o la metaprogramación.

posted in Cahiers de l'Informatique | 1 Comment

14th April 2008

Probando Twitter Updater…

Plugin obtenido de firesidemedia.net.

posted in Cahiers de l'Informatique | 0 Comments

27th September 2007

250 aplicaciones gratuitas para MacOS X

(vía Menéame)

Esta página recoge enlaces a unas 250 aplicaciones clasificadas en categorías, incluyendo productividad, juegos, desarrollo, gráficos, sonido, etc. Muchas de ellas ya las conocía, pero no deja de ser interesante tenerla en cuenta :)

Technorati Tags: , ,

posted in Cahiers de l'Informatique | 0 Comments

11th September 2007

La liebre y la tortuga… en redes de agentes

Hace unos meses, en un seminario del programa de máster y doctorado de Inteligencia Artificial de la UPC impartido por Julian Padget sobre comunidades de agentes, se nos encomendó un trabajo práctico consistente en analizar y presentar un paper de entre los escogidos por el ponente.

El que le tocó a mi grupo no era tan interesante, pero había uno particularmente curioso. Sofía y Carlos (Topopardo) presentaron el paper “The Parable of the Hare and the Tortoise: Small Worlds, Diversity and System Performance”, de David Lazer y Allan Friedman. La idea principal de este artículo es que, en contra de la creencia generalizada y el sentido común, las redes mejor conectadas o small-world no son siempre las más eficientes.

En el caso general, por supuesto, este tipo de redes funcionan muy bien y permiten acceder a información de manera rápida. Lo que Lazer y Friedman plantean es el caso en que los agentes no puedan permitirse un proceso de razonamiento temporalmente costoso y tiendan a escoger máximos relativos en vez de resultados perfectos o casi perfectos. En estos casos, según muestra el artículo, las redes mejor conectadas tienden a ser las menos eficientes en cuanto a la calidad de las soluciones locales. Esto sucede porque con una mayor cantidad de información disponible, se deja de lado la diversidad de las posibles soluciones en pos de la confianza en los vecinos. De hecho, apoyan estas conclusiones en simulaciones hechas con diferentes topologías, en las que las redes peor conectadas, las lineales, eran las más lentas pero con mejores resultados.

En el artículo se referencia un paralelismo entre estas conclusiones y la diferencia de velocidad de desarrollo entre Europa, Asia y América expuesto en “Guns, Germs and Steel” de Jared Diamond. La hipótesis en cuestión es que Europa consiguió dominar el mundo durante mucho tiempo gracias a que, aparte de tener un eje oeste-este con un clima adecuado, tiene una geografía peor que la de Asia, es decir, es una “low-interconnected network”. Las innovaciones agrícolas tardaron más en expandirse en Europa que en Asia, pero los avances tecnológicos a largo plazo fueron mucho mayores.

Si os interesa el tema podéis descargar aquí la presentación (PDF, 340kb).

Technorati Tags: , , , , ,

posted in Cahiers de l'Informatique | 2 Comments

13th December 2006

‘Nuff said

Windows development chief: ‘I would buy a Mac if I didn’t work for Microsoft’(Gracias ray)

Technorati Tags: , ,

posted in Cahiers de l'Informatique | 0 Comments

13th December 2006

iPod Shuffle pwns Zune

En la CNN, presentan el Zune. Lo más interesante del vídeo es ver cómo la presentadora vapulea el discursillo del pobre chico enseñando el nuevo iPod Shuffle. Como dice él al final, “no comment”.

Technorati Tags: , , , ,

posted in Cahiers de l'Informatique | 0 Comments