sábado, 18 de febrero de 2006

Web 2.0

Creo que alguna vez he hablado aquí de la Web 2.0. Es un concepto que ahora está muy de moda (aunque bien podría extinguirse dentro de unos años). Concepto mi entender un tanto difuso. Según la Wikipedia gira en torno a algunas ideas novedosas:
  • Folksonomías: se definen a partir del elemento etiqueta. Antes la clasificación de cualquier contenido (correo electrónico, enlace, documento, etc) se hacía por carpetas. Si clasificamos por etiquetas estamos creando un sistema más versátil, porque cada contenido puede tener una o varias etiquetas. De esta forma se puede encontrar un documento por ejemplo como perteneciente a la "Etiqueta 1" y/o a la "Etiqueta 2". Esto es mucho más potente que la tradicional clasificación por directorios.
  • Sindicación de contenidos: creamos hilos de noticias asociados a los contenidos de una web. De esta forma es mucho más fácil estar actualizados y seguir las webs que nos interesen. También podemos acceder a hilos personalizados de los contenidos de cierta página. Si sólo nos interesan las noticias de deportes, por ejemplo, nos apuntamos al hilo de noticias de deportes.
  • Redes sociales y participación: dar a los usuarios la oportunidad de participar en los contenidos de nuestra web. Así se implican más y la visitan con frecuencia.
  • Usabilidad: cuanto más fácil y sencillo de usar más gente la usa.
  • Diseño atractivo: para captar la atención y que sea visualmente agradable.
  • APIs para acceder a los servicios: para que terceros desarrollen aplicaciones sobre nuestros "servicios web".
  • Etc, etc, etc.
Es decir, actualmente ningún sitio está cumpliendo 100% las aspiraciones de la Web 2.0. Sin embargo es algo a lo que deberíamos aspirar todos. Al menos pienso que sería positivo que se incorporase parte de los conceptos anteriores, sobre todo si añaden interactividad con el usuario.

martes, 14 de febrero de 2006

De la visión estereoscópica a la realidad virtual

Esta es una de esas ideas que se te ocurre que se podría hacer, pero no llegas al cómo. A mí me pasó con la aritmética modular. Era algo sobre lo que yo había pensado y cuando me lo encontré de frente dije: "Vaya, esto yo ya lo había pensado". Recientemente me ha pasado lo mismo con lo que se llama "visión estereoscópica".

La susodicha visión estereoscópica consiste en la reconstrucción de modelos a partir de proyecciones de escenarios/paisajes. Es decir, hablando más claro, a partir de fotografías. Un modelo en 3D es una representación normalmente mediante triángulos de una realidad física (persona, edificio, herramienta, árbol, etc). Mediante la visión estereoscópica se podrían generar en teoría (y también en la práctica) modelos en 3D de objetos.

De hecho lo único que se necesita a priori es un conjunto de proyecciones del objeto y saber exactamente dónde se ha cogido la proyección (en el fondo esto significa saber la posición de la cámara y las características de la cámara, tipo de objetivo, etc). Con estos datos, mediante un procesado de señal, es posible recuperar los vértices de los triángulos y generar el modelo en 3D.

Una vez tenemos la manera de generar fácilmente modelos en 3D el siguiente paso es crearse una biblioteca de modelos para poder llegar a un modelo de "mundo sintético". Tendríamos que dotar a los modelos de algún tipo de inteligencia para que interactuasen unos con otros.

Al final mediante un sistema de realidad virtual (que se puso muy de moda a principios de los 90) podríamos "meternos" en el mundo sintético, a la manera de un ciberespacio ad hoc. El futuro de las redes sociales debería de estar en una "realidad" de este tipo en mi opinión. Al menos las redes virutales.

jueves, 9 de febrero de 2006

Navegador tridimensional

He encontrado un proyecto bastante interesante sobre un navegador empotrado en OpenGL. La página web es esta, por si quieres ir a mirar. Se llama uBrowser. En principio no está muy desarrollado, pero la idea es interesante. Consiste en incrustar una aplicación en una estructura tridimensional como una esfera o un cubo. ¿Estamos cambiando el concepto de navegación web? ¿Vamos hacia la Web 2.0? Me recuerda a un proyecto que querían sacar (o han sacado) para Mac, que consistía en que las ventanas se pudieran rotar tridimensionalmente de forma que pudieras escribir cosas por detrás, o más bien que hubiera contenidos por detrás de las ventanas.

También es interesante echarle un vistazo a Konfabulator, que gira sobre el mismo concepto (aunque realmente este último es un motor de widgets, cuya idea está cogida de Mac OS X, el S.O. de Apple).
    

viernes, 3 de febrero de 2006

Indexación y motores de búsqueda

Uno de los temas que últimamente más me interesan es el de la indexación y los algoritmos de búsqueda. El interés viene del éxito que está teniendo Google. Además es uno de los temas que estudio en la carrera.

Por una parte tenemos la distinción entre algoritmo de búsqueda e indexación. Un algoritmo de búsqueda lo que pretende es encontrar entre un conjunto más o menos ordenado de elementos (me refiero por ejemplo a la diferencia entre un árbol y un conjunto sin ningún orden específico) uno en particular. La indexación, por otra parte, lo que hace es ordenar previamente el conjunto de datos (en cierto sentido en los árboles también se hace) para crear un índice en donde se puedan consultar posteriormente las búsquedas. Digamos que en la indexación el trabajo se hace por anticipado por si te lo piden, mientras que en las búsquedas hay que hacerlo en el momento en que te lo piden.

Otro de los temas que tienen relación con los sistemas de búsquedas como Google es la computación distribuida, que consiste en repartir el trabajo (realmente se llaman procesos) entre muchas máquinas, de manera que el rendimiento global es similar a tener una sóla máquina pero mucho más potente.

Para implementar un sistema de búsqueda tipo-Google lo que hay que conseguir por tanto es dominar la indexación y la computación distribuida.

Actualización: He leído un artículo donde explican la arquitectura de Google (o su filosofía de vida). Usan PCs normales como base para las agrupaciones de ordenadores en donde alojan sus aplicaciones (en inglés se llaman clusters). La fiabilidad y escalabilidad (paralelización) la consiguen por software. Están monitorizando continuamente sus equipos por si alguno se cae. Cuando esto ocurre balancean la carga de trabajo entre los equipos restantes. De esta forma el rendimiento global no se ve afectado. En todo caso dicen que aunque el coste por búsqueda se minimiza, sufren problemas de calentamiento (tienen que enfriar todos esos PCs para que no se tuesten). Uno de los lenguajes de programación que más usan es Python. Sin embargo es curioso que la aplicación principal del buscador esté desarrollada en C/C++.