jueves, 12 de noviembre de 2009

Entrevista web semántica – 3.0 para la revista Computing

“¿Qué novedades plantea la Web 3.0? ¿Qué diferencias existe con respecto a la Web 2.0?

No existe un consenso alrededor de lo que es web 3.0. De hecho, una de las definiciones típicas es la que constata un hecho puramente cronológico: Web 3.0 es la tercera década de la web. Si significará o no un cambio cualitativo, tema que es indudable para la web 2.0 o social, es algo que no sabemos aún. Sí podemos describir algunas de las tendencias hacia las que parece dirigirse la web de hoy. Algunas representan características más disruptivas que otras (web semántica) respecto a lo que tenemos hoy.

Otras, que voy comentando en El caparazón, serían según los analistas más relevantes en el ámbito anglosajón, cosas como la web en tiempo real, la web ubicua(con conceptos como Cloud Computing o Telefonía móvil), el Embodiment, la Internet de las cosas o la web contextual (entendiendo la que personaliza la experiencia del usuario según su contexto social, geográfico, etc…).

Quizás la teoría más extrema al respecto sea la de la Singularidad, que según la definición oficial supone que el progreso tecnológico y el cambio social se acelerarán debido al desarrollo de inteligencia super humana, cambiando nuestro ambiente de manera tal, que cualquier ser humano anterior sería incapaz de comprender o predecir.

Recomiendo la serie de vídeos de Simón Hergueta, además de otros sobre el tema que recopilaba en una entrada reciente (al final).

¿Qué es la web semántica y qué retos plantea?

La web semántica es aquella que se construye en un lenguaje que los ordenadores pueden “entender”. Se refiere, más allá de la transmisión de señales, a la comunicación.

Es una web de datos escritos en formatos interoperables, de bases de datos compatibles que construyen algo así como ámbitos conceptuales globales en toda la web. Son datos, dicho de otro modo, que los ordenadores pueden interpretar, relacionar con otros, etc… para devolvernos resultados o una experiencia de usuario más cómoda y satisfactoria.

Para que todo ello sea posible (y ese es el reto básico), debe definirse un estándar (el W3C es el organismo encargado de ello) además de traducir los conceptos del mundo a códigos informáticos (ontologías, otro de los retos). RDF y derivados son formas de marcar el contenido de cualquier página web de forma semántica.

El reto está en la interoperabilidad (la necesidad de que todas las páginas se adapten a un mismo lenguaje), además de en la complejidad, a la hora de marcar contenidos e incluso de definirlos.

Es, sin duda, una web mucho más costosa pero más eficiente a largo plazo.

¿Qué iniciativas hay interesantes sobre esa web semántica? En España hay algunos ejemplos?

Hay muchas iniciativas interesantes en Intranets o en el ámbito de la gestión del conocimiento corporativo. También en aplicaciones en sectores “verticales”, en los que es más posible la creación de ontologías, el trabajo de base para el funcionamiento de la web semántica. El turismo sería uno de los más beneficiados al respecto. El sector farmacéutico, la automoción son otros de los que el W3C recoge en su directorio (incluyo enlace a la presentación correspondiente en español al final)

Menos frecuentes son a nivel “mainstream” o generalizado, aunque Wikipedia, ahora Bing y el mismo Google estén trabajando ya con algoritmos semánticos. Como aplicaciones de éxito podemos hablar de Twine, una herramienta intermedia entre lo social (o de intereses), propio de la web 2.0, y la web semántica, en el sentido de organizar la información que recibe (los marcadores sociales) con ayuda de código semántico. El resultado es bastante bueno, logrando recomendaciones automáticas bastante adaptadas a nuestros intereses.

Es uno de los aspectos que trabajo con mayor profundidad en presentaciones, talleres, seminarios, etc… porque creo que el futuro éxito de esta web “mejor” depende, para un usuario cada vez más formado y exigente, del conocimiento de las ventajas que este tipo de acercamiento constituye. Tenéis, también al final de la entrevista, en los últimos slides de la última presentación que preparé sobre el tema de la web semántica – 3.0, muchos otros ejemplos de aplicaciones.

En su opinión, ¿Qué papel deberían jugar los gobiernos y la iniciativa privada para consolidar este tipo de web?

El papel de los organismos reguladores, de instituciones (el W3C es la fundamental) que definan los estándares o ese lenguaje común, es crucial. Tim Berners-Lee trabaja en la “linked data web”, la web de los datos enlazados o la traducción de bases de datos públicas en distintos gobiernos a los estándares, para gobiernos como el de UK o EEUU.

Son muchos los organismos, las instituciones y empresas privadas que están entrando en la “Linked data cloud” (nube de datos interoperables). Sería, por decirlo de forma metafórica, hacer una apuesta por formar parte de un mundo web ordenado.

Existen gráficos acerca de su evolución en términos de número de agentes implicados y el crecimiento resulta muy importante en 2009, aunque está lejos aún de ser mainstream.

Podéis observar el tema en los gráficos. El primero corresponde a 2008, el segundo a 2009:

lod-datasets_2008-03-31

lod-datasets_2009-03-05-scaled

¿Qué funciones tendrá la publicidad en este contexto? ¿cómo encajará?

La publicidad semántica puede mejorar la precisión, la relevancia de la actual publicidad contextual. Esto ser entiende mejor desde una afirmación de Winer: “La publicidad perfectamente adaptada a nuestros intereses es contenido”, considerada información y no spam.

Puede ser, de hecho, uno de los ámbitos en los que la aplicación de este tipo de tecnologías puede resultar más rentable.

Se trata de ir más allá de los sistemas de “Behavioral advertising” o publicidad según nuestro comportamiento como internautas (basados en cosas como introducir cookies y software “espía”, entre otros muchos atentados a nuestra privacidad).

Hakia, una de las startups de lo semántico decía al respecto: “Si un 90% del tráfico de tu sitio viene de los buscadores, es porque los lectores de tu contenido vienen con una “orientación mental de búsqueda”. La publicidad relevante corresponde a esta mentalidad. Si los resultados son pobres en cuanto a relevancia y los anuncios parecen malos, generarás mala imagen en tu espacio, como de la publicidad en internet en general”

Existen ejemplos muy aparentes acerca de la diferencia entre bloques de publicidad de ambos tipos. Es uno de los recursos frecuentes en formación de este tipo de tendencias.

¿Llegará la rentabilidad a este tipo de iniciativas?

Demuestran ya su rentabilidad en Intranets, son inversiones a largo plazo. Pero la rentabilidad es precisamente uno de los principales obstáculos a esta “web mejor”. Ayuda mucho a comprender la evolución de la web y su futuro, recordar cómo la web semántica es tan poco web 3.0 en el sentido cronológico que la definíamos al principio, que surgió, de hecho, antes de la 2.0 actual (también en esto existen matices y definiciones del momento actual como de transición, 2.5…).

Tim Berners Lee pensó la web como algo mucho más elaborado que lo que tenemos ahora. Han sido criterios prácticos, la prioridad en el abaratamiento de los costes, las “prisas” en la construcción de una web social mínimamente rentable, los que han guiado la actual arquitectura, técnicamente muy mejorable, de la WWW. Y es posible que el mismo imperativo económico frene su evolución.

Es así, de hecho, si tenemos en cuenta la aparente resistencia de Google, que argumentaba hasta hace muy poco que la semweb era simplemente imposible, de muy difícil (y costosa) implementación. Es difícil, cuando todavía están por definir los modelos de negocio de la web social, cuando todavía es complicado rentabilizar de modos alternativos toda la oferta de contenidos, aplicaciones y servicios libres, apostar por sistemas mucho más difíciles de implementar que cosas tan simples a nivel tecnológico como Twitter, con una inversión inicial (y por tanto una asunción de riesgo) mínima.

Aún así, la competencia, el hecho de que dotar a nivel real o como estrategia de márketing, del adjetivo “semántico” a cualquier aplicación (de hecho, fue uno de los términos que generó ruido sin ser del todo adecuado para al lanzamiento de Wolfram Alpha), le añada valor en un mercado colapsado, puede ayudar a avanzar en la dirección correcta. Es el caso del propio Google, que siguiendo con lo anterior, estaría incorporando desde hace un tiempo, coincidiendo con la aparición de Bing (motor de búsqueda de Microsoft, que previamente adquiría Powerset, un buscador semántico) algoritmos semánticos a su sistema.

¿La Web 3.0 es viable a día de hoy desde un punto de vista tecnológico? ¿Están habilitados y disponibles todos los recursos que necesita?

Si obviamos la metafísica, las teorías de la singularidad que suponen la aparición de una inteligencia cibernética independiente de la humana y que, como veíamos, se inscriben también en la cultura de la web 3.0 y semántica (o inteligente), podemos contestar de forma afirmativa a esta pregunta.

Los recursos que precisa la web semántica van construyéndose día a día. Si hace unos años eran las Universidades los únicos agentes encargados de escribir, de definir las ontologías necesarias para su evolución, hoy son gobiernos, empresas privadas, organizaciones públicas las que también contribuyen.

No es fácil, pero también son cada vez más sofisticadas las herramientas de semantización de los UGC (contenidos generados por el usuario) propios de la web social. La web 3.0 entendida como semántica es una tendencia que abarcará posiblemente los próximos, ya no 10 (recordemos la definición como tercera década de la web) sino posiblemente 20 años que vienen. La web semántica es un proceso, una forma de seguir construyendo la web, no un resultado posible al 100% en cualquier momento concreto.”

plone para phyton

Hola a todos!. Estoy muy interesado en un cms que se llama plone y que se desarrolla en zope, todo programado en python. Estoy intentando aprendera a hacer webs con plone, creo que tiene muchisimas posibilidades, me he comprado un libro Building websites with Plone, esta en ingles y lo voy leyendo despacio. Creo que este sistemas de hacer webs es muy profesional y con muchas posibilidades, ademas esta programado con python con lo que se puede modificar facilmente y crear nuevos contenidos.

http://www.plone-es.org
http://plone.org/
http://www.plonehispano.com/foro/


el futuro del internet

Internet de las cosas, inteligencia artificial, singularidad, web semántica, naturaleza de la conciencia, con autores como Kurtzweill, Kevin Kelly y muchos otros sobre web 3.0, futuro de la web, de los que hemos hablado aquí en ocasiones y que trataré en Virtual Educa 2009, en Buenos Aires, en unos meses:

4 Vídeos imprescindibles para entender la web 3.0

1. The future Internet: Service 3.0 Video será presentado en el Web 3.0 Event en pocas semanas. Ha sido un descubrimiento reciente y creo que es, simplemente, lo mejor de la serie para entender la evolución de la web. No he podido encontrar el código para embeberlo, así que os dejo enlace:

servicios-3

2. Entender la web semántica: Lo utilizo y comento en mis presentaciones porque creo que, al estilo de los de Common Craft, ayuda a entender de forma simple y amena el concepto:

3. Kevin Kelly, de Wired, una de las publicaciones digitales más antiguas: Los próximos 5000 días de la web, también en inglés pero insustituible como introducción a lo que vendrá:

4. El futuro de Internet: El vídeo, hecho por Simón Hergueta, trata sobre singularidad tecnológica, esa inteligencia sobrehumana de la que habla, también Kevin Kelly y que seguro que es posible si no la entendemos como nada más que eso, inteligencia, sin voluntad, conciencia y algunas otras de las cosas que hacen del ser humano algo distinto.

Ha generado bastante polémica (también en Los sueños de la razón y estoy de acuerdo en cuestionarlo si supone que el aumento de conexiones podría hacer surgir de forma espontánea la conciencia.


javascript MVC

JavaScript sigue siendo el centro de la web, con presencia en prácticamente todos los proyectos que aparecen continuamente. Al igual que con HTML, sus orígenes eran mucho más limitados y su constante crecimiento obliga a un replanteamiento de su uso. La aparición de ROR, aunque no se ha convertido en el estándar que muchos esperaban, sí ha hecho que las arquitecturas MVC se hayan extendido a la mayoría de los lenguajes de programación. Y JavaScript no podía ser menos. En A List Apart incluyen un excelente artículo sobre la implementación MVC para JavaScript como medio de organización del código.

viernes, 6 de noviembre de 2009

php 5.3

Aqui obtendrás información acerca de migrar de php 5.2 a 5.3 http://es2.php.net/migration53
Aqui todo lo relacionado con php 5.3 http://php.net/releases/5_3_0.php

jueves, 5 de noviembre de 2009

Comparando paradigma estructurado con POO

Encontre la info por la red, un experto escribe

El tema de entender porque pasar a POO es comprender el mundo y los cambios del mismo, ya que algo en estructurado para ti son 200 lineas y en POO son 500 lineas, y entonces que ventaja tiene hacer POO si terminas escribiendo mas ?

Hay muchas formas de explicarlo, y mi forma de hacerlo cambio durante los años, yo comencé a programar cuando no existía otra forma, pero quien hoy enseña formalmente en estructurado, realmente no sabe de trataesto de programar.

Existen muchas formas de armar un sistema, como por ejemplo el modelo vista controlador (MVC), un modelo de capas de datos, entidades, interfaces, etc.

Al comienzo cuando en 1994 comencé a ver el tema, no había otra que hacerlo por gusto, o para re-utilizar, ya que pascal, y clipper que usaba en esos tiempos y luego visual basic, realmente no podían aprovechar las ventajas.

La idea de programar en objetos, es simplemente tratar de facilitar tanto la manera de pensar un sistema, como la de reutilizar partes.

Por ejemplo si creas una clase persona:

Persona {
nombre string;
apellido string;
}

puedes crear objetos heredados de esa clase:

Empleado hereda de Persona {
sueldo double;
}

con solo eso, tu puedes crear un objeto de la clase empleado, algo así:

e = new Empleado();

y luego usar ese objeto, por ejemplo para mostrar los datos:

echo e.nombre;
echo e.apellido;
echo e.sueldo;

como ves si bien Persona tiene 2 campos, en realidad Empleado tiene 3 porque heredo y le agregamos uno.

Esto es posible hoy día y significa muchas ventajas. Imagina un sistema de ventas, donde tu creas tu clase Persona, haces tus métodos set y get y ademas los métodos para guardar, en la base, obtener de la base, mostrar en pantalla (o dispositivos), etc.

Eso 20 o 30 procedimientos tu los haces en Persona, pero con solo heredarlos los puedes usar en:

Empleados hereda Persona {}

Vendedores hereda Persona {}

Clientes hereda Persona {}

Proveedores hereda Persona {}

o sea que personas en estructurado ocupa 100 lineas, en POO seguramente 200 o 300, pero realmente con poder re-utilizar ganas un sistema que en vez de 5 mil lineas, tiene 1500 smile.gif

Por otra parte si hay algún cambio, lo haces en un solo logar y eso se repara para todos sus heredados.

Esta es la primer ventaja de POO.

Otra cosa que en principio parece fea, y un largo camino para hacer algo sencillo son lo de los metodos get y set, es obvio que hacer:

e.nombre = "pepe";

y echo e.nombre;

es sencillo, pero no es lo optimo, siempre es mejor crear metodos set y get, algo simple como:

setNombre(n string) {
nombre = n;
}

y

getNombre() string {
return nombre;
}

y lo usaras así:

e.setNombre("pepe");

y

echo e.getNombre();

es mas largo, y parece poco útil, pero imagina que el nombre, DNI, cedula, pasaporte deba tener cierto formato smile.gif, solo heredas y en la función SET modificas o verificas ese contenido.

La suma de todo esto nos hacen posible crear modelos como el MVC y de Capas, y vamos a un poco de historia.

Al comienzo, cuando programaba en clipper, no tenia mas que usar dbase o un derivado de este para base de datos, y mi programa lo miraban en una pantalla CGA 256 colores, en DOS o Windows. El esquema era este:

[DBASE - SISTEMA]

O sea todo en uno, y el mismo sistema contenía el manejador de base de datos.

Esa realidad ya no es así, el motivo es que existen un montón de bases de datos, un montón de sistemas operativos, un montón de dispositivos donde verlo.

Con el viejo sistema, se tenia que hacer un programar para windows, otro para linux, otro para SQL, otro para DBase, etc, todo aparte.

Si programamos en capas podemos tener:

[servidor base de datos] <=> [driver de datos] <=> [adaptador de datos] <=> [entidades de datos] <=> [sistema o reglas de negocio] <=> [interfaz]

o sea un sistema de múltiples capas, explico brevemente:

servidor de datos, es SQL, MySQL, Oracle, etc

driver de datos, es el que ejerce la conexión, por ejemplo un driver mysql para java windows, o un driver mysql para java linux, o un driver mysql para .net o php, etc

adaptador de datos, es un modulo hecho por ti, que conociendo el driver va a guardar y obtener datos desde la base, como única misión, y dejarlo disponible para tusistema.

entidades de datos, son tus clases que mantienen la info en memoria para que la utilice tu sistema, luego de obtenerla en la base, y antes de presentarla en pantalla

reglas de negocio, es un modulo que hace lo que el sistema debe hacer, calcular sueldos, preparar datos para recibos, etc

intefaz, es tu pagina web, o pantalla DOS, o windows, o en un dispositivo móvil.

Como ves, muchas piezas, pero gracias a POO puedes programarlas independiente una de otra.

En un sistema POO bien ideado, y construido ninguna capa molesta a la otra, por el contrario la potencia.

Esto quiere decir, que con solo modificar la capa de acceso a datos, tu sistema pasa de ser para SQL a MySQL u ORACLE, cambiando solo esas pocas lineas, o incluso funcionar con cualquiera de las bases de datos si lo programas de esa forma.

Lo mismo pasa con la interfaz, solo cambiando esto, todo tu sistema pasa de ser utilizado en web, red local, a ser utilizado en móviles, linux o windows.

Esa es la idea general y posibilidades de la programación orientada a objetos.

Cada lenguaje tiene frameworks o librerías que permiten utilizarse en sustitución de cada capa.

Por ejemplo en .net, acostumbro a crear un modulo de datos, para 2 o 3 tipos de base de datos (SQL, MySQL, Oracle), que con solo seleccionar el sistema funciona con cualquiera de las 3, pero todo mi sistema es re utilizable sin mas cambios. Lo mismo para que el sistema corra en LAN, Web, o Windows, o linux si MONO fuera lo que debe ser.

En PHP, lo mismo ahí utilizo ADODB para la capa de datos y driver de acceso a datos. Y smarty para la interfaz web, para lograr independencia del diseño.