Archived entries for Cahiers de l’Informatique

Computational mechanisms for norm enforcement in Service-Oriented Architectures

Behind this complicated title lies the thesis for my Master of Advanced Studies, or DEA as we call it here in Spain. Apart from evaluating the research done in a specific field, it includes the proposal for a thesis in order to get the PhD. I had to defend this document last February, which means that now I have an approved topic for the next couple of years to write my dissertation and finish the PhD. That means, more work incoming! :)

The document presents a proposal for a distributed architecture that will allow for:

  1. Definition of high-level contracts readable and understandable by services,
  2. Proper monitorization of the service states and interactions relevant for the fulfillment of these contracts, and
  3. The implementation of third parties responsible for analyzing these observations and enforcing the norms.

The main idea behind all this stuff is, on one side, to create implicit service institutions, and on the other side, to complement and implement SOA Governance methodologies from a norm enforcement perspective.

In case anybody is curious about all this (I’d be really glad :P) I include here the final version of the document and the slides I used for the defense.

Computational Mechanisms for Norm Enforcement in Service-Oriented Architectures (Sergio Alvarez-Napagao) PDF – 1.9Mb

The future of quality university education in informatics

The future of quality university education in informatics is a keynote and panel discussion that will be held tomorrow at UPC. It’s quite a short notice and the space is presumably limited, but I’m just forwarding this for those who might think it could be interesting.

The main topic of the debate is the need to preserve a high quality university education system with special focus on informatics.

Location, date/time: Aula Màster (UPC Campus Nord), March 17th, 9am

Keynote Lecturer: Andreu Mas-Colell

Moderator: Manuel Hermenegildo

Panelists: Josep Casanovas, Ricardo Baeza-Yates, Carlos Domingo, Jan Van Leeuwen, José Rolim

My list of must-have Mac apps & plugins

There are lots of must-have Mac applications and plugins out there, but a good thing of each one of them is that, in the end, they are quite subjective: the software we use depend on what our work and leisure is about. So there goes my personal list:

Open Source – Freeware – Shareware:

  • Adium: the best instant messaging application for Mac. Integrates most of the protocols available out there: MSN, Yahoo Messenger, ICQ, Jabber, GTalk, Facebook and many more. There is even a Skype plugin. Largely customizable.
  • Celtx: filmmaking and media pre-production tool, with collaborative support. Quite complete and versatile.
  • Disk Inventory X: graphical disk usage viewer. Useful to see at a glance what the hell is going on with the hard disk free space.
  • ffmpegX: graphical wrapper for mencoder. Really useful for converting videos.
  • Growl: notification system that can be used by many other programs, like Adium, Skype, Safari, iTunes and so on. Many configuration options.
  • Inquisitor: Safari plugin that overrides and greatly improves the Google search box.
  • i-Installer: LaTeX installation manager. Already out of support, but still very useful.
  • Plex (OSXBMC): great replacement for Front Row. It’s a port of the Xbox Media Center.
  • Quicksilver: if I were to choose only one of the list, this would be it. Some people think that it’s only an application launcher, but it’s so much more than that. Optimizes the launching of applications and the execution of scripts (lots of them) using only the keyboard.
  • Transmission: a really nice, simple and lightweight BitTorrent client.
  • VirtualBox: x86 virtualization software. Lacks of 3D acceleration support, but it’s a great choice among others like Parallels.

Non-free:

  • ComicBookLover: a catalog manager for electronic comic formats (CBR, CBZ), and an excellent viewer as well.
  • OmniFocus: a GTD task manager. Well used, it’s a great tool to organize oneself.
  • Papers: this is a great application for researchers. Organizes papers and articles by a wide criteria, and integrates a lot of search engines like Google Scholar or ACM, and is able to export a collection of papers in some formats, like BibTeX.
  • TextMate: the ultimate text editor. For anything that is not writing Java code, this is what I use. Has lots of scripts for a huge amount of programming languages and text formats that really help in, for example, writing a large document in LaTeX or coding a Ruby on Rails application. Also incorporates a fair amount of keyboard shortcuts for those vi or Emacs addicts.
  • viPlugin: it’s a plugin for Eclipse that allows for using almost all of the vi commands, therefore fixing one of the main drawbacks of this excellent IDE :-)

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.

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.

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.

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

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

Probando Twitter Updater…

Plugin obtenido de firesidemedia.net.

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: , ,



Copyright © 2004–2009. All rights reserved.

RSS Feed. This blog is proudly powered by Wordpress and uses Modern Clix, a theme by Rodrigo Galindez.