Archivos de la categoría ‘software’

Barra de Menéame, y Facebook

noviembre 23, 2011

Muchos usuarios nos piden que los enlaces se abran en otra ventana. Menéame comenzó así, pero muchos se quejaron por lo “intrusivo”, así que lo cambiamos a cómo está ahora. Pero es molesto para los usuarios más activos, al ir a mirar un enlace se pierde el “contexto”, además, si se abre desde pendientes o la portada y “volver atrás”, la página puedo haberse actualizado y por lo tanto se pierde la posición original.

Por ello @Ramsys nos propuso una barra donde se pueda votar a la noticia. Desde esta madrugada ya está en marcha:

(más…)

Volcado en texto plano (“raw”) de los votos de noticias

septiembre 1, 2011

Israel Herraiz, en un comentario en G+, nos solicitó un volcado de la base de datos para hacer análisis de votos para detectar spam. Ya hicimos lo mismo para varias universidades y centros de investigación que nos lo solicitaron, pero es un proceso laborioso ya que tenemos que asegurarnos que no se envía ningún dato personal (lo que significa tenemos que construir el SQL para obtener sólo los datos anónimizados que nos solicitan).

Para facilitar el trabajo a todo el mundo, agregamos una funcionalidad que permite obtener el volcado de la tabla en formato texto para que sean fácilmente analizados por un programa. Para ello sólo hay que agregar /votes_raw al URL de la noticia, por ejemplo:  publica-password-descifra-todos-cables-wikileaks/votes_raw. Estos datos son muy similares a los que ya se obtienen en la pestaña “votos”.

Los campos que devuelve son:

  1. Fecha y hora en formato ISO 8601
  2. Valor del voto (los negativos cuentan como el karma del usuario, pero el número indica tipo de voto: irrelevante, duplicada, etc.)
  3. Nombre de usuario (vacío si es anónimo)
  4. Karma actual del usuario (0.0 si es anónimo)

Los datos son un volcado sin modificar de lo que hay en la tabla “votes”. El voto negativo es igual que el positivo, pero cuando es negativo se almacena el código del voto como se indica antes. Su valor real es aproximado al valor del karma (como en el positivo) pero en negativo. Puede haber variaciones, ya que a posteriori se hacen otros cálculos, o que el karma del usuario puede haberse modificado por el recálculo diario (el segundo campo siempre es al momento de votar). El karma (cuarto campo) que sale en el listado es el actual del usuario, no el que tenía cuando se votó (pero si la noticia no está publicada, el valor que se usa es siempre el karma actual del usuario).

Para obtener un listado de los URLs de la noticias se pueden usar los RSS (publicadas, pendientes), o el sitemap si interesa el listado sólo de las publicadas.

Apuntes de los blogs de usuarios

febrero 16, 2011

Cada día…

  • Hay usuarios que comparten entre 800 y 1.000 enlaces.
  • Se escriben entre 6.000 y 10.000 comentarios en noticias, 1.000 a 1.500 notas en el Nótame.
  • 15.000 personas participan con sus votos.
  • 30.000 personas miran la cola de noticias enviadas.
  • Se publican en portada entre 50 y 70 noticias.
  • Más de 90.000 seguidores en la cuenta de Twitter.
  • La portada de Menéame tiene 300.000 visitas cada día, y sigue subiendo.

(más…)

Subir imágenes en comentarios y notas

diciembre 5, 2010

Desde hace unas horas ya se puede subir una imagen a cada comentario y nota. En el formulario de ambos aparece el botón para seleccionar, abajo a la derecha:

(más…)

Mantenimiento: actualizaciones de seguridad

febrero 11, 2010

El día 12 de febrero a la 01:00 hs (madrugada del 11 al 12) llevaremos a cabo actualizaciones de seguridad del MySQL y el núcleo. El tiempo estimado no superará los 5 minutos, pero podría afectar el rendimiento unos pocos minutos más hasta que la cache se cargue completamente.

Disculpad las molestias.

Mejoras en Menéame en los últimos meses

septiembre 27, 2009

Aunque no lo hemos comentado en el blog, estamos continuamente introduciendo mejoras, algunas de ellas pedidas por los usuarios, otras que no son visibles (la mayoría) pero que se hacen para mejorar el funcionamiento y para detectar y evitar abusos.

Estas son algunas de las novedades implementadas en los últimos tres meses.

Versión móvil

Hemos reprogramado la versión móvil del Menéame desde cero. Además de ser compatible con la mayoría de smartphones (Android, iPhone…) permite casi el mismo nivel de interacción que la versión estándar  Así se puede:

  1. Votar noticias
  2. Autentificarse como usuario
  3. Buscar
  4. Escribir comentarios
  5. Paginación de comentarios

Todavía no hemos implementado los votos a comentarios y votos negativos a noticias, aunque seguramente los añadiremos en el futuro a medida que las capacidades de los teléfonos aumenten.

Nótame

Hace algún tiempo ya pusimos las notas referenciadas, bastaba con escribir @ antes del nombre del usuario a quien nos dirigíamos, con ello se conseguía que apareciese su última nota y a su vez se mostraba en nuestra pestaña de conversación. Esto sigue funcionando, pero para mejorar el sistema de conversaciones se ha añadido un icono (una flechita) debajo de cada nota para poder referenciar una nota en concreto.

Esto soluciona dos peticiones de los usuarios y mejora la coherencia del sistema de notas:

  1. Se puede contestar una nota concreta, por si el usuario a quien queremos contestar ha escrito algo más después de lo que nos interesa.
  2. Se soluciona el problema de perder hilos cuando un usuario se cambia de nick o escribe una nota “intermedia”, ya que la referencia es al número de la nota.

Por otro lado, al acceder a una nota concreta vemos bajo ella aquellas que le contestan. De este modo es más fácil seguir determinadas conversaciones (y memes).

También se ha añadido un icono (una estrella) y su correspondiente pestaña para poder marcar los nótames favoritos.

Log de cálculo de karma

Por otro lado, se ha añadido en la pastaña “log” de cada meneo un cuadro con una explicación más extensa de los cálculos de karma. En este cuadro se pueden ver los diferentes eventos que acontecen en cada meneo (bonus, decreasing… ). Somos conscientes de que el cálculo de karma es un algoritmo complicado de entender por eso se añaden estas explicaciones que indican los factores fundamentales que afectaron al cálculo.

Esperamos que con esta herramienta se vea como evolucionan los meneos de una manera más clara.

Enlaces cortos (comando !gs) en la fisgona

Otro avance del código es la posibilidad de acortar los enlaces que se pasan por la fisgona. Para ello se ha añadido un comando que crea un nuevo enlace usando la herramienta ofrecida por Fon Labs.

Basta con escribir !gs url [nombre] (nombre es opcional) en la fisgona para generar un url corto en fon.gs.

Definiciones de la RAE (comando !rae palabra) en la fisgona

Al perder una herramienta que usábamos habitualmente, se ha añadido este comando en la fisgona para poder ver rápidamente la definición que la RAE da a una palabra concreta.

Votos a comentarios

A partir de hace unos días al pasar el puntero sobre los votos a comentarios aparece un texto explicativo de para que sirve cada uno de los votos. Hemos decidido indicarlo explícitamente para fomentar que no se voten negativo a aquellos comentarios correctos y argumentados sólo porque tienen una opinión diferente

Descripción automática en la entradilla

A la hora de enviar una noticia se introduce automáticamente el texto en el campo de la entradilla. Esto funciona sólo para aquellos sitios que tienen el campo meta description (<meta name=”description” content=”…” />). Aunque suelen ser incompletas o estar en otro idioma al menos sirve como guía.

Aunque el texto del título se muestra justo arriba del campo del formulario correspondiente, no se introduce automáticamente ya que la mayoría de los sitios adjuntan también el nombre del blog o del sitio web. Preferimos que se haga copy&paste para evitar esa información que no es relevante al título del envío.

Explicación simple del algoritmo de promoción de noticias (promote)

mayo 7, 2009

Actualización mayo 7, 2009: En la pestaña log de cada noticia se puede observar en qué momento se hicieron los reajustes de karma y las notas informativas del algoritmo.

Siempre que una noticia controvertida con varios votos negativos  (y/o que algunos piensen que no “queremos que salga” aunque le hayamos votado positivo o dado publicidad en nuestros blogs) no sale publicada surgen sospechas o conspiranoias de que “hay manipulación”, aunque el algoritmo de promoción es público, como así también los cálculos que realiza.

Suele pasar porque hay parámetros que ajustan el valor del karma de la noticia y hay poca gente capaz o con tiempo para tomarse el trabajo de leer el código y  de seguir la evolución del karma de cada noticia. Para esas personas intentaré explicar el funcionamiento básico del promote, y porqué lo hemos implementado de esa forma.

Los parámetros que más afectan al karma son los siguientes, ordenados más o menos de los que más influyen a los que menos:

  1. Bonus temporal a las nuevas noticias
  2. Coeficiente por metacategorías
  3. Añejamiento de noticias antiguas
  4. Control de diversidad de votos (o de afinidad)
  5. Control de media de votos

(Recalco lo de “más o menos”, ya que depende de varios factores, por ejemplo si la media de votos de una noticia es muy baja, afectará más que los demás, pero está al último porque no se suele llegar a esos extremos, salvo casos de intento de spam con muchos usuarios nuevos o inactivos por mucho tiempo, por ejemplo)

1. Bonus temporal a las nuevas noticias

El objetivo es publicar rápidamente aquellas noticias que reciben muchos votos apenas se envió la noticia. Este algoritmo funciona desde el primer día. Básicamente multiplica el karma de la noticia por un coeficiente decreciente tempral entre 2 y 1 1.5 a 1. A las dos horas el coeficiente se hace igual a uno por lo que deja de influenciar. Este coeficiente es visible en el promote, la columna COEF. La explicación más completa.

2. Coeficiente por metacategorías

En Menéame hay cuatro metacategorías: ocio, cultura, actualidad y tecnología. El objetivo es intentar tender a un balance entre número de enviadas y publicadas en cada categoría. De esta forma también se evita que el Menéame sea monotemático –o dominado por unas pocas categorías–.

Basado en el número de enviadas / número de publicadas de cada metacategoría se calcula un coeficiente. Los coeficientes de cada una son visibles en el promote. Por ejemplo ahora mismo:

Karma coefficient for tecnología: 1.31632555175
Karma coefficient for cultura: 0.982548801982
Karma coefficient for actualidad: 0.93282154627
Karma coefficient for ocio: 0.872050062752

Los números anteriores significan que a las noticia de tecnología se multiplica por 1.31 mientras que a las de actualidad 0.92. Esos coeficientes son medias entre las enviadas y publicadas de cada una en los últimos 2 días. Están también disponibles justo arriba de los coeficientes anteriores:

2 days stats for tecnología (queued/published/total): 157/13/98 -> 0.0679107630313
2 days stats for cultura (queued/published/total): 175/19/98 -> 0.0905408163265
2 days stats for actualidad (queued/published/total): 455/44/98 -> 0.10136577708
2 days stats for ocio (queued/published/total): 176/22/98 -> 0.104336734694

Los tres números de cada meta significan respectivamente: número de enviadas, número de publicadas y publicadas totales.

3. Añejamiento de noticias antiguas

El objetivo del algoritmo es quitar progresivamente la relevancia de las noticias después de varias horas (nueve). Se hace así para evitar que salgan publicadas siempre noticias de hace varios días, ya que por razones lógicas –el tiempo que están en pendientes– las más antiguas tienen más posibilidades y probabilidad de tener más votos que una noticia reciente.

El coeficiente varía progresivamente desde 1 a 0.4 una vez que han pasado nueve horas desde que se envió la noticia. Este coeficiente es visible también en la columna COEF del promote.

La parte del código que lo calcula es:

// Aged karma
$diff = max(0, $now - ($link->date + 9*3600)); // 9 hours without decreasing
$oldd = 1 - $diff/(3600*60);
$oldd = max(0.4, $oldd);
$oldd = min(1, $oldd);
$link->new_coef = $oldd;

El añejamiento de cada noticia también funciona desde el principio del Menéame.

4. Control de diversidad de votos (o de afinidad)

El objetivo de este control es evitar que grupos de usuarios se voten las noticias entre ellos y logren publicarlas (eso que algunos dicen que existen y llaman “mafias”).

El algoritmo calcula un porcentaje de afinidad entre usuarios y decrementa el karma que “aportan” a la noticia dependiendo de la afinidad con el usuario que le envió: a mayor afinidad menor es su influencia final (aunque el voto siempre suma). Con esto se asegura que para que una noticia salga publicada tiene que haber un mínimo de diversidad de votos.

El algoritmo está explicado en detalle en otro apunte. Está activo desde principios de setiembre de este año (2008).

La parte esencial del código que calcula el coeficiente de afinidad es el siguiente:

foreach ($votes as $vote) {
	if ($vote->id > 0 &&
			$vote->id != $uid &&
			abs($vote->count) > max(1, $nlinks/10) ) {
		$c = $vote->count/$nlinks * 0.75;
		if ($vote->count > 0) {
			$affinity[$vote->id] = round((1 - $c)*100);
		} else {
			$affinity[$vote->id] = round((-1 - $c)*100);
		}
	}
}

5. Control de media de votos

El objetivo de este control es evitar que se creen usuarios nuevos –o se tengan usuarios “inactivos”– con el único objetivo de publicar noticias de un determinado sitio. Por ejemplo que se pongan de acuerdo en un foro, o que haya grupos o empresas con muchos usuarios los intenten “vender” para promocionar sitios.

El promote analiza las medias de votos en los últimos días y usa esa media para controlar que no haya desvíos importantes. La media es visible en el promote:

Karma average for each link: 9.15856554197

Esto significar que la media ponderada de los votos a cada noticia en los últimos días es igual a 9.16.

Para cada noticia se calcula cuál es la media de sus votos. Si la diferencia de la media de un enlace es inferior al 3% de la global –para permitir variaciones hacia abajo–, entonces no toma en cuenta votos inferiores a la media para hacerla como mínimo igual a 9.16 * 0.97 (el -3%) aproximadamente.

Este control funciona desde el primer semestre de 2007.

Tuvimos que hacerlo cuando empezamos a detectar los intentos de spams mediante la creación de decenas de usuarios, especialmente cuando se acercaban fechas electorales o campus parties (ademas incluimos más controles de frecuencia de registros que se pueden hacer por IP y subred).

// Make sure we don't deviate too much from the average
// (it avoids vote spams and abuses)
// Allowed difference up to 3%
$karma_pos_user = (int) $karma_pos_user_high +
                  (int) min($karma_pos_user_high * 1.07, $karma_pos_user_low);

El karma es fundamental

Espero que esta breve explicación elimine algunas dudas sobre el funcionamiento del algoritmo de promoción y que de más tranquilidad, ya que está claro que se intenta asegurar que no haya abusos y grupos que tengan más influencia –llámese mafias o fanboys– capaces de publicar noticias sólo con sus votos.

En toda la explicación de las diferentes técnicas, el parámetro fundamental que evoluciona con el tiempo es el karma –en este caso el de las noticias, pero también el de cada usuario–. Ojalá que aclare mejor lo que comentábamos hace tiempo sobre la potencia y utilidad de ese numerito que llamamos “karma” [*]:

Lo anterior creo que explica más o menos los fundamentos de tener un karma: es un sistema básico de protección “anti abusos” que evita tener que tomar medidas más “drásticas”, además hace posible el voto anónimo.

[...]

Sí, admitimos que no es perfecto, ni de lejos, pero el karma ha sido fundamental para controlar y evitar abusos sin tener que recurrir a medidas extremas y un coste de administración que hubiese sido prohibitivo para nosotros.

(y permite publicar todo, el algoritmo y sus cálculos)

[*] Es decir, la potencia de las matemáticas de nivel de ESO para hacer cálculos y controles complejos y a la vez resumirlos en un número que todos podemos entender para darnos una idea de la “situación” :-)

Conversaciones en comentarios y notas

enero 21, 2009

Casi desde el principio uno de los puntos fuertes del Menéame son los comentarios de los usuarios. La media de comentarios diarios ronda entre 7.000 y 8.000 por día (hay días que se superan los 10.000, en pocas horas llegaremos a 3.500.000 comentarios). Aunque no es fácil ha sido una prioridad para nosotros el hacer un sistema que sea muy rápido y sencillo, sin captchas, sin necesidad de escribir HTML para poner enlaces, fácil de contestar a uno o varios comentarios (con el #nnn), las notas emergentes de las referencia a comentarios, etc.

No es fácil porque hay que evitar el spam, el astroturfing, la repetición de comentarios con copy&paste (para trollear o hacer spam), buscar la forma de mostrar de forma resumida los comentarios muy largos, etc. Pero creemos que todas estas facilidades han permitido que el sistema funcione bastante bien y que fomente la discusión, debates, flames [*]. Pero faltaba algo, lo que hemos puesto en marcha hace unas horas.

Cada usuario puede visualizar los comentarios de otros que contestan o referencias a los suyos usando el #nnn. Se accede en el perfil de cada usuario (por ejemplo), se visualizan las respuestas de hasta 15 días de antigüedad.

De la misma forma, en la página del Nótame se agregó una pestaña que permite visualizar las notas que responden o hacen referencia vía el @nombre_usuario.

Ambos tipos de conversaciones se pueden seguir vía RSS, los enlaces aparecen en el icono de RSS arriba a la izquierda de las respectivas pantallas.

Pensamos que ambos sistemas facilitarán enormemente la tarea del seguimiento de las respuestas de los comentaristas más activos, que al fin y al cabo son los que más valor aportan a las noticias enlazadas.

[*] Aunque todo es mejorable, en general hemos conseguido que no se convierta en un sitio lleno de insultos y frases racistas u xenófobas como ocurre con muchos sitios y foros sin moderar y con muchos  comentarios. Por eso a veces los sistemas de control penalizan injustamente (como el karma muy bajo para comentar) a quién no debería, otras somos muy estrictos con el racismo o la apología de la violencia. Es un precio que hay que pagar para que no se convierta en un estercolero, disculpas otra vez a los afectados por nuestros propios defectos y excesos, esperamos que comprendan el problema y por qué lo hacemos.

A pesar de lo anterior hay una par de cosas que nos disgusta especialmente, no es demasiado frecuente pero ocurre.

Una es la actitud de algunos usuarios de votar negativo a comentarios perfectamente válidos, educados y con argumentos construidos lógicamente sólo porque tienen una opinión diferente o son críticos con la actitud mayoritaria en esa noticia. Por eso tuvimos que poner límite de karma para votar a comentarios en un intento de reducir este tipo de votos. Estaría bien que no se recurra a este tipo de votos y si se observa este comportamiento con algún comentario, votarlo positivo para evitar que “quede gris” y que penalice el karma del autor. Si el sistema lograse autoregularse sólo con el voto de todos podríamos evitar esas penalizaciones injustas.

Ocurre lo contrario con otro tipo de comentarios. Hay algunos que recurren a frases o insultos demagógicos (como mentar a grtios a la madre del Ministro de Cultura) y que reciben muchos votos positivos. A veces es peor, son directamente frases racistas, xenófobas o de apología de linchamientos. Sobre todo en este último caso pediríamos que se vote negativo. Si funcionase así muchas veces nos evitaría tener que recurrir a los bans por no cumplir las normas, fundamentalmente porque resultaría muy “pedagógico” para los demás usuarios.

Por cierto, ayer hemos llegado al envío 500.000.

Nueva versión móvil del Menéame

diciembre 30, 2008

Hace tiempo que teníamos en marcha la versión móvil en mueveme.net, pero era muy básica. Desde hace varios publicamos nuevas funcionalidades, como hacer login, votar como anónimo o usuario, ver todos los comentarios, etc.. Desde hoy también es posible escribir comentarios. Además es totalmente compatible con XHTML Basic 1.1.

La dirección: m.meneame.net

m.meneame.net, versión móvil del Menéame

m.meneame.net, versión móvil del Menéame

Miniaturas de Youtube, Google Vídeo, Metacafe y Vimeo

diciembre 24, 2008

Además de hacer varias mejoras en el código [*] en la detección de imágenes [**] hemos agregado las miniaturas de vídeos de Youtube, Google Vídeos, Metacafe y Vimeo. Ejemplos:

[*] Se hizo al código más orientado a objetos para facilitar las mejoras y ampliaciones. También es bastante modular, con un “API” muy sencillo y casi totalmente independiente del código del Menéame (salvo una función simple que filtra los URLs) para que pueda ser usado en otros proyectos. Por ejemplo para usarlo:

$parser = new HtmlImages($url); // Inicialización
$img = $parser->get(); // Obtiene la imagen seleccionada
$img->scale(60); // Escala al tamaño máximo deseado
$img->save($filepath); // Graba donde se le indique

[**] También reconoce los “estándares” <link rel=”image_src”…  /> y <meta name=”thumbnail_url” .. /> dentro del <head> del HTML.


Seguir

Get every new post delivered to your Inbox.

Únete a otros 26 seguidores