domingo, 21 de diciembre de 2008

Faroo, motor de busqueda P2P

Los motores de busqueda tradicionales como Google y Yahoo intentan copiar toda la web a un solo sistema. Si lo piensas, es una extraña idea que requiere cientos de miles servidores y una gran inversión para mantenerse. FAROO intenta solucionar este problema repartiendo el indice de las páginas entre los computadores del mundo a través de peer-to-peer. Esta tecnología, que se hizo famosa con los compartidores de archivos como Napster, es sumamente barata ya que el servidor se encuentra en el mismo usuario.
Una de las principales ventajas de este sistema es la rapidez con la que se actualiza. Como el sistema aun no tiene una buena cantidad de usuarios, el sistema funciona algo lento aunque esto se arregla integrando resultados de otros buscadores como Google y Yahoo. Tienen un computador haciendo crawling, así que tienen ya resultados útiles evitando de este modo el problema del huevo y la gallina. Impresionantemente, para tus casos personales, los resultados de las busquedas son bastante buenos (cuando los hay), el sistema funciona con un ranking basado en la atención que el usuario le brinda a cada sitio (y como la cantidad de usuarios no es mucha, la relevancia de cada uno es considerable).
Entre las cosas que tengo que criticarles es que al ser un proyecto con tanta capacidad, este es de codigo privado con lo que la velocidad de su desarrollo esta reducida. Por otro lado esta su costumbre de correr el buscador en el puerto 80, el cual suele ser usado por los servidores web. Otros software que corren en el puerto 80 suelen dar otro puerto como alternativa, Faroo no lo hace. Si el puerto 80 ya no puedes realizar busquedas aunque sigue funcionando el P2P.
Aunque los resultados son entregados por un XML el cual luego es formateado por el browser, se extraña una API publica lo cual afecta directamente su falta de extensiones y de aplicaciones que extiendan su funcionalidad.
A pesar de las desventajas mencionadas, esta es una apuesta por la que vale la pena arriesgarse, a medida que crece la cantidad de usuarios, mejora la velocidad del sistema y la calidad de los resultados. En lo que respecta a uso de recursos y estabilidad de la busqueda, esta es bastante estable. Aparte de que el uso de recursos es configurable, el sistema es robusto a la perdida de usuarios, por lo que la calidad de los resultados no se ve afectada.
En mi caso personal, yo lo estoy usando como buscador alternativo a mi buscador principal Inquisitor, el cual me permite tener resultados a medida que busco, si entre los 4 resultados ofrecidos no esta lo que busco, uso Faroo.

miércoles, 17 de diciembre de 2008

Compartir, el gran cambio que trajo la web.

Desde las redes P2P hasta la web 2.0 actual, muchos se han preguntado la misma pregunta: ¿Por que compartimos?. De acuerdo a la lógica del capitalismo, compartir algo sin obtener nada a cambio es absurdo, ¿Por que habriamos de compartir lo que tenemos? ¿Por que tendriamos que ceder nuestra ventaja competitiva?. De acuerdo a Isaac Mao y al sharismo el compartir siempre ha sido parte de la naturaleza humana. Se ha visto en el trabajo de otros autores como "Intercreatividad", "La inteligencia colectiva" o "La arquitectura de la participación". El ser humano es un animal social, el acto de compartir le provee de capital social y de una abundancia de respeto por parte de la comunidad. Internet nos dio una herramienta que nos permitió compartir en forma fácil y masiva. Nuestra naturaleza humana nos permitió crecer al compartir. El conocimiento generalizado, y la rapidez se pueden explicar en el siguiente dibujo:

La inteligencia individual es asimilable a una neurona. La inteligencia grupal, que desafía cualquier intento de localización, captura o  aislamiento,  distribuida y fluida como nuestro propio cerebro.
Las aplicaciones web crecieron en esta dirección también. Ya no eran páginas estáticas que proveian contenido "exclusivo", su unica intencion ahora era proveer un medio para que los usuarios compartieran lo que tenian. Así ahora tenemos la posibilidad de compartir en diversos modos y formatos: Scribd nos permite compartir documentos, Jamendo nos permite compartir la música que creamos con un publico que lo agradece y te entrega un feedback valioso, MindMeister empezó a permitir la generación a mapas mentales colaborativos en los que pudieran participar varias personas y publicarlos libremente, ni hablar de YouTube el cual es actualmente el segundo buscador más usado sin nunca haber intentado serlo, los videos generados allí han generado una nueva generación de idolo nacidos de internet y los cuales tuvieron su momento de gloria en el Youtube Live. Si quiero seguir, debo mencionar a Wikipedia el cual permite que la gente comparta su conocimiento libremente y confiando solo en la buena intención de los autores, y ahora es una fuente para tdo estudiante o curioso. Y es que el esparcimiento del conocimiento es una de los mayores logros que ha tenido la web, Videolectures pone a disposición de las personas lecturas en diversos temas y Howcast provee rapidos y simples tutoriales de gran utilidad. Ninguno de estos sitios le paga a un experto para que revise el contenido ni para que lo genere, este se crea y se esparce en forma natural. Si quisiera seguir mencionando no terminaria nunca, siguen lso sitios que permiten compartir links, imagenes y conocimiento especifico de algun tema. He decidido lanzar un pequeño experimiento, he creado este mapa mental para que sea libre de editar por otros, y veamos como se llena.


Esta revolución trajó cambios afuera de internet también. El compartir es mucho más común entre las personas. La componente social se ha incrementado, ya no nos parece raro el letrero "Abrazos Gratis". La licencia Creative Commons surgio como algo natural, para los querian compartir. Y un movimiento un poco más nuevo, Freecycle lleva el compartir como una alternativa para desacerse de las cosas que no nos sirven. Por supuesto, internet es parte importante a la hora de hacer esto posible, pero no es internet quien esta compartiendo, somos nosotros. Algunos han querido interpretar estos movimientos como comunismo o socialismo, pero es distinto, aquí nadie te obliga a compatir ni nadie te prohibe hacerlo. No es ningun modelo economico existente, pero se ha esparcido con notoria rapidez a través de la gente que lo comparte

viernes, 12 de diciembre de 2008

La SCD y del porque no se ha avanzado en las excepciones de los derechos de autor

Hoy dia tuve la opción de asistir al Foro Panel sobre reforma de propiedad intelectual, donde estuvieron presentes las siguientes entidades: la Sociedad de Derechos de Autor, el Consejo nacional de la cultura y las artes, Liberación Digital y la asociación del derecho informático.
Como sabran el acuerdo secreto entre la SCD y el gobierno impide que las demas organizaciones tomen parte en la discusión sobre la legislación sobre los derechos de autor. Esto deriva en que la ley resultante tiene una fuerte inclinación hacia la sobreprotección de la obra la cual no soporta excepciones para la educación y la cultura. Y además quiere cobrarle a los ISP (Internet Service Provider) por la circulación de material artístico que no paga derechos de autor. Esto último es sencillamente absurdo, es como cobrarle a las carreteras por los camiones de dvd's piratas. Estos son los principales puntos con los cuales se ataca la ley. La mayoria de las presentaciones (excepto obviamente la de la SCD) se basaron en esto. La presentación de la SCD trato de hablar de su labor a la hora de ayudar a los artistas y en la difusion de la cultura y habló de los diversos problemas que tienen los artistas para obtener otras fuentes de ingreso aparte de los derechos de autor. Casí no hablaron de la ley sino al final, donde la señorita Denisse Malebran se contradijo magistralmente al decir que promovian las excepciones a los derechos de autor, pero que si un profesor fotocopiaba páginas de un libro, era ilegal y por ende tenia que pagar.
La SCD trato inutilmente de limpiar su imagen y la señorita Denisse Malebran pasó por ignorante al responder las preguntas de un par de estudiantes de derecho. De hecho no se por que la SCD decidió mandar a su secretaria general (la cual es compositora y musico) en vez de mandar a un abogado que pudiera saber más del tema (aunque pensandolo el director tampoco sabe mucho).
La excusa que da la SCD para negar las excepciones es simplemente suponer que le van a robar y que la van a engañar. Bajo esta predisposicion, no hay excepción ni razonamiento que valga. Quizas necesitemos recordarles que en Chile se es inocente hasta que se pruebe lo contrario. Y bajo el pretexto de que se van a pasar "todo el tiempo" en tribunales no quieren que la justicia chilena actue como mediadora.
En breve, la SCD no tiene la más minima intención de agregar excepciones ni de escuchar razonamientos al respecto y mientras el acuerdo entre el gobierno y la SCD siga presente, esto no va a cambiar.

La realidad de los browsers en Chile.

Revisando los proyectos del Impact Mozilla me encontre con el proyecto: La Conexion de Mozilla el cual promueve la difusión del Firefox en los locales de internet de un pais sudamericano. Como buen chileno esperaba encontrar a mi pais entre las opciones para desarrollar el proyecto. Comprenderan mi decepción cuando ví que ni siquiera estabamos en la lista. El país elegido para esto sería Paraguay dado su fuerte crecimiento en la cantidad de usuarios activos por dia (Aún cuando Colombia tiene un porcentaje de crecimiento mayor, el ambiente inestable no lo hace un buen lugar para instalarse).

Percent Increase of Active Daily Users Per Day by South American Country
Al ver la notoria diferencia existente no puedo menos que sentirme preocupado por la realidad de mi pais. Entiendo que estos números solo representan el incremento en el porcentaje de usuarios de Firefox en el pais. Pero dada la relación que este pais tiene con iInternet (no por nada estamos entre los mayores usuarios de Facebook a nivel mundial) esperaba que al menos en los browsers tuvieramos un mayor conocimiento de las opciones disponibles. Aún así me alegra ver que aunque el crecimiento es lento tenemos una buena cantidad de usuarios de Firefox (aunque los valores mostrados en el gráfico no estan por capita)

Active Daily Users Per Day by South American Country

Y ahora que lo pienso, cada vez que he necesitado ir a un cibercafe me encuentro no solo con la sorpresa de que no tiene Firefox, sino que más encima corre Internet Explorer 6. Teniendo en cuenta que vamos en el segundo beta de la versión 8 esto es un claro retraso. Esto es claro cuando vemos que lo que más le gusta a los nuevos usuarios de Firefox son los tabs. Una cualidad que ofrecen todos los exploradores actuales, excepto (claramente) Internet explorer 6.

Survey of most important Firefox features for new users
No voy a mencionar el hecho de que la extensibilidad apenas aparece mencionada con el Add-ons manager. Ni ninguna de las otras características que ya tienen otros browsers. El que a los usuarios les gusten los tabs es una clara señal del uso de Internet Explorer 6, un navegador para el cual las páginas ya no se hacen. Mi llamado no es solo a usar Firefox, sino a usar los otros browsers como Google Chrome y Opera los cuales pueden estar más acordes a sus necesidades si no van a usar los add-ons de Firefox. (cuyo promocion es el proyecto por el cual finalmente vote)

miércoles, 3 de diciembre de 2008

Songbird: El firefox de los reproductores multimedia

songbird-logo.pngHace poco salió una nueva versión del reproductor multimedia Songbird. Realmente se le puede llamar el Firefox de los reproductores multimedia ya que su principal caracterísitica es su extensibilidad (además de que también es desarrollado por Mozilla). Es así como ahora tengo un mashup que me permite información del artista sacada de Last.fm, MusicBrainz y Freebase, noticias desde la web, fotos de Flickr y videos de Youtube. También tengo la letra de la canción que estoy escuchando y así puedo seguir nombrando extensiones. Todas estan disponibles en el sitio. Aunque no tiene tantas como Firefox (sigo esperando que salga la extensión de Jamendo), la cantidad que tiene para ser la versión 1.0 es bastante buena. Al igual que Firefox, Songbird puede ser personalizado con temas plumas para que se vea a gusto del usuario.
A songbird aún le queda bastante por crecer, sus
capacidades como reproductor estan incompletas faltandole algunos formatos y dispositivos por soportar. A pesar de esto, se puede usar sin problemas y puedo recomendarlo como una herramienta de utilidad. Sientanse libres de explorar las extensiones y disfruten más de su música conectada a la web. Como una persona que usa Flock, disfruto bastante el estar conectado varios sitios al mismo tiempo y poder ver toda la información en un solo tab, quizas por esto me quedo gustando Songbird. En fín solo instalelo y extiendalo.


Mi Songbird

sábado, 29 de noviembre de 2008

Mi experiencia en las metodologías ágiles

Este año he tenido un par de experiencias con las metodologías ágiles de programación. La primera fue en el curso: Proyecto de Software, donde hubo que aplicarlas en una empresa. Sin embargo, mi conocimiento de las metodologías ágiles entonces era nulo, pero después mi experiencia en el curso las conocí lo suficiente como para querer interesarme más. Fue por esto que el segundo semestre tome el curso: Introducción de las metodologías ágiles. Ahora el semestre ha terminado y quiero hacer un resumen de lo que he aprendido y de las cosas que pienso aplicar (además de que el curso me lo pide). Así que ya que tengo el artículo hecho, mejor publicarlo.


Ciclos de XP

La imagen que ven arriba es un resumen de las prácticas de XP (agradezco al profesor Agustín Villena por dejar su presentación con licencia Creative Commons), me voy a basar en ella para recorrer las cosas que me llevo de esta experiencia. Antes que nada, quiero indicar que las prácticas de las metodologías ágiles son flexibles y se deben adaptar a la realidad de cada proyecto y una buena parte de ellas puede ser usada en otras áreas aparte del desarrollo de software.

De la gestión del proyecto orientada al valor

En las metodologías ágiles se recomienda darle valor al proyecto lo antes posible a diferencia de las metodologías tradicionales donde el valor del proyecto solo se ve al final. Las diferencias que esto produce son sumamente notorias en lo que respecta a mi experiencia.
  • Tener al cliente en el terreno: Esto es simplemente tener al cliente al lado en todo momento para poder hablar con el. Recordemos que el cliente es el usuario final del proyecto y por ende es quien mejor lo conoce. Cualquier pequeña consulta de los requerimientos debe ser realizada directamente con el así como cualquier sugerencia o idea (esto es algo que a los clientes les gusta mucho). Esto nos evita el tener que adivinar lo que el cliente quiere y el tener que cambiar las cosas cuando el cliente ve lo que hicimos. Como extra, el cliente obtiene una visibilidad completa de como se realiza el proceso de desarrollo y le permite comprender lo difícil que es el realizar software. Esto nos evita tener un cliente "gruñon" y este se transforma en un cliente comprensivo (literalmente). Esta es una práctica que definitivamente voy a aplicar y que de hecho exigiria. Tener al cliente disponible para hacerle consultas y sugerencias al mismo tiempo que se le da una visibilidad completa del proyecto es un cambio que nos salva de algunos de los problemas más desagradables del desarrollo de software.
  • Realizar entregas pequeñas: Esto se hace para que el cliente pueda ver el valor de las funcionalidades implementadas mucho antes de que el software este terminado. Esto se puede considerar como los releases que se realizan en el desarrollo de software tradicional pero se realizan mucho más rápido. Los cambios que se hacen se notan mucho más rapido, y como tenemos al cliente al lado, este nos puede decir si hay que hacerle algunos cambios. Esta es otra práctica que me llevo. Me permite mostrarle valor al cliente mietras me da un feedback mucho más continuo del software que se esta desarrollando.
  • Planning Game: El planning game es una forma de estimar los tiempos que demorara el desarrollo de las funcionalidades a desarrollar. De esta forma todo el grupo (incluido el cliente) puede saber cuanto tiempo demorara el tener las funcionalidades listas. Así que el cliente, tomando en cuenta el tiempo que queda para el proximo release, puede priorizar cuales tareas realizar. De este modo se puede entregar valor más rapidamente al entregar primero las funcionalidades que más valor aportan. Esta es una práctica que es un poco más dificil de llevarse dada la dificultad que suele estar presente a la hora de estimar el desarrollo de las funcionalidades. Sin embargo si el equipo tiene el conocimiento suficiente, esto se puede llevar sin problemas.
  • Test de Aceptacion: El cliente puede realizar tests de aceptación los cuales califican si la funcionalidad esta cumplida o no. De este modo los desarrolladores tienen una forma rápida de validar su trabajo. Además de que de este modo evitamos molestar al cliente si es que no es necesario. Esta práctica es algo muy difícil de llevarse principalmente porque casí no hay clientes dipuestos a hacer esto.
De la gestión del desarrollo en equipo

En las metodologías ágiles el trabajo en equipo forma una parte importantisima siendo crucial en la obtención de resultados. El alcance usado aquí es muy distinto a las metodologías tradicionales donde se asignan roles y se dividen tareas. En las metodologías ágiles los roles no son fijos y los resultados son de todos. Las individualidades no existen.
  • Liderazgo motivador (coaching): El lider del equipo es bastante diferente que en las metodologías tradicionales. En estas, el lider del equipo es un jefe cuya labor consiste en impartir premios y castigos a los desarrolladores. En otras palabras consiste en un jefe que mira por sobre tu hombro que estes trabajando todo el tiempo. En las metodologías ágiles esto cambia radicalmente. La labor del coach consiste en facilitarte la realización de tu trabajo. El es el encargado de distribuir la comida (golosinas) y los bebestibles entre otras cosas, así como asegurarse de que los desarrolladores tengan todo lo que necesitan para trabajar. El coach, no vigila que estes trabajando, sino que te da las facilidades para que lo hagas mejor. Aún así, el coach también puede imponer premios y castigos, aunque lo hace con una frecuencia muchisimo menor que un jefe y no suele ser común que ocurra. El coach también debe saber bastante de la programación que se esta realizando y funciona como un tutor, así que se le pueden hacer preguntas al respecto. Dentro de este contexto es también quien suele hablar más frecuentemente con el cliente. Esta es una práctica que me llevo con mucho gusto. Por experiencia propia puedo decir que se trabaja mucho mejor con un coach que con un jefe que mediante el acto de vigilarte te incomoda y te hace más difícil trabajar.
  • Retroalimentación de avance (tracking): Esta es una práctica que resulta bastante útil cuando se acerca un release. Consiste en ver el estado de avance del proyecto de modo de poder descubrir rápidamente si se necesita enfocar recursos en determinadas funcionalidades para poder entregar el mayor valor posible en el release. También sirve para tener una idea de que tan acertadas son las estimaciones realizadas. Esta funcionalidad tiene el mismo problema que el planning game: estimar. Es dificil hacer estimaciones en un principio, pero una vez que se hacen, el tracking le añade un nuevo valor al poder descubrir el estado del proyecto sin dificultad. Para esto recomiendo usar los gráficos burndown que muestran el estado de avance con bastante claridad.
  • Stand-Up meeting: Son pequeñas reuniones que ocurren al principio y al final de cada iteración. Son bastante útiles para determinar lo que se va a realizar al principio de cada sesión de trabajo y para dejar claros los resultados y planificar la siguiente al final de cada una. Son reuniones bastante breves que no deberían durar más de diez minutos y por esto los asistentes suelen estar de pie, de ahí el nombre. Como experiencia, les digo que es algo bastante útil, permite conectarse uno con el trabajo y con el trabajo de los demás. El unico inconveniente que le encuentro es el tener que llegar a la hora, pero eso es realmente por mi tendencia a llegar tarde :P.
  • Espacio de trabajo informativo: Esta práctica es una las que más recomiendo debido a su enorme utilidad. Consiste en tener la información del proyecto en un lugar visible por todos, todo el tiempo, de manera que sea fácil de leer y actualizar. Un excelente ejemplo de esto (y aprovechando que estamos en la epoca) es el computo de la Teletón. Tenemos unos enormes números que indican el estado de avance que tenemos y cuanto nos falta todo el tiempo, y todos los ven. Se actualizan con frecuencia y de manera rápida. Espero que esto deje claro también la utilidad que tiene. En este espacio de trabajo (que en su oficina puede ser una pizarra o una cartulina con post-it) esta toda la información para que sea consultada y actualizada con frecuencia y facilidad. Uno de los principios que el espacio informativo debe cumplir es el del ventilador de información. Esto consiste en que la información te llega a la cara, no tienes que abrir ningún libro, closet o refrigerador para obtener la información.
  • Ritmo sostenido (no a las horas extra): Tal como dice el nombre, esta práctica obliga a los miembros del equipo a trabajar el tiempo justo. Esto hace que todos los miembros del equipo se concentren en trabajar y evita el desgaste causado por las horas extras así como que alguién trabaje más horas que otro. Esta práctica es bastante buena para mantener al equipo en un buen estado, pero es bastante difícil de llevarse. La mayoría de los desarrolladores tienen las costumbre de trabajar horas extras y si además consideramos el hecho de que varios funcionamos con rachas de inspiración que nos cuesta mucho cortar. En otras palabras, es una buena práctica pero es muy difícil de adoptar.
  • Retrospectivas: Esto consiste en tener una reunión al final de cada release que analiza todos los problemas que ocurrieron y las formas en que se puede evitar que pasen de nuevo. Hay que tener mucho cuidado de no indicar culpas, ya que la intención es salir adelante como equipo, para esto es necesario un buen coach. Para esto se puede reconocer al principio que todos hicieron el mejor trabajo que pudieron hacer en sus circunstancias. Esto es una buena práctica que permite que todos los miembros del equipo aprendan de los errores que cometieron sus compañeros y eviten el cometerlos. Me la llevo con gusto, para implementarla en futuras ocasiones.
De la programación en equipo
  • Programación de a pares (más rotación de equipos): Esta práctica consiste en realizar labores de programación en parejas, dos personas en un solo computador. Aunque pueden haber (y se recomienda tener) dos pantallas, solo uno de ellos puede estar en el teclado. El objetivo de esto es que un miembro de la pareja corrija y ayude a su compañero en las labores de programación. En principio esto puede parecer un malgasto de recursos al tener a una persona sin digitar código, pero la principal labor de un ingeniero de software no es digitar código, sino diseñarlo. La programación de a pares también permite una mejor distribución del conocimiento del trabajo del equipo, lo cual se logra aún mejor si las parejas van rotando cada cierto tiempo, ya que cada persona lleva su propio conocimiento del software más el conocimiento que aprendió de su compañero anterior. Esta es una práctica bastante recomendable, particularmente para proyectos complejos que requieren un conocimiento generalizado del software entre los desarrolladores. Particularmente para los que solemos cometer errores pequeños que despues cuesta mucho trabajo descubrir (que no son pocos), esta práctica resulta bastante útil y mejora su productividad notablemente.
  • Estándares de código: El tener estándares de código consiste en tener un conjunto de recomendaciones y guías para que todos codifiquen un mismo problema de la misma forma. Esto permite que todos los desarrolladores entiendan el código escrito por sus compañeros. Esto ahorra varias dificultades de tener que trabajar en grupo haciendo que todos hablen el mismo lenguaje. Esta es una práctica que todo equipo de trabajo debiera tener. No es necesario que el estandar este definido en algún lado, muchas veces me ha tocado ver que surge de manera natural y definido por las mismas herramientas utilizadas, pero el estandar siempre tiene que existir.
  • Propiedad colectiva del código: El código resultante del trabajo de todos es de todos. Aquí no existen el código individual, todos pueden leer y modificar el código de cualquier programador. Esto hace que todos sean responsables del trabajo del otro por lo que no existen las culpas. Si alguien se equivoca es culpa del que se equivocó y del resto que no le ayudo ni se dio cuenta. Esta es una excelente forma de promover el trabajo en equipo y la recomiendo.
De la programación incremental de calidad
  • Diseño simple: Se evita el diseñar demasiado o diseñar cosas que no se han pedido, esto también es conocido como diseño JIT (Just In Time). La ventaja de esto es que evitamos diseñar cosas que no vamos a implementar mientras que al mismo tiempo mantenemos el diseño simple evitando posibles complicaciones. Esta es una práctica que siempre es recomendable. La metodología tradicional diseña todo el sistema antes de ponerse a implementar, esto nos lleva a una alta probabilidad (certeza) de que el diseño cambie. En las metodologías ágiles el diseño también cambia, pero al haberlo hecho simple y en el momento en que era necesario, casi nunca hay un diseño previo que desechar.
  • Desarrollo guiado por tests: En la metodoogía tradicional se suele hacer un proceso de test despues de haber implementado una funcionalidad. En las metodologías agiles es inverso, se hace el test y luego se implementa el código que lo apruebe. De este modo cuando el test es aprobado ya sabemos que esta listo y podemos volver a probarlo las veces que sea necesario al ir implementando nuevas funcionalidades. Otra ventaja de esto es que ayuda enormemente al diseño, antes de implementar la funcionalidad ya sabemos todo lo que tiene que hacer, por lo que la implementación sale mucho más rápido. A pesar de las ventajas de esto, yo no me lo llevaria a mi lugar de trabajo. El desarrollo guiado por tests requiere de librerias que no siempre son faciles de ocupar aparte del tiempo de aprendizaje ocupado, y dependiendo del tamaño del proyecto puede que la ventaja en el diseño no sea notoria. Además, hay cosas que no se pueden testear como el resultado de las imagenes o si algunas partes del diseño gráfico son del gusto del cliente. El desarrollo guiado por tests es bastante bueno, pero sus ventajas no siempre cubren los costos de implementarlo.
  • Refactorización: Al haber cambios frecuentes en el código causados por varios programadores a la vez, es lógico que el código no quede siempre de manera optima. Entonces el coach realiza un porceso de refactorización que optimiza el código mediante diversos métodos como: agrupar código similar en funciones, agrupar archivos duplicados y limpiar funciones que no se usan entre otras cosas. Este es un proceso necesario cuando hay varios programadores trabajando en un mismo proyecto. Eventualmente e inevitablemente el código se empieza a desordenar y el proceso de refactorización se vuelve necesario.
  • Integración continua: Cuando se termina de implementar una funcionalidad queremos que sea visible lo más pronto posible. Para esto usamos un sistema de integración continua como SVN que nos permite tener versiones del código actualizadas hasta la última funcionalidad correctamente implementada. Esta es una práctica que se ha vuelto muy común y no se si es necesario decir que yo la uso y la recomiendo. No es difícil de implementar y ofrece un buen sistema de tener el software actualizado de acuerdo a lo que hacen los desarrolladores.
Proyecciones de lo aprendido
De lo que he notado, la principal diferencia (o al menos la que más se siente) con la metodología tradicional para desarrollo de software es la presencia del cliente. un cliente en terreno y compometido con el software que se esta desarrollando influye mucho en la forma en que avanza el proyecto y es a mi gusto lo que hace la principal diferencia entre un modelo de cascada y un extreme programming. Sin la presencia del cliente habria que adivinar al ambiguedad de los requerimientos llevando a la posterior corrección por parte del cliente. Además esto le da al cliente una mayor visibilidad del proyecto, logrando entender así la complejidad de sus requerimientos y una mejor relación con el equipo de desarrollo. El tener al cliente al lado permite una mayor flexibilidad para lanzar los releases y mostrarselos al cliente haciendolo mucho más frecuente que si el cliente no estuviera. Esta constante presencia del cliente también permite el diseño Just In Time, ya que podemos hacer las correcciones en el mismo momento y sabemos que el cliente estará disponible la proxima vez que necesitemos hacer diseño. En mi experiencia, me ha tocado sufrir cambios bruscos de requerimientos por que el cliente no sabia lo que estabamos haciendo o porque alguien habia tenido que adivinar que es lo que queria el cliente.
Otra gran diferencia es la forma de tratar con el equipo de trabajo, sin roles definidos y siendo todos igualmente responsables del código. Al no haber culpas individuales y al ser los meritos del equipo el ambiente de trabajo que genera este es mucho más grato y el grupo esta mucho más unido y dispuesto a cooperar. Dentro de mi experiencia me ha tocado tratar con roles fijos y con poca comunicación en tre los miembros del equipo. Esto ha hecho que hayamos tenido que hacer reuniones de emergencia al ver que nos atrasabamos y entonces realizar una retrospectiva donde existía el sentimiento de culpa con la consiguiente perdida de moral por parte del equipo.

En mis proximos desarrollos, el objetivo es mejorar estos dos puntos: la presencia del cliente y la relación entre los miembros del equipo. Idealmente se tendra al cliente en el lugar todo el tiempo para hacerle consultas y se hara pair programming intercambiando los compañeros cada semana o en un tiempo menor. Enfatizar el hecho de que el código es de todos y que por lo tanto la responsabilidad sobre este también a fin de motivar el apoyo entre los miembros del equipo. Y por último pondría una pizarra con la información relevante del proyecto como un kanban e información sobre el diseño. De este modo se obtiene un buen ambiente de trabajo para cualquier proyecto. de acuerdo a las características del proyecto y del equipo de trabajo se pueden agregar más prácticas como la programación guiada por tests y el planning game.

miércoles, 12 de noviembre de 2008

RSS, OPML y Grazr. Manejando tus noticias.


Los que no sepan lo que es un feed (RSS o ATOM) tienen motivos para sentirse avergonzados. Esta es la tecnología que esta disponible en cada navegador de internet y que permite ver las actualizaciones en vivo. Aún me sorprende ver que salen sitios que hacen publicaciones sin usar este formato.
La principal ventaja que tienen este tipo de archivos es que son información
pura. No tienen formato gráfico, no se ven bonitos y son sumamente ligeros y rápidos de cargar. Es por esto que existen lectores de feeds (o agregattors). Servicios que ofrecen la lectura de tus feeds y te permiten tenerlos ordenados. En terminos simples dire que solo seleccionas las noticias que quieres recibir y las noticias te llegan.
Existen una variedad de lectores de feeds online. El más conocido es posiblemente google reader
. Sin embargo este es uno de los servicios más comunes y las opciones abundan. Personalmente yo uso el lector de feeds que viene incluido en Flock, pero para los que no usen Flock pueden usar alguna de las extensiones que firefox ofrece para esto.
Pero que pasa si nos queremos cambiar de lector. ¿Vamos a tener que
agregar cada uno de nuestros feeds de nuevo? Pues claro que no. Los lectores de noticias que se respetan permiten importar y exportar feeds. Esto se hace a través de los archivos OPML. Un formato basado en XML, bastante básico y util. Los que sepan XML lo comprenderan de inmediato (y los que no quizas también los hagan). Sin embargo esto sería solo para satisfacer su curiosidad, no necesitan ni leerlo ni editarlo para poder usarlo. Simplemente exporten el archivo desde un lector de feeds e importenlo en otro. Es así como yo puedo compartir con ustedes la lista de las noticias que leo. El servicio Grazr es un lector de feeds online cuyo widget me gusta bastante. La mayoría de los lectores de feeds permiten la creación de un widget que podemos insertar en nuestros blogs. No todos con la misma calidad claro esta ;).

Grazr

domingo, 26 de octubre de 2008

La alternativa gratuita

Hace poco tiempo lei el siguiente artículo. En este se muestra una lista de programas comunmente pirateados y cuanto cuestan. Leyendo un poco más me encuentro con este otro articulo, en este se propone el uso de Linux como alternativa gratuita a Windows y explicando lo que es el opensource. Ante esta clara falta de conocimiento de los softwares disponibles he decidido hacer esta pequeña lista de alternativas.

  • Windows Vista Home Premium (78.683 pesos): Ubuntu consiste en una excelente alternativa para este caro sistema operativo. No solo funciona mejor y con menos virus, además es gratis y de código abierto. Existen muchas otras versiones de Linux, pero recomiendo Ubuntu principalmente por su usabilidad. Un usuario es perfectamente capaz de usarlo sin acceder a la consola, algo que va contra el esteoritipo que se tiene de Linux (frente a una consola viendo codigo). No  te debería costar trabajo usarlo. En cuanto a los programas que solo corren en Windows, puedes usar el emulador Wine que viene incluido. O puedes hacer una imagen de tu disco actual y correrla en una maquina virtual. En cuanto a la configuración del sistema, dudo que algun cambio te tome más de 5 clics en realizar si es que tienes que hacer alguno.
  • Windows Office 2007 (226.213 pesos): OpenOffice ofrece una buena alternativa para realizar todos los documentos que tienes que realizar. Ofrece algunas funcionalidades que la versión de windows simplemente no tiene. Recomiendo revisar las extensiones para buscar alguna funcionalidad más avanzada o solo para buscar algo que les guste.
  • Adobe Photoshop cs4 (431.000 pesos):  GIMP es un programa que les deberia servir perfectamente para darle algunos retoques a sus fotografias e imagenes. La interfaz de usuario puede ser un poco problematica en un principio, pero se deberian poder acostumbrar. De cualquier modo pueden ver estos dos tutoriales, aquí y aquí. Es cierto que Photoshop provee mejores herramientas, pero a menos que quieran hacer cosas como un PNG transparente que se pueda ver en IE6 no deberian tener problemas.
  • Adobe Premiere (492.000 pesos): Un programa de edición de videos. Debo decir que no conozco alternativas en este rubro dado que nunca he tenido que editar videos. Si alguién puede recomendar alternativas que porfavor lo haga.
  • 700 canciones (427.386 pesos): más de 40 horas de música en el mejor caso. Aún cuando claramente no hay un software de código abierto para esto si hay servicios web. Last.fm y musicovery te permiten escuchar música online. El primero se basa en los artistas que escuchas usualmente y te sugiere artistas parecidos y el segundo se basa en los estilos de tu gusto.
  • Nero (49.000 pesos): CDBurnerXP cumple la mayoria de las operaciones que cumple Nero. Aunque no es de código abierto sigue freeware (gratis).
  • Sims 2 (17.990 pesos) y World of Warcraft (27.990 pesos): Aún cuando existen variados juegos opensource, debo admitir que la gran mayoria no se compara con los juegos producidos por las grandes compañias. Pero recomiendo probar los juegos pequeños de todos modos.
  • Norton Antivirus (39.990 pesos): Aún cuando Amavis existe como alternativa opensource, esta no se compara con las alternativas pagadas. Esto no es solo por una diferencia de la base de datos, sino  tambien por sus caracteristicas como software. Le faltan algunos comandos básicos como la inspección automática. Aún así debo decir que el mejor antivirus son las buenas prácticas. ( Y si usan Linux no tienen por que comprar uno. Si siguen usando Windows, les recomiendo que se cambien a Firefox para navegar por internet, trae un filtro anti-virus) Algunas medidas básicas nunca estan de más.
Blogged with the Flock Browser

miércoles, 22 de octubre de 2008

Twine, mi experiencia como usuario Beta.

twine_notag_RGB_small.jpgRecientemente salió Twine, un servicio web que ofrece un feed de interés.Esto último es una lista de elementos que puedan interesarte basado en los elementos y en las decisiones que ya has hecho. En principio se ofrecía como un servicio de marcadores online como Delicious con características de web semántica. Pero dadas las características del sitio, esto no le ofrecía ninguna utilidad a los usuarios.
Twine estuvo en Beta por más de un año, y desde septiembre yo tuve la oportunidad de ser un usuario beta del servicio. Así que puedo ofrecerles una revisión del servicio basado en mi experiencia.
Como un usuario activo debo decir que el sistema dista mucho de ser un servicio de marcadores como Delicious u otros servicios de este estilo. Sus caracterísiticas semanticas hacen que agregar elementos sea una tarea más compleja de lo normal, aun cuando todavia es sencillo hacerlo. Pero más que nada el hecho de que todavía carece de API lo retrasa aún más. Delicious ofrece una API sencilla que permite agregar y revisar los marcadores de manera rápida y sencilla. En esto se basan una serie de aplicaciones que incrementan la utilidad de la herramienta. Mientra no se tenga esto, Twine simplemente no es rival.
Sin embargo no es bueno apresurarse a sacar conclusiones. Aun cuando Twine no es un buen sistema de marcadores, resulta en un servicio de noticias sociales digno de destacar. Este ofrece noticias relacionadas con tus intereses. Algo que Digg no ofrece y que reddit ofrece con relativa dificultad para los usuarios. Ambos sistemas se basan en el ranking que dan los usuarios a los links, mientras que Twine se basa en tus intereses. Esto es una enorme ventaja y es el modo en que recomiendo usar el sistema.
En conclusión si buscan noticias que les interesen, recomiendo usar Twine. Aquí les dejo el video introductorio (algo largo) y un link a mi perfil.
Blogged with the Flock Browser

jueves, 16 de octubre de 2008

Flock 2.0, el Firefox social

Con fecha 14 de Octubre salio la segunda version del explorador social Flock. En su segunda
versión vienen incorporadas nuevas capacidades, destacando la integración con MySpace y la Flock iconaparicion de feed de videos y fotos.
Flock se basa en la tecnología de Firefox 3 por lo que ofrece las mismas capacidades como navegador. De hecho ofrece los mismos add-ons. Así que podrán adivinar que me cambie de explorador default. Lo único que se le puede recriminar es la ausencia de temas para cambiar el aspecto, pero se espera que hayan algunos más.
Debo decir que Flock ofrece la mejor pagina de inicio que he visto. Esta me muestra la actividad de mis amigos y la de mis feeds. Puedo configurarla para que además me muestre mis sitios más visitados y mis fotos y videos favoritos. Obviamente esta página permanece abierta mientras tengo el explorador abierto y me permite tener cerradas muchas más.
Aún sigo usando Google Chrome para revisar las páginas que necesito en forma esporadica y de forma rápida. Y seguire atento a Firefox 3.1. Pero Flock se ha vuelto mi herramienta de Internet por excelencia. A modo de ejemplo, esta entrada fue hecha en el editor que Flock trae incluido, junto con el portapepeles que me permite guardar imagenes y links para usarlos luego.
En conclusión, les recomiendo probarlo y deberian ver el tutorial que viene incluido para que vean todo lo que puede hacer.
Blogged with the Flock Browser

martes, 7 de octubre de 2008

GeoLocalización, me siento fuera del mundo


Hoy día Firefox lanzó Geode, el cual es un plugin que te permite trabajar con páginas que usen la geolocalización. Para wifi, este plugin funciona usando WPS (Skyhook Wireless WiFi Positioning System) . El problema que tiene este sistema, es que simplemente no esta en Chile (ni en latinoamerica). Habiendo descubierto esto deshabilite el plugin. Ahora solo me queda esperar que la tecnología mundial llegue hasta estos rincones, lo cual espero que sea pronto.

viernes, 19 de septiembre de 2008

El nuevo Facebook, funciona



Con el lanzamiento de la nueva interfaz Facebook aparecieron una serie de usuarios disconformes "demandando" el regreso de la antigua interfaz. Hay algunos que incluso amenazan con dejar Facebook si no aceptan sus demandas. La cantidad de grupos que han aparecido dentro del mismo Facebook con este tema es enorme. Fijandome dentro de los comentarios de estos grupos, realmente no he podido encontrar comentarios de utilidad, sino que un monton de quejas sin argumentos parecidas a los reclamos de un niño malcriado. En este artículo expondre razones por las que la nueva interfaz va a quedarse.

Aún no es definitivo

El nuevo Facebook aun está pasando por un montón de cambios dado que aun no es la versión definitiva de la interfaz. Esta aún tiene algunos problemas en algunos browsers, particularmente por su alta dependencia de Javascript, y aún tiene varios aspectos en los cuales mejorar. Entonces ¿Por que movieron a la gente a la nueva interfaz? Por que necesitaban saber la opinion del usuario. Osea que este dijera como mejorar la interfaz. En la esquina superior derecha, hay un botón que dice "Enviar Comentarios". Allí puedes dar ideas para mejorar el nuevo Facebook, no es necesario dar un reporte técnico, solo cosas que te gustaria tener disponibles. Problemas como este, han ocurrido antes en otros portales. Recuerdo cuando Delicious lanzo su nueva interfaz. También recibieron un monton de gente demandando el regreso de la antigua interfaz. Pero dejaron el foro disponible para que la gente diera su opinion y dijera las cosas que les gustaria tener. La enorme mayoria de los usuarios vieron sus ideas escuchadas e implementadas.

Es más rapido y ligero que el anterior

El nuevo Facebook funciona con una cantidad considerable de llamadas AJAX. Los que conozcan del tema, sabran que esto implica una mayor velocidad al no tener que recargar toda la página para mostrar nueva información. Esto también implica que las llamadas al servidor son más ligeras, por lo que ya no estan las caidas que solian tener los servidores. Esto en parte se debe a que la información ahora es mucho más filtrada, lo que quiere decir que no estamos cargando toda la información de una persona al entrar en su perfil. Primero vemos el muro, y luego si queremos ahondar más entramos a los tabs de Información, Fotos o Cuadros. Lo mismo se aplica a los demas filtros como los del muro y las aplicaciones.

Mayor orden

Cuando ingresabas una nueva aplicación el viejo Facebook, este te preguntaba si querias agregarlo a tus marcadores, darle una caja en tu perfil, permitirle escribir noticias en el muro, permitirle enviarte notificaciones y si querias que te llegaran notificaciones por mail. Desgraciadamente, la mayoria de los usuarios no son muy responsables y repondian que si a todo. La mayoria de las veces ni siquiera leen. Esto llevo a que tuvieran una cantidad de cuadros en los perfiles sencillamente ridicula, y tantos marcadores, que hacian de esto algo completamente inutil. El nuevo Facebook responde que no a todo por default, obligando a los usuarios a ser más ordenados con sus perfiles y más concientes de sus acciones. En otras palabras, el nuevo Facebook te obliga a tener ordenada tu cuenta para que esta sea más usable.

En conclusión

El nuevo Facebook llego para quedarse, aún tienen voz y voto a través del botón del feedback, pero el viejo Facebook ya no va a regresar. Y realmente dudo que alguien se vaya a retirar de Facebook por la nueva interfaz, este sigue ofreciendo las mismas funcionalidades que el antiguo, y una lista de amigos del tamaño que tienen las listas de Facebook es algo que no se esta dispuesto a perder con facilidad. Solo jueguen con el, ordenense un poco y dejen de llorar.

martes, 2 de septiembre de 2008

Google Chrome: Un nuevo browser entra a la competencia

Ayer salio publicado el nuevo explorador en entrar a la competencia de los niños grandes: Google Chrome. Como el nombre lo dice fue creado por Google, una compañia bastante conocida por sus multiples aplicaciones en internet. Y Google Chrome esta justamente dedicado a ese ambiente: las aplicaciones. Las principales caracteristicas de este nuevo browser pueden ser encontradas en este webcomic.

Al ocupar el software inmediatamente notaran algunas cosas. Como que los tabs estan ubicados por encima de la barra de direcciones y de todas los botones que pueda tener el explorador. Al pensarlo, este modo de poner las cosas hace má
s sentido que el tradicional modo de poner la barra de direcciones por encima de todo, el cual es heredado de los tiempos en que no existian tabs. Despues de todo, cada tab tiene su propia dirección y su propia historia y otras opciones que son propias de cada uno.
Es más, en Google Chrome cada tab es su propio proceso.
Si un tab se pega o se cae, solo se pierde el tab, no el explorador completo. Los usuario de Opera rapidamente notaran que los tabs se pueden mover entre las ventanas y a ventanas aparte. Además notaran que la pantalla de inicio muestra las páginas y las busquedas consultadas más frecuentemente. Algo bastante distinto a la página de inicio o al tab blanco que se suele mostrar. La idea es que frecuentemente vas a usar algo que este en la página de inicio.


Ahora en lo que tienen que fijarse, es en las siguientes caracteristicas que trae
este software. Como cada tab es un proceso, Google Chrome ofrece un administrador de tareas que indica cuanto consume cada uno en memoria, CPU y red. Solo presione shift+esc y lo vera. Con esto puede ver el proceso que ocupa más recursos y matarlo. Otra buena caracteristica que ofrece este browser, es la capacidad de crear accesos directos a la pagina que esta en uso. Yo tengo mis marcadores de delicious.com en el escritorio. Tambien podria haberlos puesto en el menu Inicio o en la barra de acceso rapido. También tienen que fijarse en el autocompletado de la barra de direcciones, esta se rellena con los resultados más probables, algo que Google sabe hacer muy bien gracias a su buscador.
También tienen que ver que el pop-up blocker te da la opción de abrir los pop-ups o cerrarlos en la esquina inferior derecha, no tienes que darle permisos a las páginas ni cerrar notificaciones. Si cambias de página el pop-up que no abriste desaparece.

Lo que los desarrolladores definitivamente tienen que probar es la consola Javascript. Aparte de permitir la función de un DOM inspector y un editor de estilos CSS es una consola javacript completa en la que se pueden ejecutar comando como:
alert("hola")
document.getElementsByClassName("title")[0].innerHTML = "Yo cambie esto"
(por supuesto recomiendo probarlos en esta página ;)). Esto indica que al parecer los desarrolladores de Google solían usar Firebug ya que esta herramienta tiene poco que envidiarle al conocido add-on de Firefox.

En conclusión Google Chrome se une a la lista de exploradores en que los desarrolladores tienen que probar sus aplicaciones, y esto lo digo más que nada por el hecho de que Google Chrome tiene su propio motor de javascript y hay muchos desarrolladores que tienen la mala costumbre de no hacer sus páginas accesibles sin este (solo revisen la página de Visa). Dado su poco periodo de vida aun no tiene desarrollada ninguna extensión, así que me sigo quedando con Firefox 3 como mi navegador principal, principalmente por las extensiones de delicious y más recientemente ubiquity. Pero si sigues usando IE7 ya tienes otra opción para cambiarte.

miércoles, 27 de agosto de 2008

Ubiquity, quebrando los paradigmas de las extensiones de Firefox

Firefox lanza una nueva extensión: Ubiquity. Esta es una interfaz de linea de comandos para Firefox que ofrece una cantidad considerable de ventajas.

Este es el gran paradigma que Firefox rompe. Hasta ahora las extensiones ofrecían servicios o te conectaban a un servicio web a través de una interfaz gráfica. Ubiquity ofrece un linea de comandos, una nueva interfaz para usar o conectarse a los mismos y a nuevos servicios. La ventaja de tenerlos de este modo, es que estan todos juntos en un solo sitio y no en una increible cantidad de iconos o barras de herramientas. En otras palabras, su ventaja es la usabilidad.

Sin embargo su mayor ventaja y lo que lo hace una gran extensión para Firefox, es que los comandos son de codigo abierto. Esto quiere decir que cualquier persona puede programar cualquier comando. Ahora, ¿Que tan facil es programar estos comandos? Bueno, se ofrece un excelente tutorial para esto y las otras extensiones existentes son de codigo abierto con lo que se tiene una excelente fuente de ejemplos.

A modo de ejemplo incluyo el código de este comando. Lo que hace es guardar la pagina en los marcadores de delicious.com. Debo decir que esta extension la conocí hace solo cuatro horas. Ahora preguntense que tan dificil es hacer el comando que desean.
(Edicion: También hicé un comando para reddit)

CmdUtils.CreateCommand({
name: "delicious",
homepage: "http://www.dcc.uchile.cl/~msanchez/delicious.html",
author: { name: "Marcelo Sánchez", email: "censored"},
license: "MPL",
help: "Leads to the bookmarking page. If you selected text it gets in the notes. It puts the page title in the title field",

_getDeliciousUrl: function() {
var bookmarkUrl = "http://delicious.com/save?";

var params = {
title: context.focusedWindow.document.title,
url: context.focusedWindow.document.location.href,
notes: CmdUtils.getSelection(),
};

return bookmarkUrl + jQuery.param(params);
},

preview: function( pblock ) {
var msg = "save to delicious:";
pblock.innerHTML = msg;
},

execute: function( ) {
Utils.openUrlInBrowser(this._getDeliciousUrl());
}
})

domingo, 10 de agosto de 2008

Comportamiento viral de Facebook


A partir de una discusión sobre los criterios que utilizo para la elección de las aplicaciones que agrego en facebook, surgió el tema del comportamiento viral forzado que tienen algunas aplicaciones de Facebook.

El comportamiento viral de una aplicacion es bastante común en Facebook, de hecho es la forma más común que tienen para expandirse. Este consiste en "contagiar" a tus amigos invitandolos a usar la aplicación. De este modo, hay una relación entre las aplicaciones más populares y las de mayor calidad. Sin embargo si la aplicación te obliga a invitar amigos para poder usarla o promueve esto con demasiada fuerza pasa a ser un comportamiento viral forzado y la relación se pierde.

En Facebook existen aplicaciones que te exigen invitar a un determinado número de usuarios para poder usarlas. Este es el caso de algunos quizzes que exigen que invites a un determinado número de usuarios para poder ver tu resultado o de algunas aplicaciones que restringen la usabilidad de la aplicacion de acuerdo al número de personas que hayas invitado, este es el caso de la aplicación de la guerra de las bandas, donde algunas acciones solo son posibles si tienes una cierta cantidad de amigos contigo.

También existen aplicaciones que simplemente promueven con demasiada fuerza la componente viral. En este caso me acuerdo de un juego que supuestamente medía tu inteligencia pero que aumentaba tu CI con cada amigo que invitabas, despues de esto lo elimine y por ende ya no recuerdo su nombre.

Otro buen ejemplo de esto es el muro, donde los usuarios dejan mensajes. Simplemente mira cuantos mensajes promueven su propia difusion con frases como "reenviame" o "haz forward". ¿Alguien recuerda las viejas cadenas de mails? Miren donde vuelven a aparecer con aun más descaro. Es solo cuestión de tiempo para que aparezca la niña enferma en Timbuktu.

Debo decir que esto parece ser una tendencia en las aplicaciones de Facebook por la que los usuarios somos altamente responsables. Recordemos a Playfish que lanzo un par de juegos que rapidamente se volvieron muy populares: "Who has the biggest brain" y "Word Challenge". Ese par de juegos tuvo una componente viral muy alta que se debio exclusivamente a la excelente calidad del juego y no requirió ningun otro tipo de promoción. Sin embargo sus dos últimos lanzamientos: "Bowling Buddies" y "Pet Society" han incluido premios para promover la viralidad, el último con mayor descaro que las anteriores. Sin embargo sigo recomendando a Playfish ya que sus juegos aún son de excelente calidad, pero le pido a los usuarios que por favor, sean más cuidadosos con las invitaciones.

Por suerte, Facebook ha decidido tomar cartas en el asunto.