<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    -----BEGIN PGP SIGNED MESSAGE-----<br>
    Hash: SHA1<br>
    <br>
    Hola de nuevo:<br>
    <br>
        ¿Qué ha pasado?, ¿ya lo habeis discutido todo en la lista?, el
    único que ha dicho algo es piranna, ¿ya nadie quiere realizar este
    "debate"?.<br>
    <br>
    Saludos.<br>
    <br>
    El 23/04/12 00:42, Pablo Lobariñas escribió:<br>
    <span style="white-space: pre;">><br>
      > Hola de nuevo:<br>
      ><br>
      > Pues Piranna tiene razón, así que ahí va mi propuesta: formar
      primeramente dos "equipos" de tres personas, uno digamos del lado
      de Twisted y otro de las alternativas a Twisted. Estas seis
      personas debatirían, desde un punto de vista técnico y de forma
      moderada (o sea, con un moderador), los pros y contras de las
      diferentes alternativas (Twisted y lo que no es Twisted). ¿Quienes
      están dispuestos a incorporarse a uno y otro equipo?. Ya que he
      hecho la propuesta, me ofrezco como moderador, aunque va a ser un
      trabajo muuuy difícil.<br>
      ><br>
      > Jesús Cea propone en un mensaje el establecer un reto,
      aceptado por ambos equipos, de forma que se pueda enseñar código
      escrito usando Twisted y usando una alternativa a Twisted, ¿qué os
      parece?. Entiendo que ese reto debería definirse una vez
      establecidos los equipos.<br>
      ><br>
      > Es una pena Aitor que no puedas estar, entiendo que una
      persona con tu experiencia sería una gran aportación en este
      debate.<br>
      ><br>
      > Por otro lado la propuesta que ha hecho Kiko también me
      parece interesante, no sé si habrá tiempo en la próxima charla
      (posible debate) de ver algo de este tema, pero si hay gente con
      propuestas en este sentido, que lo indiquen y así reservamos una
      parte del tiempo en el próximo encuentro para comentarlos.<br>
      ><br>
      > Bueno, por supuesto esta es mi propuesta respecto al debate,
      pero toda sugerencia, propuesta de como organizarlo, etc, es
      bienvenida.<br>
      ><br>
      > Un saludo.<br>
      ><br>
      > El 21/04/12 09:49, <a class="moz-txt-link-abbreviated" href="mailto:piranna@gmail.com">piranna@gmail.com</a> escribió:<br>
      ><br>
      > > Primero a ver si nos ponemos de acuerdo en si nos los
      tiramos o no y de que forma, porque todavia no lo tengo claro...<br>
      ><br>
      > > Sent from my Android cell phone, please forgive the lack
      of format on the text, and my fat thumbs :-P<br>
      ><br>
      > > El 21/04/2012 09:06, "Alberto Chamorro"
      <<a class="moz-txt-link-abbreviated" href="mailto:a.chamorro.ruiz@gmail.com">a.chamorro.ruiz@gmail.com</a>
      <a class="moz-txt-link-rfc2396E" href="mailto:a.chamorro.ruiz@gmail.com"><mailto:a.chamorro.ruiz@gmail.com></a>> escribió:<br>
      ><br>
      > > Puedo prometer y prometo que me he leído todo!! Guau!!
      Estoy deseando llegar a la reunión y ver como os tiráis trastos
      ("de codigo") a la cabeza!<br>
      ><br>
      > > El 20 de abril de 2012 23:48, Aitor Guevara
      <<a class="moz-txt-link-abbreviated" href="mailto:aitorciki@gmail.com">aitorciki@gmail.com</a> <a class="moz-txt-link-rfc2396E" href="mailto:aitorciki@gmail.com"><mailto:aitorciki@gmail.com></a>>
      escribió:<br>
      ><br>
      > > En fin, creo que esto puede hacerse eterno, porque tiene
      mucho más que<br>
      > > ver con gustos personales que con limitaciones técnicas.<br>
      ><br>
      > > Si Twisted fuese inusable y la gente no quisiese "ni
      tocarlo con un<br>
      > > palo", llevaría muerto años (lleva casi 10 dando
      guerra). En cambio en<br>
      > > la lista de proyectos gordos que lo usan<br>
      > > (<a class="moz-txt-link-freetext" href="http://twistedmatrix.com/trac/wiki/SuccessStories">http://twistedmatrix.com/trac/wiki/SuccessStories</a>) veo
      cantidad de<br>
      > > cosas no sólo nuevas, sino tremendamente exitosas
      (HipChat, TweetDeck,<br>
      > > JustinTV, ...). OpenStack levanta una expectación
      brutal, y ahí lo<br>
      > > tienes, Twisted de los pies a la cabeza.<br>
      ><br>
      > > Evidentemente, que otros lo usen o no no lo convierte en
      bueno o malo,<br>
      > > pero la gente detrás de esos productos precisamente
      tontos no son.<br>
      ><br>
      > > Varios puntos que se han tocado estos días, y como lo
      veo yo, por si a<br>
      > > alguien le interesa (lo que sigue es un buen tochaco,
      avisados<br>
      > > estáis):<br>
      ><br>
      > > * Twisted es complicado, no es Pythonico<br>
      ><br>
      > > Sí pero no :) Escribir software de red asíncrono de
      cierto tamaño es<br>
      > > complicado, se use la herramienta que se use. Si alguien
      cree en<br>
      > > librerías mágicas que eliminan toda la complejidad y
      permiten crear<br>
      > > sistemas para cientos de miles de usuarios como si fuese
      un script<br>
      > > chorra, se equivoca, y punto.<br>
      ><br>
      > > Que la herramienta me permita trabajar de manera más
      eficiente,<br>
      > > pudiendo escribir menos (Python es muy expresivo) y
      facilitando que el<br>
      > > código sea legible (Python desde luego apuesta por esa
      vía), perfecto.<br>
      > > Que pretenda "ocultar" la complejidad inherente al
      sistema ya no me<br>
      > > gusta tanto, eso no suele acabar bien. Y no acaba bien
      porque cuando<br>
      > > las cosas empiezan a petar bajo carga, es muy probable
      que los errores<br>
      > > ocurran fuera de mi comprensión del sistema, y ahora ves
      a entender la<br>
      > > magia que hace la librería x.<br>
      ><br>
      > > Del famoso Zen de Python, mi afirmación favorita es
      "Explicit is<br>
      > > better than implicit." Creo que es lo que distingue a
      Python de Ruby,<br>
      > > donde mucha magia ocurre de manera implícita. Twisted es
      explícito en<br>
      > > su tratamiento de la asincronía, sí, y eso para mí es
      bueno. Más<br>
      > > cuando mi modelo mental de asincronía encaja muy bien
      con lo que<br>
      > > propone Twisted.<br>
      ><br>
      > > * Twisted es un framework, te obliga a hacer las cosas a
      su manera, eso es malo<br>
      ><br>
      > > Sí pero no :) Entiendo que, según las necesidades del
      software que se<br>
      > > escribe, Twisted es matar moscas a cañonazos. Como lo es
      usar Django<br>
      > > para según que aplicaciones web pequeñas. Pero no parece
      que a Django<br>
      > > o Ruby on Rails les vaya mal por ser frameworks, parece
      que a la gente<br>
      > > les son bien útiles.<br>
      ><br>
      > > Si sólo quiero hacer unas cuantas peticiones HTTP a un
      servicio de por<br>
      > > ahí, mover toda mi aplicación al modelo reactor /
      deferred de Twisted<br>
      > > es una locura, sin duda. Ahora bien, si pretendo
      escribir un proceso<br>
      > > que sirve HTTP y HTTPS, además de ser cliente de otro
      servicio web,<br>
      > > que ofrece una interfaz SSH a su estado de ejecución,
      usa su propia<br>
      > > política de resolución de DNS por temas de
      geolocalización y cache, y<br>
      > > que también es servidor de WebSocket, Twisted es
      excelente. Es<br>
      > > excelente porque ese programa es, en el 90%, código de
      red que implica<br>
      > > varios protocolos como cliente y servidor. Puedo usar 8
      librerías<br>
      > > distintas, sí, y hacer que de algún modo funcionen
      juntas, y adaptarme<br>
      > > a las peculiaridades de cada una. O puedo usar Twisted y
      escribir toda<br>
      > > esa funcionalidad de manera integrada y con un único
      estilo.<br>
      ><br>
      > > Y no, no es un caso de uso inventado, es el tipo de
      software que llevo<br>
      > > años escribiendo para ganarme el pan :)<br>
      ><br>
      > > * Twisted es feo, echa para atrás, nadie querría ni
      tocarlo con un palo, ...<br>
      ><br>
      > > Mmmm, un poco sí, pero no :) Me costó introducirme en el
      modelo<br>
      > > Twisted, viniendo del código procedural de toda la vida,
      habían cosas<br>
      > > que no me encajaban. Además, todo ese camel case es
      horrible xD. Pero<br>
      > > en algún momento se produjo un "click" en mi cabeza
      (como a la semana<br>
      > > de usarlo, vamos, no penséis que lleva años) y de golpe
      todo tenía<br>
      > > todo el sentido del mundo. El modelo de eventos, los
      protocolos, las<br>
      > > cadenas de callbacks, de golpe todo encaja.<br>
      ><br>
      > > Ahora mismo me costaría mucho pensar en código asíncrono
      de manera no<br>
      > > orientada a eventos. Los eventos me parecen una manera
      muy natural de<br>
      > > pensar: cuando pase x, haz y. No importa cuando sea, no
      esperes a que<br>
      > > ocurra bloqueando. Yo te digo que cuando ocurra, quiero
      que lo hagas,<br>
      > > y ya está. Como digo me parece muy natural. La sintaxis
      puede gustar<br>
      > > más o menos, pero como con todo, es una simple cuestión
      de costumbre.<br>
      ><br>
      > > * Resumiendo, que es gerundio.<br>
      ><br>
      > > Entiendo que Twisted no guste a todo el mundo. De hecho,
      no está<br>
      > > pensado para ser usado en cualquier proyecto, sólo en
      aquellos<br>
      > > proyectos donde la comunicación de red es el núcleo del
      software. Y<br>
      > > eso es una pequeña porción de todo el software que se
      escribe.<br>
      ><br>
      > > Ahora bien, llevo cerca de 5 años escribiendo sistemas
      en Twisted.<br>
      > > Sistemas que han soportado cargas totalmente locas (en
      Flumotion<br>
      > > llegamos a tener cerca de 40Gbit/s de upload haciendo
      streaming para<br>
      > > Antena3, TVE y otros). Me gusta Twisted, disfruto
      escribiéndolo y<br>
      > > conozco a mucha gente que también lo hace. Es una
      solución excelente<br>
      > > para un tipo dado de problema, y no valorarlo como tal
      por prejuicios<br>
      > > me parece un error.<br>
      ><br>
      > > Pero al final, todo es cuestión de gustos, si alguien no
      quiere<br>
      > > usarlo, por mi perfecto. Pero si alguien tiene
      curiosidad, mi consejo<br>
      > > es que no se deje asustar por tanto odio en la lista :)<br>
      ><br>
      > > Ala, my two cents :)<br>
      ><br>
      > > On Fri, Apr 20, 2012 at 20:21, Jesus Cea
      <<a class="moz-txt-link-abbreviated" href="mailto:jcea@jcea.es">jcea@jcea.es</a> <a class="moz-txt-link-rfc2396E" href="mailto:jcea@jcea.es"><mailto:jcea@jcea.es></a>> wrote:<br>
      > > On 20/04/12 20:02, Josep Danti wrote:<br>
      > > > >> Hay algún caso en el que creo que gana
      twisted. Si se quieren usar<br>
      > > > >> puertos serie, twisted lo tiene
      implementado. gevent no lo tiene<br>
      > > > >> por lo que en el primer read se quedaría
      bloqueado. Habría que<br>
      > > > >> implementar el servicio con greenlets
      ¿verdad? En general veo que<br>
      > > > >> Twisted tiene más protocolos.<br>
      ><br>
      > > Como ya he dicho, twisted es un framework.<br>
      ><br>
      > > Resumido, en cuanto tu código toca twisted, tiene que
      adaptarse a él y<br>
      > > se vuelve dependiente, y si quieres usar una librería no
      soportada, ya<br>
      > > puedes reescribirla...<br>
      ><br>
      > > Eso provoca que twisted incluya mucho ecosistema
      alrededor. Pero es<br>
      > > precisamente porque no se habla con nadie, así que todo
      lo que quieras<br>
      > > hacer depende de twisted. Básicamente twisted es un
      mundo aparte,<br>
      > > incluyo soporte de muchas cosas porque no es posible
      usar librerías<br>
      > > "normales".<br>
      ><br>
      > > Otros proyectos usando greenlets, por ejemplo, y con un
      simple<br>
      > > "monkeypatching" del módulo "socket" (trivial) pueden
      utilizar<br>
      > > CUALQUIER librería de terceros. Naturalmente, estos
      proyectos no<br>
      > > incluyen apenas nada "de serie". No lo necesitan, porque
      usan<br>
      > > cualquier librería python que encuentres y que te venga
      bien. No es<br>
      > > necesario que esa librería esté programada para
      "twisted".<br>
      ><br>
      > > Ejemplo simple:<br>
      ><br>
      > > Si mi libreria hace "monkeypatch" de "socket" haciendo
      que cualquier<br>
      > > lectura o escritura se meta automáticamente en un
      "select" y que ese<br>
      > > "greenlet" se pare o se reanude cuando toca, mi programa
      puede usar<br>
      > > CUALQUIER librería de la biblioteca estándar, como
      "smtplib" para<br>
      > > enviar 1000 mensajes en paralelo sin tener que tocar esa
      librería y<br>
      > > sin lanzar ni un solo hilo.<br>
      ><br>
      > > Eso con twisted no se puede hacer.<br>
      ><br>
      > > Así que sí, twisted incluye muchas cosa de serie...
      porque no tiene<br>
      > > más remedio. Si necesitas algo que no está ahí, o no te
      gusta cómo lo<br>
      > > hace... prepárate a sufrir.<br>
      ><br>
      > > En su caso, si manejas el puerto serie como un fichero,
      puedes usar<br>
      > > "select" o similares. Si tienes que hacer muchas más
      cosas a la vez,<br>
      > > greenlets con un pelín de monkeypatching, o una librería
      específica<br>
      > > como gevent o similar.<br>
      ><br>
      > > PS: Yo sigo usando "poll" de forma masiva.<br>
      ><br>
      > > --<br>
      > > Jesus Cea Avion _/_/ _/_/_/ _/_/_/<br>
      > > <a class="moz-txt-link-abbreviated" href="mailto:jcea@jcea.es">jcea@jcea.es</a> <a class="moz-txt-link-rfc2396E" href="mailto:jcea@jcea.es"><mailto:jcea@jcea.es></a> -
      <a class="moz-txt-link-freetext" href="http://www.jcea.es/">http://www.jcea.es/</a> _/_/ _/_/ _/_/ _/_/ _/_/<br>
      > > jabber / <a class="moz-txt-link-freetext" href="xmpp:jcea@jabber.org">xmpp:jcea@jabber.org</a>
      <a class="moz-txt-link-rfc2396E" href="mailto:xmpp%3Ajcea@jabber.org"><mailto:xmpp%3Ajcea@jabber.org></a> _/_/ _/_/ _/_/_/_/_/<br>
      > > . _/_/ _/_/ _/_/ _/_/ _/_/<br>
      > > "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/<br>
      > > "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/<br>
      > > "El amor es poner tu felicidad en la felicidad de otro"
      - Leibniz<br>
      > > ><br>
      > > > --<br>
      > > > Grupo de usuarios de python ubicados en Madrid<br>
      > > > <a class="moz-txt-link-freetext" href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br>
      > > > <a class="moz-txt-link-freetext" href="http://python-madrid.es">http://python-madrid.es</a><br>
      > > > <a class="moz-txt-link-freetext" href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br>
      > > > Para darte de baja del grupo envía un mensaje a
      <a class="moz-txt-link-abbreviated" href="mailto:python-madrid+unsubscribe@googlegroups.com">python-madrid+unsubscribe@googlegroups.com</a>
      <a class="moz-txt-link-rfc2396E" href="mailto:python-madrid%2Bunsubscribe@googlegroups.com"><mailto:python-madrid%2Bunsubscribe@googlegroups.com></a><br>
      ><br>
      > > --<br>
      > > Grupo de usuarios de python ubicados en Madrid<br>
      > > <a class="moz-txt-link-freetext" href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br>
      > > <a class="moz-txt-link-freetext" href="http://python-madrid.es">http://python-madrid.es</a><br>
      > > <a class="moz-txt-link-freetext" href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br>
      > > Para darte de baja del grupo envía un mensaje a
      <a class="moz-txt-link-abbreviated" href="mailto:python-madrid+unsubscribe@googlegroups.com">python-madrid+unsubscribe@googlegroups.com</a>
      <a class="moz-txt-link-rfc2396E" href="mailto:python-madrid%2Bunsubscribe@googlegroups.com"><mailto:python-madrid%2Bunsubscribe@googlegroups.com></a><br>
      ><br>
      ><br>
      > > --<br>
      > > Grupo de usuarios de python ubicados en Madrid<br>
      > > <a class="moz-txt-link-freetext" href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br>
      > > <a class="moz-txt-link-freetext" href="http://python-madrid.es">http://python-madrid.es</a><br>
      > > <a class="moz-txt-link-freetext" href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br>
      > > Para darte de baja del grupo envía un mensaje a
      <a class="moz-txt-link-abbreviated" href="mailto:python-madrid+unsubscribe@googlegroups.com">python-madrid+unsubscribe@googlegroups.com</a>
      <a class="moz-txt-link-rfc2396E" href="mailto:python-madrid%2Bunsubscribe@googlegroups.com"><mailto:python-madrid%2Bunsubscribe@googlegroups.com></a><br>
      ><br>
      > > --<br>
      > > Grupo de usuarios de python ubicados en Madrid<br>
      > > <a class="moz-txt-link-freetext" href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br>
      > > <a class="moz-txt-link-freetext" href="http://python-madrid.es">http://python-madrid.es</a><br>
      > > <a class="moz-txt-link-freetext" href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br>
      > > Para darte de baja del grupo envía un mensaje a
      <a class="moz-txt-link-abbreviated" href="mailto:python-madrid+unsubscribe@googlegroups.com">python-madrid+unsubscribe@googlegroups.com</a><br>
      ><br>
      ><br>
      > -- <br>
      > Grupo de usuarios de python ubicados en Madrid<br>
      > <a class="moz-txt-link-freetext" href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br>
      > <a class="moz-txt-link-freetext" href="http://python-madrid.es">http://python-madrid.es</a><br>
      > <a class="moz-txt-link-freetext" href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br>
      > Para darte de baja del grupo envía un mensaje a
      <a class="moz-txt-link-abbreviated" href="mailto:python-madrid+unsubscribe@googlegroups.com">python-madrid+unsubscribe@googlegroups.com</a></span><br>
    <br>
    -----BEGIN PGP SIGNATURE-----<br>
    Version: GnuPG v1.4.11 (Darwin)<br>
    Comment: GPGTools - <a class="moz-txt-link-freetext" href="http://gpgtools.org">http://gpgtools.org</a><br>
    <br>
    iEYEARECAAYFAk+YczgACgkQnPFBatEMYOd6TgCeLqgF4QJ7DFyzmF0TE0HYKu0l<br>
    +cMAoLDBiIeXuzkBZBFrZw6gDBmZ8d37<br>
    =jFb5<br>
    -----END PGP SIGNATURE-----<br>
    <br>
  </body>
</html>

<p></p>

-- <br />
Grupo de usuarios de python ubicados en Madrid<br />
<a href="http://groups.google.es/group/python-madrid">http://groups.google.es/group/python-madrid</a><br />
<a href="http://python-madrid.es">http://python-madrid.es</a><br />
<a href="http://twitter.com/#!/python_madrid">http://twitter.com/#!/python_madrid</a><br />
Para darte de baja del grupo envía un mensaje a python-madrid+unsubscribe@googlegroups.com<br />