Conversaciones con #shortu

(17:13:05) offray_: Hola :)
(17:13:11) GSaldana: la parte distribuida creo ke seria mas sencillo
(17:13:14) GSaldana: hola offray_
(17:13:30) offray_: En dónde ivan?
(17:13:35) tezcatl [~tezcatl@189.134.15.178] ha entrado en la sala.
(17:13:39) deepspawn: el problema es que normalmente es secuencial, en distribuido es un problema que no vale la pena resolver
(17:13:39) offray_: wops iban
(17:14:01) GSaldana: dejame copio/pego algo de la conversacion
(17:14:02) deepspawn: sec
(17:14:06) deepspawn: por pastebin
(17:14:06) offray_: ok
(17:14:25) ***tezcatl nomás vino a fisgonear, el tema está interesante
(17:14:46) ***offray_ da la bienvenida a tezcatl :)
(17:15:08) tezcatl: gracias offray ;)
(17:15:18) GSaldana: http://pastebin.com/Xruub1ik
(17:15:38) offray_: leyendo...
(17:16:21) GSaldana: deepspawn: que es lo ke no vale la pena resolver?
(17:16:37) deepspawn: hacer secuencial la asignación de ids
(17:16:49) deepspawn: eso significa compartir el estado
(17:17:39) offray_: Creo que no es necesario sincronizar los acortadores entre si
(17:17:58) deepspawn: entonces como sobreviven los enlaces a la falla o perdida
(17:17:59) GSaldana: entonces como uno podria retomar los urls de otro?
(17:18:01) offray_: es decir, el esquema dominio/idacortador/idurl es similar a lo que estaba pensando
(17:18:16) offray_: siempre que un acortador falla, el puntero sobrevive
(17:18:35) GSaldana: deepspawn propone que en un sistema base64 podriamos resolver el /blah/blah en un solo blah
(17:18:36) deepspawn: sobrevive la mitad
(17:18:53) offray_: si bit.ly se cayera y estuviéramos buscando bit.ly/bla sabríamos que eso es lo que estamos buscando
(17:18:56) deepspawn: es como tener solo la llave de una tabla hash
(17:19:05) offray_: pero no sabríamos a dónde apunta
(17:19:30) GSaldana: pero como distinguir entre bit.ly/blah y ur1.ca/blah
(17:19:31) offray_: en el esquema de acortadores hermanos, cada acortador aporta a los demás la segunda parte
(17:19:37) offray_: por el dominio
(17:20:07) deepspawn: umm pero entonces a es backup de b
(17:20:10) GSaldana: aver... dejenme poner un ejemplo y sobre eso ilustramos para estar en la misma frecuencia
(17:20:11) offray_: es decir tengo los acortadores hermanos: off.co gsal.co y dpw.co
(17:20:16) deepspawn: pero b no es backup de nadie
(17:20:37) offray_: los tres acortaron /bla por alguna extraña colisión cósmica del destino
(17:20:50) GSaldana: supongamos ke bit.ly/blah apunta a www.twitter.com, y ur1.ca/blah apunta a identi.ca
(17:20:51) offray_: aunque lo acortaron apuntando a lugares diferentes
(17:20:56) offray_: umm... pera
(17:21:02) offray_: acabemos un ejemplo
(17:21:12) offray_: y luego miramos otro. Quién continua?
(17:21:15) GSaldana: spongamos ke se cae uno de estos dos
(17:21:21) GSaldana: o ambos
(17:21:25) GSaldana: entonces conocemos /blah
(17:22:00) deepspawn: conocemos bit.ly/blah
(17:22:02) GSaldana: como sabria, universalshort.com a donde apuntaba bit.ly/blah y que es diferente de ur1.ca/blah?
(17:22:18) offray_: colocas la primera parte en Universalshort
(17:22:22) offray_: no sólo la segunda
(17:22:28) offray_: el dominio es un desambiguador
(17:22:33) GSaldana: aja
(17:22:33) offray_: cuando ambos estaban funcionando
(17:22:45) offray_: cruzaron los enlaces acortados entre sí
(17:22:50) offray_: dado que son acortadores hermanos
(17:22:52) GSaldana: kedaria como: universalshort.com/bit.ly/blah ?
(17:23:00) offray_: y también sabemos de donde benía
(17:23:02) offray_: si
(17:23:08) offray_: venía
(17:23:25) offray_: pucha tengo la ortografía del español vuelta horrografía
(17:23:34) GSaldana: si, ese esquema de uris puede funcionar
(17:23:43) deepspawn: ummm se me hace fragil y acortadores hermanos gastan muchos recursos replicando enlances
(17:23:56) offray_: Umm... no creo
(17:24:05) offray_: te refieres a recursos de almacenamiento?
(17:24:22) deepspawn: si, en almacenamiento que rara vez se usa
(17:24:33) offray_: No hay un único acortador.
(17:24:38) GSaldana: bueno y como se comunicarian los enlaces entre acortadores?
(17:24:50) deepspawn: por eso propongo la estructura de DHT
(17:25:09) offray_: es decir si bien puedo entrar a universalshort.net (llamémosle mas corto: ushort.co)
(17:25:22) offray_: puedo entrar a cualquiera de los otros y buscar ese acortado
(17:25:37) offray_: sólo bastaría indicar que estoy buscando en uno de los hermanos con un check box
(17:25:52) offray_: no conozco la estructura de DHT
(17:25:55) deepspawn: pero con DHT se obvia ese proceso, todas las busquedas son en la red
(17:26:11) deepspawn: es el sistema de Magnet Link de bittorrent
(17:26:18) GSaldana: el problema ke veo con el dht, y es por falta de conocimiento
(17:26:19) GSaldana: es
(17:26:25) GSaldana: si tengo dos instancias del ushort
(17:26:25) deepspawn: la red p2p contiene el estado, la replicación y la robustes
(17:26:38) GSaldana: como determino el identificador de cada instancia? sin repetir en otras partes?
(17:26:55) offray_: ahhh ok. No conozco mucho de arquitectura de redes p2p
(17:27:06) offray_: es decir, sé que existen y ya
(17:27:08) deepspawn: El punto es a quienes replico
(17:27:45) GSaldana: deepspawn: podrias poner un ejemplo de dos instancias ushort.co acortando urls con el equema que propones?
(17:27:50) deepspawn: si bit.ly es mucho más grande que ur1.ca, y ur1.ca decide replicar bit.ly, gastaria la mayoria de sus recursos
(17:28:13) deepspawn: ur1.co/a ur2.co/a resuelven a lo mismo
(17:28:31) offray_: ohh entiendo. Bueno, pensaba que el espacio de almacenamiento es barato estos días. Veamos el ejemplo de deepspawn
(17:28:40) ***offray_ escucha y aprende
(17:29:25) deepspawn: Basicamente cada nodo solo conoce una parte del estado global, si no lo contiene actualmente lo consulta en la red p2p
(17:29:57) offray_: Ok
(17:29:58) deepspawn: el que conozca el resultado responde y el nodo actualiza
(17:30:06) deepspawn: esa es la misma estructura que tiene DNS
(17:30:06) GSaldana: pero tendrias que compartir el estado de ur1.co a ur2.co en tiempo real, sino, dos usuarios al mismo tiempo acortando diferentes urls pueden generar el mismo id en diferente host
(17:30:25) deepspawn: @gsaldana bueno ese es el problema basico de concurrencia
(17:31:10) deepspawn: por eso se usan funciones hash que garantizan que para un contenido único existe un único identificador hash ( teoricamente)
(17:31:25) offray_: Ok. Me gusta. Sin embargo veo el problema de compartir las direcciones cortas
(17:31:29) GSaldana: comprendo, pero un hash haria muy largos los urls
(17:31:30) deepspawn: de esa forma cualquiera que generase el id sin importar el estado actual de la red generaria el mismo id
(17:31:57) offray_: no podríamos hacer que más bien el dominio sea un desambiguador para las búsquedas, pero que no se compartan las direcciones cortas
(17:32:02) offray_: es decir, combinar los dos esquemas
(17:32:08) deepspawn: es cierto, pero digamos existen infinitas funciones hash, es cuestion de escoger una con las caracteristicas deseadas
(17:32:56) offray_: ohhh chévere!
(17:33:05) deepspawn: offray_ al añadir el dominio se alarga el url, escogiendo bien la funcion hash se pueden mantener cortas
(17:33:13) offray_: Si dos enlaces acortan la misma dirección producen el mismo url corto
(17:33:29) offray_: es decir el algoritmo es determinístico
(17:33:43) deepspawn: y sin memoria
(17:34:00) GSaldana: habria ke examinar los hashes disponibles
(17:34:18) GSaldana: aunke dudo ke haya algo de 4 chars hehe
(17:34:33) tezcatl: ¿y que tal hashes de hashes?
(17:34:48) offray_: se requeriría que cierta parte se comparta en la red p2p, por si un acortado es único de un sólo nodo
(17:35:01) offray_: este es un algoritmo determinístico de acortado de direcciones: http://code.activestate.com/recipes/576918-python-short-url-generator/
(17:35:57) deepspawn: Hay otra forma
(17:36:00) deepspawn: sin usar hash
(17:36:02) offray_: habría que revisarlo, pero el asunto es que si usamos un algoritmo de acortado determinístico en todos los nodos, la búsqueda ser haría por la llave primaria
(17:36:03) deepspawn: pero usando DHT
(17:36:13) deepspawn: generando urls aleatoreas
(17:36:35) deepspawn: es más lenta por que tiene que consultar a la red p2p
(17:36:42) deepspawn: a ver si el id esta libre
(17:36:54) deepspawn: si esta libre se lo toma y lo anuncia los peers guardan
(17:37:23) offray_: habría que mirar qué tan lento
(17:37:46) GSaldana: dependeria de como se realizara la consulta
(17:38:01) GSaldana: que protocolos/metodos se podrian usar?
(17:38:23) deepspawn: todo se pueder hacer por http
(17:39:19) offray_: si, tendría que ser ese.
(17:39:40) deepspawn: offray esta interesante la implementación voy a revisarla
(17:40:00) offray_: Pos yo estaba pensando en montar la idea de los hermanos en web2py, pero no había considerado nada de arquitecturas p2p, por aquello de que no las conozco
(17:40:30) offray_: sin embargo la idea de que uno grande replique a otra y pierda espacio no se me había ocurrido
(17:40:53) deepspawn: http://en.wikipedia.org/wiki/Distributed_hash_table
(17:41:05) GSaldana: se tendria ke tener una lista de hosts a quienes consultar por un id
(17:41:09) deepspawn: en los ejemplos hay varios protocolos que se pueden revisar
(17:41:10) tezcatl ha salido de la sala (quit: Ping timeout: 272 seconds).
(17:41:24) GSaldana: y la velocidad se vera afectada dependiendo de la respuesta de cada host
(17:41:25) deepspawn: la ventaja de las redes p2p es que son emergentes
(17:41:43) deepspawn: no necesitan un ente central que coordine, solo ponerse de acuerdo en los algoritmos
(17:41:47) offray_: Si, totalmente. A por ellas!!!
(17:43:06) offray_: tendría que leer con detenimiento sobre DHT y ver si se puede implementar en Web2py. La segunda parte del post, de la que no he hablado, es de si un proceso como estos puede ayudar al bootstrapping de procesos comunitarios
(17:43:15) offray_: es decir a crear dinámicas auto-sostenidas
(17:43:55) GSaldana: esto tambien nos puede dar una idea: http://en.wikipedia.org/wiki/Coral_Content_Distribution_Network
(17:44:02) offray_: como soy un casi-total ignorante en desarrollo web, que ha paseado por Django, Web2py y Zope, por ahí de pasadita, pensaba en hacer un prototipo de web2py
(17:44:37) GSaldana: de hecho habia platicado con bradley khun y tambien pensabamos hacerlo en web2py
(17:46:21) offray_: Ok. Yo puedo empezar a camellarle la otra semana. Esta tengo que entregar cosas pendientes de la U
(17:46:42) offray_: pero en la siguiente estaría trabajando en eso y blogueando al respecto
(17:46:50) offray_: desde el punto de vista de un novato
(17:46:58) offray_: tons usar web2py los tres estaría bien
(17:47:10) offray_: incluso lo podemos presentar como proyecto al drumbeat fest 2010
(17:47:16) offray_: que será la otra semana en Barcelona
(17:47:25) offray_: ya tengo un canal de comunicación con ellos
(17:47:37) offray_: y seguro este proyecto hace una web mejor para tod@s
(17:47:43) GSaldana: suena bien
(17:47:49) GSaldana: desconosco el drumbeat fest
(17:48:03) GSaldana: pero suena divertido hehe
(17:48:05) offray_: deepspawn: http://www.drumbeat.org/
(17:48:15) offray_: upps era GSaldana, deepspawn http://www.drumbeat.org/
(17:48:46) offray_: la idea es que nos conectemos con el proyecto en "tiempo real" mostrando lo que hacemos a los asistentes en estos tres días
(17:49:01) offray_: y lo compartamos por identica con un hashtag o suscribiéndonos al grupo
(17:49:23) offray_: no hay problema si escribimos en español, el evento tendrá gente hispanoparlante (aunque también lo podemos hacer en inglés)
(17:49:39) offray_: No he trabajado tampoco en un proyecto de programación colaborativa
(17:49:44) offray_: así que habrá mucho que aprender
(17:49:47) offray_: Les suena?
(17:49:51) GSaldana: a mi si
(17:49:59) offray_: deepspawn: ?
(17:50:52) GSaldana: bueno, pensemos bien en la posible implementacion y juntemonos de nuevo la proxima semana?
(17:52:09) offray_: Vale. Estamos de acuerdo en usar web2py. La parte del acortado de direcciones será fácil, si usamos el método que les mostré (o algún otro similar implementado en Python), pero la de la tabla de Hash distribuida puede dar problemas
(17:52:14) offray_: sin embargo suena chévere
(17:52:53) tezcatl [~tezcatl@189.134.15.178] ha entrado en la sala.
(17:54:51) offray_: órale... deepspawn no está en modo "síncrono", pero seguiremos la charla.
(17:54:57) GSaldana: haha
(17:55:13) offray_: Dejemos este canal, por si necesitamos hablar en tiempo real.
(17:55:22) offray_: Bueno, tons así quedamos
(17:55:26) GSaldana: asi es
(17:55:29) offray_: Chao.
(17:55:30) GSaldana: bueno, me tengo que retirar
(17:55:40) GSaldana: bye
(17:55:50) GSaldana ha salido de la sala ("need to get back to work :P").