26 de mayo de 2008

Origenes del spam

El spam es un problema, y serio, hoy dia. Segun la empresa Marshal, entre un 70 y un 90% de todo el correo de internet es spam, reduciendo la utilidad del correo, provocando perdida de tiempo, y dando riesgos de seguridad.

Una de las formas mas simples de reducir el spam es detener su origen, de donde surge. Los analisis posteriores, que se basan en p/ej contenido, son por un lado mas caros de implementar (requieren mas recursos) y han sido burlados de muchas maneras a lo largo del tiempo.

Que tipos de origenes ha tenido el spam a lo largo del tiempo?

  • Servidores/rangos de IP propias: Muchos han establecido su negocio formal de spamming (hay una linea que separa promocion en linea de spam, me refiero a los que pasan esa linea), contratan servidores o rangos enteros de IP para hacer envios masivos de correo. Creo que es de las primeras formas organizadas de envio de spam. La solucion a este enfoque fueron listas negras, RBLs y similares. Si una IP individual se dedica a enviar correo basura, via varios mecanismos queda en alguna lista negra (chequeable por ejemplo, via consultas al DNS) y uno puede denegar el correo desde ese sitio. De las muchas que hay disponibles, he probado en este respecto a Spamcop y a lista SBL de Spamhaus.
  • Servidores mal configurados, aplicaciones web inseguras, proxys/smtp abiertos: de ser muy abusados esas maquinas pueden terminar en listas negras. En la medida que esos problemas de configuracion o de seguridad son arreglados esos servidores dejan de estar disponibles para este envio. Esta fue la otra forma organizada de envio de spam desde principios de internet. Hay listas especificas para este tipo de maquinas, como por ejemplo la XBL de Spamhaus.
  • Troyanos y Botnets: En vez de usar servidores individuales en pequeñas cantidades para ser bloqueados o no por listas negras, porque no ir a la mayoria de las maquinas en internet, las personales? Con un poco de ingenieria social, vulnerabilidades en sistemas operativos/browsers/plugins, spam o sitios hackeados, se han creado botnets de cientos de miles de maquinas, las cuales pueden ser usadas para enviar spam (o para capturar claves, direcciones de correo, tarjetas de credito, etc). Ya el numero de maquinas que potencialmente puede enviar spam crece varios ordenes, y ser muy dinamica, poner en lista negra una IP individual de un adsl hogareño se vuelve impractico. Las 2 soluciones mas importantes a este respecto son listas grises (esperan que la maquina remota se comporte como un servidor real, reintentando enviar mensaje luego si es rechazado) y poner en listas negras IPs donde no deben haber servidores de correo (como p/ej la PBL de Spamhaus)
  • Servicios en linea de uso masivo: Hotmail, Gmail, Yahoo, etc. Hay una gran cantidad de servicios que dan direcciones de correo y permiten configurarse para enviar por smtp/imap/etc correos. Si uno crea una cuenta y empieza a enviar miles o millones de mensajes, lo mas probable es que esa cuenta sea detenida. Pero la tendencia actual es tener botnets que hacen 2 cosas: generan direcciones al azar en esos servicios de forma rapida y dinamica, y enviando desde esas direcciones via estos servicios en linea (que no pueden ser bloqueados basandose simplemente en el origen ya que mucho correo real viene de ahi). Hoy dia todos esos tipos de servicio usan una tecnica (llamada captcha) que muestra un texto distorsionado bajo el supuesto que no es automatizable o suficientemente rapida su decodificacion. Pero aparentemente eso ya no es tan valido, ya sea porque se han hecho programas para decodificar esos captchas como minimo para esos 3 servicios, o porque se le ha dado una vuelta al problema (via ingenieria social, disfrazar de juego el decir que tiene un captcha). Es de esperar que este tipo de servicios en linea pueda contrarrestar esto, ya sea mejorando la tecnica (p/ej en Asirra, en una muestra al azar de animales, decir cuales son gatos, algo mas dificil que determinar texto en un grafico, al menos para un programa) o bloquear acceso a lo que parezca que hace esta actividad.

24 de mayo de 2008

Formas de publicar y colaborar en internet

Hace unos años descubri TikiWiki, un ambiente para publicar en internet, que tenia un fuerte componente de colaboracion en las vias que permitia publicar. Ya que las formas que permite son de las mas usadas hoy dia, me basare un poco en el la lista de formas, aunque puedo referirme a distintas implementaciones de ellas por otros sitios/programas.

El enfoque que le quiero dar en esto tocaria un poco el ciclo de vida de lo publicado, como es accedido, como se colabora con el, y ventajas que da. Puede servir para elegir entre las distintas alternativas, o ver que partes faltan en el puzzle para hacer las cosas mas comodas o con mas sentido.

Wiki: Es editar de forma colaborativa un texto individual. La informacion se accede principalmente por el nombre del texto, como definiendo una palabra o frase en un diccionario/enciclopedia (eso lo hace especialmente adecuado en el caso de la Wikipedia). Los aportes del mismo autor o terceros van en el mismo tiempo, agregandole, borrandole o modificandole cosas, quedando en la historia asociada a ese texto en particular cuales fueron esos cambios. Otra forma de colaboracion con esto son comentarios o notas sobre un texto en particular, que pueden ir o en una pagina de discusion asociada (en formato wiki tambien) o como comentarios. Dado su acceso por nombre, provee mecanismos que facilitan el enlazar otras entradas del wiki dentro de un texto, y crear nuevas entradas previamente referenciadas.

Blog: Usualmente el texto es editado por una o varias personas autorizadas. Tambien, usualmente, es para describir algo que paso o se le ocurrio a quien escribe en el log cerca del momento de la escritura dentro de la tematica de ese blog. El acceso es mas bien cronologico, asociado mas al momento en el cual fue creado mas que al topico en particular que se refiere (puede verse en la URL de este misma pagina) . Los aportes son principalmente en forma de comentarios.

Foros: Hay muchas variedades, pero para centrar ideas, que sean foros basados en hilos (threads). Uno postea el primer mensaje de un hilo, y otras personas pueden responder a el y ser respondidas a su vez.

Tikiwiki tiene muchisimas formas mas de publicar contenido (puede verse aca un resumen), pero por un lado estoy supersimplificando en las hipotesis, y lo hare de forma mas extrema en las conclusiones.Para mi las principales componentes (con sus combinaciones) en esto serian:

  • Definicion: Puede verse como contenido atemporal, como un dato. Puede permanecer igual por largos periodos de tiempo o no, pero esta en el mismo lugar y habla fundamentalmente de lo mismo.
  • Coleccion: Agrupacion no necesariamente cronologica de datos individuales/definiciones. Una persona o lo relativo a ella puede verse como una coleccion, un mapa tambien, lo mismo que una base de datos o la Wikipedia como un todo.
  • Flujo: Es mas que una informacion individual, un flujo de informacion a lo largo del tiempo, algo que recibe cosas nuevas todo el tiempo, y donde las cosas viejas van perdiendo visibilidad.
  • Discusion: Charla, comentarios, intercambio de ideas, pero usualmente no esta planteado como algo definitivo.
Puede hacerse algo mas simple y mas completo que propuestas actuales con estos 4 componentes? Hay algun componente importante que no este cubierto con esta distincion? Supongo que la pregunta que me interesa mas a mi, hay algo que combine todos estos componentes de forma simple, intuitiva y que explote todas las posibles combinaciones al maximo?

Mis ideas han derivado un tanto a lo largo del tiempo (puede verse mis ideas pasadas alrededor del proyecto Tikiwiki aqui, en ingles) pero aun estan lejos de una conclusion definitiva al respecto. Espero que cuando vea algo que combine todo esto de forma correcta (si, la definicion de correcto es muy subjetiva) lo reconozca.

4 de mayo de 2008

Trucos de la percepcion

Ah, la percepcion. Uno se encuentra en determinado contexto, algo que nos da nuestra cultura, nuestra historia, nuestro conocimiento, y interpreta la realidad dentro de ese entorno.Que pasa si digo que en realidad en la siguiente imagen enlazada hay en realidad 9 delfines? (si lo que vieron de primera fue realmente 9 delfines, estee... si, es lo que hay)

Ya sabemos que la percepción a veces nos engaña, las ilusiones ópticas son un ejemplo conocido de eso (hay una buena colección acá) y las hay de origen fisiologico (como cuando se colocan cosas de colores muy brillantes u opuestos) y las de origen cultural (interpretar formas conocidas en algo ambiguo).

Pero lo que no sabia era el rol del lenguaje en la percepción. Como percibimos el arcoiris? Aparentemente, los bebés lo perciben distinto a los adultos, y la razon de eso es el lenguaje. Nosotros asignamos nombres a rangos de colores (rojo, naranja, amarillo, etc) y cuando vemos el arcoiris, identificamos esos rangos y "vemos" las franjas. La gente cuyo idioma nativo no tiene palabras separadas para azul y verde, por ejemplo, lo percibe de forma diferente. Y esto no se limita a la vista. Tengo la idea que en el idioma chino no hay sonidos equivalentes a nuestras erre o ele, por lo cual es relativamente comun pronunciarlas mal o no distinguirlas cuando se escuchan.

Cuanto nuestra primera educación cambia el como percibimos al mundo? Uno de mis cuentos de ciencia ficción preferidos fue "Mimsy were the borogoves" de Lewis Padgett (cuento brutalmente masacrado en la pelicula "Mimsy, mas alla de la imaginacion" estrenada el año pasado), donde unos niños obtenian juguetes educativos de un futuro lejano y su percepción del mundo cambiaba lo suficiente como para hacer lo que consideraríamos magia. No creo que sea nada tan dramático como eso ("magia" seria un arma evolutiva muy poderosa como para no aparecer en el mundo moderno de alguna forma) pero si puede cambiar lo que consideramos inteligencia, relacionamiento con otros, o habilidades (musical, estetica, determinacion de patrones, etc).

(01/06/08) Hay un articulo (en ingles) que toca alguno de estos conceptos y enlaza a mas informacion relevante en este articulo de Scientific American.

24 de marzo de 2008

El problema del contexto

Soy amante de la ciencia ficcion, pero tambien informático. Uno ve ahi maquinas que hablan, se comportan, conversan, de forma bastante humana, y muchas veces se ubica eso en entornos cercanos en el tiempo... pero como informático, tengo que volver a la realidad, y darme cuenta porque eso aun es bastante dificil. Hay mucho que se ha hecho al respecto, pero creo que uno de los problemas mas grandes a ese respecto es el tema de los contextos.

Que es son los contextos? Wikipedia tiene una definicion formal, yo lo veo como el ambiente, el entorno, lo que rodea al mensaje en si (ya sean palabras, imagenes, olores, etc). Aca me centrare en palabras, para fijar conceptos... pero todo es generalizable a otros tipos de mensajes.

Influyen fuertemente en el significado, el sentido de las palabras, de los textos, de libros enteros, etc (no es lo mismo una foto de un local de McDonalds que esa misma foto agregando que fue sacada en la union sovietica hace 20 años, u olor a humo en una papeleria vs en una parrillada), y son influidos por ellos. No es lo mismo la palabra herir cuando estamos hablando de guerra o violencia que cuando estamos hablando de temas sentimentales, pero si herimos, digamos, con sangre, en donde estabamos hablando de temas sentimentales, ahi ya el contexto cambio, y mucho, tal vez con una sola palabra.

De donde vienen esos contextos?

  • El texto en si: uno define y redefine contextos en la medida que va desarrollando algo, un cuento, una exposicion, lo que sea
  • Tradicion, cultura de un pueblo/zona/familia/etc. Porque hay cosas que son terriblemente ofensivas en un pais y inocuas o sin sentido en otros, aun compartiendo el mismo idioma?
  • Otros textos anteriores de amplia difusion. Toma un gato, ponele botas, y ya hay un monton de cosas que uno espera o no se asombraria de encontrar.
  • Historia
  • Educacion
  • muchos otros etcs.
Los contextos se crean, se derivan de otros, se modifican a lo largo de un texto. Y el verdadero significado de ese texto, en cualquier punto, depende del estado del contexto que puede estar modificando.

Muchos cuentos (ultra)cortos, chistes, o frases efectistas se basan en buena parte en jugar con los contextos. Te introducen en uno, y cuando uno esta perfectamente acomodado en el, con muy poco lo cambian totalmente. Si digo, por ejemplo "El barco llego a los confines del mundo" uno se ubica atras en el tiempo donde el mundo tenia confines, y el barco podia haber sido vikingo, pirata, explorador, uno espera mucha gente adentro, y mas cosas. Uno ya esta en un contexto o en varios que considera probables y sabe que esperar, que de muchos significados posibles tengan una gran cantidad de palabras. Ahora, si le agrego a eso "... y cayó" estoy haciendo un cambio tirando a dramatico en donde estaba pensaba que estaba parado. Puedo estar cambiandole el significado a todo lo que viene, y a todo lo que vino tambien, con una simple palabra. A mi en particular, que me gusta la serie Mundodisco de Terry Pratchett (un mundo plano de fantasia, donde hay un borde del mundo a traves del cual, bien, caes) ya me puede colocar en ese contexto o en alguno similar (creo que algo por el estilo pasaba en la pelicula Piratas del Caribe, por ejemplo). Pero uno no se queda en blanco ante algo inesperado, muchas veces se inducen nuevos contextos basandose en informacion que no cuadra con los anteriores.

Ahora, como funciona lo del parrafo anterior? Uno tiene un texto corto, y el contexto fue rellenado por lo que uno sabe (o no) de historia, literatura, cuentos populares, etc. Los cambios que hubo en el contexto pueden haber sido totalmente nuevos o apoyarse en otras fuentes, y podian ser provocados por hasta palabras individuales.

Hay mucho donde uno puede jugar con los conceptos y todo lo que implican... pero como introduccion, creo que da una buena idea, volvamos a realidades mas tecnologicas.

Tanto traduccion, como mantener una conversacion "humana", requiere (para que sea suficientemente buena, al menos) comprension de lo que se esta tratando. Uno toma un texto, lo "entiende" y actua frente a eso (dice algo que significa lo mismo en otro idioma, responde agregando sus propias ideas, aportes, etc). Pero entender el significado real de algo (si uno quiere que valga para todos los casos) implica poder manejar los contextos posibles donde este ubicado. Toda la informacion de base, los contextos que uno va adquiriendo a lo largo de una vida, y todos los juegos de identificacion, adaptacion y creacion de contextos que uno naturalmente hace al escuchar/leer/mirar algo para poder comprenderlo tambien deberia estar ahi (ya a todos nos ha pasado quedar "fuera de contexto" en una situacion u otra). Y decidir cuales de estos contextos podria estar usando el que genero el texto de todos los posibles. Y este es el pequeño obstaculo que hay que salvar para llegar a las utopias de inteligencia artificial que ponia al principio.

Nota hacia la inteligencia "natural": para captar lo mas posible de un mensaje, hay que compartir entre el generador y el receptor todos los contextos usados, no hay que tener todos los contextos del mundo. Educar tiene que tener como componente importante dar contextos comunes a todos, dar herramientas para comprender a otra gente y su obra. Ser pobre en este aspecto significa obtener mucho menos de lo que se nos da, como que nos den fotografias a todo color y solo las veamos en blanco y negro por no tener herramientas para comprender lo que falta. Me acuerdo hace unos años, viendo la pelicula Shrek (para enfocarnos en los niños), haber notado la cantidad de referencias que hay a cuentos infantiles y cultura en general embebidas ahi, y cuanto mas se podia disfrutar la pelicula teniendo esa base, cosa que tal vez muchos niños hoy dia con, digamos, un tanto de resistencia a la lectura, podian haberse perdido o no entendido.

16 de marzo de 2007

Google comunidades

Probablemente este en marcha hoy por hoy, de una forma u otra, pero de todas formas me gusta escribir mis ideas antes de que cambien mucho y terminen en algo inusable.

Una pieza faltante e integrante en el puzzle que son los servicios de google son comunidades. Hay comunidades hoy por hoy, las hay en orkut, en los grupos, en youtube, incluso en las listas de contactos o personas habilitadas para modificar una planilla electrónica. Son comunidades dispersas, inconexas, con una integración precaria (ok, tengo comentarios en youtube, pero no es reemplazo de todo lo que da google groups, lo mismo para orkut).

Que es una comunidad? Es un grupo de personas, ya sea que tengan cuenta en google, o sean "invitadas" vía su dirección de correo a pertenecerla (como lo es las colaboraciones en documentos y planillas). Ese grupo de personas podía tener algún orden, alguna estructura, tanto desde el punto de vista "formal" fuera del sistema (p/ej una comunidad podría ser una empresa, con presidente, directivos, etc), como desde el punto de vista de su interacción con el sistema (manejar los miembros de la comunidad, poder agregar distintos tipos de contenido, poder modificar/moderar contenidos de otros, tipo quienes pueden modificar la pagina central de la comunidad, o quienes comentar sobre esa pagina). Y por supuesto, esa comunidad tendría asociados contenidos. Páginas, grupos de discusión, videos, documentos, mapas, imágenes, blogs, todos los tipos de contenidos soportados por servicios actuales y futuros de google.

No hay que verlo como algo "plano". Una comunidad tendría subcomunidades (p/ej editores, directivos, fotógrafos, lo que sea) que también tendrían su propio ámbito de colaboración mutua. Uno podría pertenecer a muchas comunidades, y poder, p/ej enviar mail a una comunidad, o tener una comunidad entre sus contactos de chat.

Las comunidades son los puntos de contacto entre yo, y otras personas. Con quien estoy en contacto, por que, y colaborar con ellos.

Además, una comunidad no solo son las personas en ella, también son sus contenidos. Como pueden accederlo, agregar nuevo o modificar lo existente los miembros de la comunidad es algo que tiene que quedar expreso.

Esos contenidos podrían estar asociados a una o varias comunidades. Y también tendría permisos asociados, que comunidades pueden o no hacer cosas con el. Un ejemplo podría ser tener un calendario de eventos de determinado club, que solo los editores de la comunidad que es ese club puedan modificarlo, pero que otros clubes cercanos puedan usar ese calendario como de solo lectura.

Tal como lo estoy explicando ahora parece complejo de manejar o visualizar (y necesita serlo), pero también es una realidad que debe de ser plasmada en hechos (o mas bien, programas).

15 de agosto de 2006

Integracion de servicios de Google

Cuando uno tiene muchas vías de publicar información, es bueno usar la forma "correcta". Si todas esas vias pertenecen a un mismo programa o proveedor, puede ser bastante interesante ver cuanto puedan integrarse en algo consistente y propio.

He hablado alrededor de estos temas en el sitio de TikiWiki, aunque centrado en la bastante diversa funcionalidad de ese programa. Pero Google esta llegando al volumen critico de formas de publicar información que hace esto cada vez mas necesario.

Google tiene muchas formas de publicar informacion. Picasa para galerias de imagenes, Blogger para comentarios un poco dependientes del tiempo, grupos para discusiones, calendarios, planillas, mapas, notebook para links, base para informacion tabular, homepage para informacion mas bien estatica o libre, y por supuesto, busqueda global.

Todo esta bien, pero tambien todo esta aislado en su propio mundo. Funcionalidad de unos se querria en todos, contenido de unos se querria usar en todos de forma integrada. Si en mi blog quiero agregar una planilla? O que mis imagenes de picasaweb tengan feed como blog, o sean facil/directamente integradas en mi blog, o puedan comentarse? O tener implicitas entradas en google base acerca de mis galerias, posteos en blogs, etc?

Y, por supuesto... la busqueda. Para mi la justificacion mas importante que puede tener google de tener todos estos servicios donde uno coloque su propia informacion es la busqueda. En vez de tener informacion descatalogada por toda la internet, donde el obtener la relevancia para uno mismo de la informacion es mas a veces cuestion de suerte, tener informacion ya con sentido propio ayuda a que cuando uno busque algo, la relevancia de lo encontrado sea mayor, ya sea para lo propio (cuando busco algo, tal vez la respuesta mas relevante este ya en realidad dentro de mis correos, o en mi propia informacion en general) o en lo ajeno (no es lo mismo sacar lo esencial de paginas que tienen titulo, formateo, presentacion, enlaces relacionados, etc que de su contenido puro, como p/ej este post, si es publico o puedo accederlo porque no buscar en los datos pre-formateo de el?).

Hay mucho espacio para integrar los servicios que brinda google hoy dia, y mucho espacio por cubrir con tal vez nuevos servicios (wiki? algo tipo blog, pero en vez de verse como algo de dia a dia, sea algo por palabra clave), no hay un ambito integrado de publicacion. Supongamos, no se, me fui de vacaciones al exterior. Tendria que publicar las fotos que saque en un lado, los comentarios del viaje en otro (o en el mismo blog, que no me da la misma facilidad que algo especializado en galerias de imagenes), la lista de lugares que visite seria mas un texto que una lista donde coloque la informacion de forma tabular, los libros que lei lo mismo, hasta si quisiera publicar la lista de gastos que tuve o estaria desconectada, o seria un texto, no una planilla reusable.

Una mejor aproximacion es centrar la informacion alrededor de la persona, no de los servicios. Puedo tener una vista integrada (portaloide), ver las cosas por fecha, o por nombre, pero todo tipo de cosas, todo comentable, todo con la forma mas comoda de editarse porque la forma de su contenido así lo exige.

Pero hay mas tipos de integracion. Esto esta muy bien para personas... pero que pasa con grupos? En muchos ambitos puedo definir quienes pueden ver o editar mi informacion (p/ej para calendarios, blogs o planillas), en otros tengo grupos de facto (p/ej google groups, o las comunidades de orkut, o contactos de mail o talk), pero todo es aislado, no hay punto de contacto automatico dentro de esos grupos. Si tengo un grupo de gente en gmail o en google talk (o incluso una lista cerrada de correo) y quiero compartir algo con ellos, tengo que volver a definir el grupo en todos los sitios donde quiera tener informacion a compartir con ellos, y mantenerla (altas/bajas/correcciones) en todos lados.

Con todo esto no quiero decir que no exista ningun tipo de integracion actual entre los contenidos. Son cosas en las que se esta avanzando, con paso tal vez no demasiado rapido, pero firme (p/ej en mensajes de gmail puede verse mapas si hay direcciones incluidas o agregarse citas al calendario... por no hablar entre la integracion con google talk), y si bien la conclusion que se llegue no sea del mismo tipo que estoy proponiendo aca, sera algo positivo.

Por ultimo... esto por supuesto esta centrado en los servicios de google, pero los conceptos detras se aplican a otros proveedores de muchas formas de publicacion de informacion. No se en que estado esta la integración de servicios en Yahoo, o lo ofrecido por Microsoft, pero para todos es una de las direcciones hacia donde tienen que evolucionar.

No se si sera llamada "Web 3.0" la generacion donde todo lo que generen los usuarios este integrado, pero es algo por lo cual espero.

Nuevo Blogger beta

No es que lo haya probado muy profundamente antes, pero dada la nueva version, y la integracion con google accounts, decidi probar el nuevo Blogger.

Por ahora, parece bastante simple de dejar andando, configurar y agregar contenido. La integracion con google accounts hace que no tenga mucho tramite para crear un blog, simplemente entro con mi cuenta de gmail y ya puedo crear contenido/personalizarlo/etc. La personalizacion e ingreso de contenido parece bastante simple... el unico detalle que estoy notando es que si bien informe que mi idioma es español, la interface es en ingles, pero probablemente cuando salga de beta (si es que sale alguna vez, sino, sera pronto de todas formas mientras este aun en beta) ya la interfaz de edicion será en español.

Otra de las razones por las cuales estoy interesado en probarlo es para ver como esta de integrado, y como evoluciona en ese sentido, con los otros servicios brindados por google.... pero sobre eso hablare en otro momento.