fíam

(rhymes with liam)

  • Filtrus

    May 6, 2009 at 01:25:49 CEST

    Finalmente, hoy he podido encontrar tiempo para empezar a trabajar en el proyecto sobre el que escribí la semana pasada. Todavía pasarán unos días antes de que pueda publicar algo concreto, pero los progresos son importantes. He reescrito más o menos un 50% del código del backend web, cambiando el nombre original y portándolo a Django 1.1. Una vez termine esta fase, subiré toda esa parte a github y me pondré a portar el engine de recomendaciones a PostgreSQL.

    ¿Tiempo estimado? Probablemente el backend esté terminado para el viernes, mientras que al engine de recomendaciones probablemente me lleve uno o dos días más. El frontend por ahora no lo voy a modificar, aunque será en lo primero que me ponga a trabajar una vez la página esté funcionando.

    Lo que sí os puedo ya adelantar es el nombre del futuro sitio: filtrus.

    /goes back to coding

  • Creemos una alternativa

    May 6, 2009 at 01:18:04 CEST

    Son muchos los problemas de menéame y, probablemente, muchos seáis conscientes de ellos, así que me voy a saltar esa parte y me voy a ir directo a lo interesante.

    Hace unos meses, simplemente por diversión, me dediqué a programar un sitio al estilo de menéame a digg, intentando llevar esos mismos conceptos al siguiente nivel. Terminé cerrándolo porque, evidentemente, nadie lo usaba (es difícil darse a conocer cuando no tienes intención de gastarte dinero en publicidad) y mi único motivo para mantenerlo era divertirme y experimentar, cosa complicada cuando tu masa de usuarios ronda la centena.

    No voy a entrar en demasiados detalles, ya que no quiero que está entrada termine siendo demasiado pesada, pero sí haré una overview de las características del sitio que programé:

    • Sistema de recomendaciones
    • Cada usuario tiene una portada personalizada, basada en sus preferencias calculadas a partir de sus votos (llamemos a esta sección unfiltered)
    • Existe también una sección al estilo de la portada de menéame, donde se muestran las noticias que han superado un número determinado de puntos (filtered)
    • El sistema de promoción se basa completamente en las recomendaciones: cuanto menos probable sea que me guste una noticia, más peso tendrá un voto positivo emitido por mí (y menos peso un voto negativo). De esta forma se consigue una variedad increíble de contenidos, pues se evita completamente el "efecto enjambre" (mafia o bury brigades, como dicen en otros sitios).
    • Las noticias se organizan tanto por etiquetas como de forma jerárquica atendiendo a su localización (en las que sea aplicable). De esta forma, puedes por ejemplo consultar sólo la portada de las noticias que suceden en tu comunidad autónoma. Esto se aplica también al algoritmo de promoción, de forma que, por ejemplo, una noticia de Madrid primero tendrá que promocionar en Madrid, luego en España, a continuación en Europa y, finalmente, podrá pasar a la portada global (si consigue votos suficientes, claro).
    • El sistema soporta completamente tanto inglés como castellano (tanto en el interfaz como en los sistema de recomendación), pudiendo escoger el usuario el idioma del contenido al que quiere acceder.

    No obstante, y a pesar de que este sitio a día de hoy está cerrado, gran parte de su código está liberado y puede ser accedido a través de mis repositorios de github. Hay partes que aún no las he liberado debido a que mi trabajo actual no me ha dejado tiempo para terminar de limpiar todo el código, pero mi intención es que sea todo libre.

    Y, bien, ¿qué busco con esta entrada? Ofrecer a la comunidad el sistema que yo programé para que si, hay alguien interesado en mejorar las cosas que faltan, podamos entre todos crear un nuevo sitio que nos permita intercambiar contenidos sin que haya una veintena de personas que dicten lo que sale a portada y lo que no. Si hay suficiente gente interesada (tanto en ayudarme a pulir los detalles del código que faltan como a colaborar enviando y votando noticias), yo me comprometo a liberar todo este código y crear una página. Además, cualquiera que desee crearse un clon será también bienvenido.

    En cuanto a las características técnicas, el código del backend es Python y utiliza Django, mientras que todo el sistema de recomendaciones está escrito en C usando Glib (una de las librerías base de Gnome). El frontend es simplemente XHTML y se utiliza un poco de jQuery. Los cambios más importantes que habría que hacer son los siguientes:

    • Portar el backend a Django 1.0 (esto no debería ser mucho trabajo)
    • Portar el javascript a jQuery 1.3
    • Actualmente, el sistema de recomendaciones acceder a la base de datos utilizando la API nativa de MySQL. Sería deseable, por su mejor soporte de GIS, portar todo esto a PostgreSQL, aunque el sitio funciona perfectamente sobre MySQL.
    • No vendría mal mejorar un poco el diseño gráfico, puesto que el actual está hecho por mí y yo soy un tanto manco para esas cosas

    Si hay alguien interesado en colaborar con este proyecto, que deje un comentario y me envíe un correo (está a la derecha) y yo me pondré en contacto con él con la mayor brevedad posible.

  • Blango es libre

    April 1, 2008 at 01:02:01 CEST

    Acabo publicar mi árbol git de Blango, así como los parches necesarios que hay que aplicar sobre Django para que funcione. Es necesario aplicar el 0003 y el 0005.

  • Blog + Django = Blango

    March 26, 2008 at 00:02:39 CET

    Ese es el nombre que es escogido para el blog que estoy desarrollando y bajo el que funciona este sitio.

    Por ahora, es necesario parchear Django para que funcione, aunque todas las modificaciones que le he hecho podrían moverse al código del propio blog. No obstante, creo que algunas de ellas pueden ser útiles para más gente y he enviado los correspondientes parches al ticket tracker. Así que voy a esperar unos días, para saber si finalmente se aceptan o no, y ubicar definitivamente el código dentro de Django o del propio blog.

    Por ahora, las características que hay implementadas son:

    • Sintaxis de Markdown para escribir los posts
    • Coloreado de código fuente
    • Posibilidad de guardar las entradas como borradores
    • Etiquetas
    • Multilenguaje (con enlaces entre entradas que traducen otras)
    • Feeds RSS: global, comentarios de una entrada y cualquier combinación de etiqueta/lenguaje
    • Pingbacks y trackbacks, tanto recepción (con comprobaciones de que la fuente enlaza realmente a la entrada), como envío (con autodiscovery)

    Y otras que tengo en mente:

    • Etiquetas multinivel
    • Autocitado de los comentarios (p.e @autor enlaza automáticamente con el último comentario de "autor" para la misma entrada)
    • Detección de spam
    • Captchas
  • Rumbo a fflótalo.com - Acerca del karma

    March 22, 2008 at 17:41:40 CET

    Como algunos de vosotros sabéis, llevo algún tiempo trabajando en una página de noticias colaborativas (o social news site, como dicen al otro lado del Atlántico). Ahora que ya casi he terminado, voy a escribir varios artículos sobre cosas que me encontré mientras lo desarrollaba y me parecieron interesantes. En este primer artículo expondré mi opinión sobre una de las mejores ideas con la peor implementación: el karma.

    Desde hace algún tiempo, varias páginas web 2.0 han comenzado a usar un sistema de karma, no sólo como reconocimiento a los usuarios, si no también para dar más peso a las decisiones de los usuarios que más karma consiguen acumular. El problema es que muchos lo han hecho de la peor forma posible.

    No es blanco. Ni negro. Ni siquiera gris.

    Es del color que quieras. Eso es lo que ocurre con las decisiones basadas en la opinión. Ni aciertas ni te equivocas, simplemente es tu opinión. El problema es que algunas páginas se empeñan en medir lo correcta que es tu opinión, comparándola con la del resto de usuarios. El resultado es que o piensas como la mayoría, tu opinión se promociona y tu karma aumenta, dando más peso a tus futuras decisiones, o piensas de forma distinta a la mayoría de usuarios, tu opinión se ve silenciada, tu karma se reduce y, finalmente, no puedes enviar noticias ni comentarios al sitio.

    Además, el karma también influye en el karma que ganan o pierden los usuarios que reciben tus votos. De esta forma, el sistema se realimenta, favoreciendo a los grupos de usuarios que se votan entre sí.

    ¡Es el karma, te aseguro que funciona!

    Cierto, funciona muy bien, pero no para medir cuan correcta es una opinión. No obstante, hay sistemas en los que funcionan muy bien balanceando el peso de los votos con karma. Estoy seguro que en este momento ya lo habéis adivinado: si es blanco o negro, el karma funciona.

    Por ejemplo, supongamos que cierta noticia sucede en Londres, pero tú la geolocalizas en Japón. Estás equivocado, y no hay vuelta de hoja. No obstante, aunque tu karma se ve mermado por haber geolocalizado mal esa noticia, tu opinión debe seguir pesando lo mismo. !Es tu capacidad para geolocalizar noticias lo que debería de perder peso!

    ¿Merito qué?

    Algunas páginas justifican este tipo de sistemas de karma diciendo que, de esta forma, el sistema se gobierna según una meritocracia. Dicen que incrementar su karma es fácil, cuanto más tiempo utilices la página, más subirá tu karma. Así que si careces de tres horas al día para emplearlas en su página, no te mereces una buena experiencia de usuario. Sólo te mereces que te silencien.

    Por otra parte, la forma que promulgan de incrementar el karma es totalmente falsa. Para que tu karma aumente, además necesitas también que tu opinión sea la misma que la de la mayoría (o, al menos, hacer que lo parezca). No obstante, en ninguna página reconocerán eso.

    Una minoría controla la mayoría

    Debido al sistema de votación basado en el karma, todos los sitios que implementen este sistema terminarán por convertirse en ghettos informativos. Es decir, todos los artículos y comentarios promocionados estarán claramente sesgados hacia un opinión de cierto tipo. Lo peor es que esto no representará la opinión de sólo una minoría de usuarios con los karmas más altos, obtenidos y mantenidos a base de votarse positivamente entre ellos mismos.

    Un ejemplo real

    Existe una página española bastante conocida utilizando este sistema de votación basado en el karma: meneame.net. Si pasáis un rato echándole un ojo, no tendréis problema en verificar los puntos que expongo en este artículo.

    En la siguiente parte, hablaré sobre mis ideas sobre otro paradigma usado en las páginas de noticias colaborativas: todos los votos pesan lo mismo.