lunes, 3 de septiembre de 2007

Irreversible decisions

Hoy 3 de septiembre finaliza oficialmente el periodo vacacional en la Universidad y de hecho, en breve iré a la Escuela.

Este verano, aparte de otras muchas cosas, me he dedicado a ponerme al día con Ruby y con Ruby on Rails. Hice una pequeña aplicación de ejemplo, y quedé con ganas de hacer más cosas, aunque todavía está todo en fase muy preliminar como para publicarlo.

La sensación general de Ruby es que es un lenguaje dinámico y accesible, que te permite crear aplicaciones muy rápidamente sin la sensación de haber hecho una chapuza.

Mi intención es utilizar Ruby para hacer algún prototipo mezclando Web semántica y etiquetado colaborativo, aunque con la escasez de tiempo que arrastro, no estoy seguro de lo lejos que voy a llegar.

Ayer encontré un artículo que resumía las alternativas para trabajar con RDF desde Ruby. Parece que el camino ya lo han recorrido algunas personas, pero que tampoco han llegado a crear ninguna librería estable como puede ser Jena.

De las posibilidades que menciona, ya conocía ActiveRDF, pero lamentablemente no he conseguido que funcione en Windows sin Cygwin (el cygwin lo tuve instalado en otro ordenador y no me apetece volver a instalarlo en éste...me gustan las aplicaciones multi-plataforma, pero no las que necesitan emular la otra plataforma para funcionar).

Otra de las posibilidades es Semitar, que parece que está bastante muerto desde hace 2 ó 3 años.

Ambos utilizan el analizador sintáctico Raptor escrito en C, que trae algunos binarios pero no estoy seguro si necesitará también Cygwin...habrá que ir probando...

Tirando de Semitar, llegué a su autor, Rich Kilmer que parece que es bastante experto en Ruby. En su blog encontré este artículo sobre la Web 3.0 con una frase que me gustó:

All that said, there is real power to ontologies and semantics captured and used by systems. The key to these systems IMHO is that they are constructed on some real ontological and semantically rich foundations (not just a relational data model), and all that crap is completely hidden from humans. Humans build up and leverage stuff on that rich foundation without ever knowing about it. They may feel its there, but don't have to understand it to use it.


Siguiendo con la búsqueda, llegué a una entrevista que le hacen en la revista InfoQ que también me pareció interesante. Sobre la entrevista, aparte del contenido, me gustó que está transcrita y que es posible leer lo que va diciendo en inglés mientras se le ve la cara. Una buena forma de practicar inglés y aprender cosas técnicas de gurús...habrá que estar atento a esa página de InfoQ.

Finalmente, tirando de esos videos de InfoQ, encontré otro video de un viejo conocido mío: Erik Meijer. Erik fue uno de mis héroes mientras realizaba la tesis doctoral, ya que muchas de las técnicas que utilizaba de Haskell, las había desarrollado él. En concreto, la teoría de catamorfismos (bananas) y su aplicación práctica me sirvió de inspiración para lo que hice en la tesis.

Además tuve la suerte de conocerlo en persona mientras hacía la tesis en dos ocasiones, en la Escuela de verano sobre programación funcional avanzada, en Braga, Portugal, y en la tercer conferencia latinoamericana sobre programación funcional, en Recife, Brasil, en 1999 (creo que la página ya no funciona). En ambas ocasiones, pude hablar con él sobre mi tesis y sobre la programación funcional en general y siempre me gustó su visión pragmática del tema. Como él decía, la interesante es crear sistemas que faciliten la tarea del programador.

Posteriormente, él decidió cambiar de tema y empezó a trabajar en Microsoft, donde al parecer es arquitecto en la divisón de SQL server. El título de este artículo es por una frase que aparece en la presentación de ese vídeo y que creo que también se puede aplicar a Ruby (y a otras muchas situaciones, claro):

Make irreversible decisions at the last responsible moment