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.