domingo, 22 de septiembre de 2013

Por una red social descentralizada (propuesta)

Las redes sociales como Facebook y Google+ tienen sus ventajas. También tienen desventajas, pero casi todas derivan de ser sistemas cerrados adaptados a sus conveniencias ¿Pero y si pudiésemos idear protocolos de manera que cualquiera pudiese crear su propio perfil compatible con una red social abierta y descentralizada? Montando tus perfiles en tu propio servidor, o escogiendo entre una mayor variedad. Con más privacidad, personalización e innovación. Que permita identificarse en diversos servicios, recibir notificaciones centralizadas, enviar mensajes privados y compartir contenidos sin depender de una multinacional.

El sistema sería sencillo: Podrías tener tu servidor personal (juan.com), compartirlo con otros amigos o familia sin suficientes conocimientos (loslopez.es) o escoger a alguna entidad que te de confianza dentro de una mayor variedad (universidad.org). Dentro de ese servidor podrías tener varios perfiles (trabajo@juan.com, juegos@juan.com,...) pero todos gestionables desde una misma cuenta, si quieres. Ello te permitiría que la actividad de uno de los perfiles no afectase a otros, pudiendo tener un perfil público de trabajo, por ejemplo, y otro anónimo para tus aficiones. E independientemente del servicio o servidor todos ellos serían compatibles, pues dispondrían de los mismos protocolos para comunicarse entre si.

El desarrollo no sería demasiado complicado, comenzaría con la creación de una plataforma que permitiese a los usuarios crear cuentas, perfiles, escribir anotaciones y compartirlas y enviarse mensajes privados. Un software así no necesita mucho más de una docena de tablas, y pocas más páginas. Entonces cualquier persona con espacio web podría copiar dicho software a su servidor y personalizarlo a su gusto. Y todos estos portales serían compatibles y se podría mandar mensajes entre ellos y compartir anotaciones siguiendo estándares derivados de los ya existentes, como RSS.

Ya solo con esto se podría prescindir de las redes sociales tradicionales en muchos aspectos, y si se consiguiese una red suficientemente amplia de usuarios, más gente y servidores se irían uniendo poco a poco, evitando la dependencia de las grandes redes sociales cerradas.

El segundo paso sería implementar un "api" para aplicaciones, que permitiese usar nuestros perfiles para registrarnos en ellas, recibir notificaciones en nuestra cuenta y enviar mensajes a otros usuarios. Tampoco esto sería demasiado complicado de programar, y tan solo requeriría de una base de usuarios algo mayor para animar a los creadores de aplicaciones a hacerlas compatibles con el nuevo sistema. Aunque en principio fuese un trabajo extra, a la larga les ahorrará tener que andar incluyendo apis distintas para cada red social, dado que esta propone un estándar que cualquiera pueda usar.

Realmente el reto no está en el desarrollo, sino en lograr una masa de gente suficiente como para que merezca la pena usarlo y más usuarios y servicios se vayan uniendo con el tiempo ¿Que me decís? ¿Creéis que se puede desafiar a Facebook con un proyecto abierto? ¿Podríamos triunfan den donde Google ha fallado tantas veces? Si os apetece intentarlo hace falta de todo, desde programadores hasta simples usuarios, desde gente con capacidad de organización hasta otros que sepan promover ideas.

Sinceramente creo que con muy poco esfuerzo podemos lograr establecer una nueva forma de comunicación en Internet que rompa las barreras, que aumente nuestra privacidad y libertad y favorezca la innovación, permitiendo que cualquiera participe con sus propias ideas. Se que no es lo más importante a día de hoy, pero si para algo tan simple dependemos de multinacionales ¿Como esperamos poder cambiar las cosas en casos más complejos?

martes, 15 de marzo de 2011

Menéame es ineficiente: Analisis experimental

He realizado este análisis tomando las noticias enviadas por 50 usuarios de meneame. Para escoger a estos usuarios he partido de las noticias publicadas en portada, de tal manera que garantizásemos una calidad mínima de usuarios, y no entrasen en la muestra gente que enviase noticias al azar. Tampoco he usado todas las noticias de cada usuario, sino tansolo las que entraban en la primera página de estos.

El resultado es el siguiente. De 1589 noticias enviadas solo llegaron a portada 216, es decir 86 de cada 100 noticias enviadas no llegaron al gran público. Esto carecería de importancia si aún las noticias sin publicar recibiesen una atención proporcional a su éxito, pero este no es el caso. Veamos el siguiente gráfico:


La línea amarilla representa el número de noticias no publicadas en portada (eje y) respecto al número de meneos recibidos (eje x) la línea naranja representa la misma información respecto a las noticias publicadas en portada. Podemos observar una "depresión" entre la línea amarilla y la subida inicial de la línea naranja. Esto significa que no hay una relación de continuidad entre las noticias publicadas y no publicadas, sino que las no publicadas reciben mucha menos atención en relación a su potencial que las que alcanzan la portada.

En concreto, 798 noticias recibieron 10 meneos o menos, y otras 357 entre 10 y 20 meneos. Es decir, la gran mayoría de noticias enviadas a penas recibieron atención. Pero lo importante es que existe un punto crítico que separa las noticias publicadas de las no publicadas, y noticias a priori igualmente válidas para su publicación obtienen un resultado muy distinto debido al hecho de llegar a portada o no.

Conclusión: Las noticias que no llegan a portada se pueden considerar automáticamente fracasadas y por tanto los usuarios mostraban de media menos de un 14% de "éxitos", o lo que es lo mismo una eficiencia menor del 14%. Tengamos en cuenta que se han escogido usuarios con noticias en portada, y por tanto quienes envían con cierto grado de eficacia.

El problema radica en gran medida en que las noticias perfectamente válidas pero que no llegan a portada no dispongan de una alternativa que incremente su visibilidad, quedando aplastadas por el resto de noticias.

Obviamente si quien envía noticias pretende simplemente probar su habilidad para alcanzar la portada como en una especie de "juego", meneame puede cumplir sus expectativas, pero para quien pretende simplemente difundir una idea o noticia su funcionamiento resulta claramente mejorable.

Adjunto a continuación el código fuente del programa en PHP usado para recoger los datos:


<form method='get'>
<input type="text" name="dir"/>
<input type="submit" />
</form>

<?php

session_start();

echo count($_SESSION['urls']).' publicadas: '.count($_SESSION['publicadas']).'/'.(count($_SESSION['no_publicadas'])+count($_SESSION['publicadas'])).
'='.(count($_SESSION['publicadas'])*100/(count($_SESSION['no_publicadas'])+count($_SESSION['publicadas'])));
$rangos=array();
foreach($_SESSION['no_publicadas'] as $noticia)
if(!isset($rangos[ceil($noticia/50)*50])) $rangos[ceil($noticia/50)*50]=1;
else $rangos[ceil($noticia/50)*50]++;

ksort($rangos);

echo '<table><tr><th>Rango</th><th>Apariciones</th></tr>';
foreach($rangos as $rango=>$apariciones)
echo '<tr><td>'.$rango.'</td><td>'.$apariciones.'</td></tr>';
echo '</table>';

$rangos=array();
foreach($_SESSION['publicadas'] as $noticia)
if(!isset($rangos[ceil($noticia/50)*50])) $rangos[ceil($noticia/50)*50]=1;
else $rangos[ceil($noticia/50)*50]++;

ksort($rangos);

echo '<table><tr><th>Rango</th><th>Apariciones</th></tr>';
foreach($rangos as $rango=>$apariciones)
echo '<tr><td>'.$rango.'</td><td>'.$apariciones.'</td></tr>';
echo '</table>';

if(!isset($_GET['dir'])) return;
$dir=$_GET['dir'];

if(!isset($_SESSION['urls']))
$_SESSION['urls']=array();
if(!isset($_SESSION['publicadas']))
$_SESSION['publicadas']=array();
if(!isset($_SESSION['no_publicadas']))
$_SESSION['no_publicadas']=array();

//print_r($_SESSION);

if(isset($_SESSION['urls'][$dir])) return;
$_SESSION['urls'][$dir]=1;

// Crear un nuevo recurso cURL
$ch = curl_init();

// Establecer URL y otras opciones apropiadas
curl_setopt($ch, CURLOPT_URL, $dir);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

@$info=new SimpleXMLElement(curl_exec($ch));
curl_close($ch);

foreach ($info->body[0]->div[0]->div[2]->div[0]->div as $new){
$noticia_datos=array();
if($new->div[0]->div[0]->div[0]->attributes()->class=='mnm-published') $_SESSION['publicadas'][]=intval($new->div[0]->div[0]->div[0]->a[0]);
else $_SESSION['no_publicadas'][]=intval($new->div[0]->div[0]->div[0]->a[0]);
}
?>


Por último dejo aquí algunas de las tablas usadas para la elaboración de la gráfica:

Meneos No publicadas Publicadas
50 1324
100 38 1
150 8
200 1 6
250 1 22
300 1 23
350
22
400
20
450
20
500
17
550
14
600
6
650
10
700
2
750
5
800
5
850
5
900
8
950
5
1000
3
1050
3
1100
3
1200
1
1250
3
1400
2
1450
1
1500
2
1600
1
1800
2
1950
1
2100
1
2350
1
2500
1

lunes, 27 de diciembre de 2010

Ideas P2P: Redirigiendo la propuesta para mejorar Menéame

Benjamin Villosada, socio de Meneame me ha respondido sobre la propuesta que realicé comentando que ya habían pensado en funcionalidades similares, pero que son prudentes y prefieren hacer una cosa y hacerla bien. Por tanto mi intención ahora es poner la propuesta a prueba para comprobar si realmente puede funcionar. Dado que ya hay bastantes sitios de noticias generalistas he buscado un enfoque nuevo que sirva para atraer a gente suficiente como para que la prueba resulte significativa. Aquí surge Ideas p2p, un sitio en el que la gente pueda difundir sus proyectos e ideas, encontrar gente con intereses comunes con quienes colaborar y compartir conocimientos y recursos para ponerlos en marcha.

Creo que todos tenemos multitud de ideas sobre cosas que queremos, necesitamos o creemos que se pueden mejorar. Quizás no conozcamos la solución a estos problemas o requieran demasiado esfuerzo. Pero si nos juntamos a otras personas con las mismas inquietudes es posible que entre todos si podamos resolverlos. De ahí el nombre de Ideas p2p, por que aunque nos hemos acostumbrado a que unos pocos emprendedores sean los que llevan la iniciativa, lo cierto es que cada uno sabemos lo que queremos. p2p significa "de igual a igual" y lo cierto es que los proyectos tendrían más posibilidades de triunfar si los usuarios dejásemos de ser meros consumidores y nos convirtiésemos en creativos, apoyando aquellas ideas que nos interesan y aportando nuevas soluciones.

En este contexto la propuesta realizada para menéame puede resultar muy útil, pues se basa en permitir que también las propuestas minoritarias puedan encontrar su lugar y no resulten descartadas. Sobre esto he creado un pequeño gráfico explicativo en donde además de tratar de mostrar como se difundirían estas noticias se pone de relieve que en el proceso se iría desarrollando una red de intereses comunes que podría servir para poner en contacto a gente dispuesta a colaborar.

La cuestión es saber si funcionará, y aquí necesitaría voluntarios. Para quien le interese, mi correo es jaime@legendarya .com y la lista de correo: https://groups.google.com/group/propuesta-para-mejorar-meneame?hl=es. Las cuestiones a plantear son ¿Veis interesante un sitio así, en el que se puedan promocionar ideas? ¿Podría funcionar? ¿Conocéis otros similares? Y en tal caso ¿Funcionan bien para promocionar ideas minoritarias, o se podrían mejorar? ¿Usaríais un sitio así? ¿A vosotros también se os ocurren ideas que no podéis poner en marcha o soy yo el único que se come la cabeza tontamente?

viernes, 24 de diciembre de 2010

Creador de aventuras gráficas online

Con las nuevas tecnologías gráficas para la web como SVG y posteriormente WebGL, no sería demasiado complicado desarrollar una plataforma en la que cualquier usuario pueda crear aventuras gráficas. En principio sencillas, sin animaciones, pero con los siguientes elementos:
  • Escenas
  • Objetos e inventario
  • Personajes y diálogos
  • Variables y scripting sencillo.
Con esto se podrían desarrollar ya algunas aventuras originales. La idea es que estando online en la web se facilitaría mucho el colaborar y permitiría desarrollarlas rápidamente. Se podría crear un pequeño editor de imágenes vectoriales o permitir que la gente las suba, y creando así una librería amplia sería relativamente fácil hacer pequeñas historias interactivas que permitiesen a la gente mostrar su creatividad.

Estamos demasiado acostumbrados a que la industria del entretenimiento nos provea de todo lo que necesitamos para ocupar nuestro tiempo libre. Pero la creatividad está en cada uno, y producir nuestras propias historias es tan satisfactorio o más como disfrutar de las de otros. Y probablemente nos sorprendiese el nivel de calidad que pueden alcanzar los trabajos de los aficionados cuando colaboran y disponen de las herramientas adecuadas.

sábado, 18 de diciembre de 2010

Creador de Mundos Virtuales (MOORPG)

Antes de nada, aclarar que me centro en el aspecto "conceptual" del tema. Así que la misma idea valdría para un entorno gráfico tipo WoW, como para un juego de texto.

La cuestión es aque no me gustan los juegos tipo WoW. Demasiado repetitivos, creo que les falta el trasfondo que solo una historia dirigida por humanos puede dar. La solución que propongo es que cualquiera pueda crear su propio mundo, pero que haya usuarios encargados de dar trasfondo, y hacer la historia significativa. En resumen para ello tendríamos a los siguientes usuarios:
  • "Dios Supremo": El usuario que crea el mundo, y quien decide como va a funcionar. De el dependerá que el juego se popularice.
  • Los "dioses": Usuarios todopoderosos pero que pueden ser escogidos o destituidos por el Dios supremo. Su libertad está solo limitada por las reglas que ellos mismos acuerden. Su papel es crear situaciones en el mundo que hagan interesante la experiencia. Como los dioses griegos podrían enfrentarse y preparar a sus "campeones", pero si se pasan de la raya pueden ser destituidos por el Dios supremo. EN general podrán desencadenar muchas de las aventuras de los personajes.
  • Los vigilantes: No tienen poder alguno en el mundo, pero pueden verlo todo, incluso los "pensamientos" de los personajes (mensajes escritos en una zona privada, con este fin). Son los ojos y oídos de los dioses. Y aunque no tienen poder directo, los dioses deberán conceder sus peticiones si son razonables o podrían perder a servidores muy útiles.
  • Los personajes representativos: Estos serían personajes normales, pero desempeñando alguna función extraordinaria (reyes, generales, instructores, monstruos,...). Podrían tener contacto directo con los dioses (aún sin saberlo, a través de personajes virtuales: "avatares"), y propondrían misiones a usuarios de rango inferior, para lograr objetivos necesarios en el desempeño de su cargo.
Las posibilidades en el resto del juego las tengo más difusas: moverse entre localizaciones (creadas por los dioses), tener encuentros, cumplir misiones, entrenarse y mejorar, construir objetos y comerciar,... pero todo ello más singular y con más trasfondo, haciendo de cada suceso una experiencia significativa.

domingo, 12 de diciembre de 2010

Un lenguaje para traducirlo a todos

Para traducir un texto de un lenguaje a otro, primero hay que interpretar el original y luego saber como escribir la misma información en el lenguaje de destino. Tengo entendido que para sistemas automatizados la primera parte es la más difícil, pues debido a la ambigüedad de los lenguajes naturales, es difícil para una máquina interpretar correctamente lo que el contexto implica.

Así que la idea es simplemente crear un lenguaje que las máquinas puedan interpretar fácilmente para garantizar la ausencia de errores en esa primera etapa. Con el podríamos, por ejemplo, escribir una web o un manual de instrucciones, y un sistema automatizado generaría el contenido correspondiente en el lenguaje de usuario, evitando la mayoría de los errores que se producen habitualmente en los sistemas automatizados.

viernes, 10 de diciembre de 2010

Bloq de notas inteligente

Quien ha desarrollado programas de gestión para PYMES, sabe que el cliente habitualmente desconoce lo que necesita. Y es que es normal, una base de datos es al final una abstracción de la realidad. Pero la realidad rara vez se puede simplificar lo suficiente como para que cualquier circunstancia entre dentro del programa.

Lo que la gente necesita es un bloq de notas, pero que trate de forma inteligente la información de tal manera que aproveche las ventajas de las nuevas tecnologías. Una factura, por ejemplo. Supongamos que dejamos al cliente crearla a su libre albedrío, pero que nuestra aplicación va sacando conclusiones para facilitar al cliente en su labor. Veamos a donde podría llegar:
-Podemos detectar que se está escribiendo una fecha, y ofrecer un calendario para seleccionarla, o advertirle si comete un error
-Podemos comprobar que en ciertos lugares el texto se repite algunas veces (el nombre del cliente, por ejemplo), y ofrecer los textos escritos anteriormente según se van rellenando
-Podemos comprobar que casi siempre que en cierto sitio se escribe un valor (el nombre del cliente, por ejemplo), en otros lugares se repite la misma información casi siempre (teléfono, dirección, nif,...)
-Podemos comprobar que ciertos campos se auto incrementan respecto a fichas anteriores
-Podemos ofrecer una calculadora y comprobar que ciertos campos son calculados tomando otros como referencia, y repetir el cálculo en posteriores ocasiones

Estamos hablando básicamente de un sistema que se programe solo, en base a las acciones del usuario, sin restarle libertad pero facilitándole el trabajo. Sería al final una mezcla entre procesador de textos, hoja de cálculo y base de datos.