<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Planeta PyAr (Python)</title>
    <link>http://planeta.python.org.ar/python.html</link>
    <language>es</language>
    <description>Miembros de Python Argentina</description>
    <atom:link href="http://planeta.python.org.ar/python.xml" rel="self" type="application/rss+xml"/>
    <item>
      <guid isPermaLink="false">http://blog.malev.com.ar/?p=529</guid>
      <title>Marcos Vanetta: ActiveRecord, a brief introduction &#x2013; Part 3</title>
      <pubDate>Wed, 08 Sep 2010 13:50:57 GMT</pubDate>
      <link>http://blog.malev.com.ar/2010/09/08/activerecord-a-brief-introduction-part-3/</link>
      <description>&lt;p&gt;named_scope [1][2][3] Nos permite generar &amp;#8220;m&amp;#233;todos&amp;#8221;[4] de clases para ejecutar consultas, de una manera muy legible. 5.1) Supongamos que siempre queremos los post de usuario con id = 3. Har&amp;#237;amos: p = Post.all :conditions =&amp;#62; &amp;#123;:user_id =&amp;#62; 3&amp;#125; Tambi&amp;#233;n queremos todos los post que est&amp;#225;n en estado: searchable p = Post.all :conditions =&amp;#62; &amp;#123;:state =&amp;#62; [...]</description>
    </item>
    <item>
      <guid isPermaLink="false">http://lateral.netmanagers.com.ar/tr/es/weblog/posts/BB914.html</guid>
      <title>Roberto Alsina: Por qu&#xE9; estamos ac&#xE1;.</title>
      <pubDate>Wed, 08 Sep 2010 13:28:07 GMT</pubDate>
      <link>http://feedproxy.google.com/~r/PostsInLateralOpinionAboutPython/~3/k2EyerrEkwg/BB914.html</link>
      <description>&lt;p&gt;Advertencia: rant.&lt;/p&gt;
&lt;p&gt;Ayer el gobierno argentino anunci&amp;#243; que van a regalar 3 millones de netbooks a estudiantes. Tambi&amp;#233;n anunciaron que les van a dar la opci&amp;#243;n de Ubuntu o Windows 7.&lt;/p&gt;
&lt;p&gt;Por supuesto al rato empez&amp;#243; a circular la t&amp;#237;pica reacci&amp;#243;n del lado FLOSS: &amp;#191;por qu&amp;#233; les dan Windows si Linux es mejor? &amp;#161;Es injusto que el gobierno pague Windows!&lt;/p&gt;
&lt;p&gt;Mi misi&amp;#243;n hoy es decirles que crezcan y dejen de actuar como nenes. Estoy ac&amp;#225; para decirles que &lt;strong&gt;paren&lt;/strong&gt; de tratar a los dem&amp;#225;s como beb&amp;#233;s.&lt;/p&gt;
&lt;p&gt;Creo que lo puedo hacer porque estoy inmunizado contra las cr&amp;#237;ticas de la comunidad FLOSS: soy miembro. Tengo un historial bastante lindo con el software libre y open source, no uso nada excepto Linux hace 15 a&amp;#241;os.&lt;/p&gt;
&lt;p&gt;Y tengo la piel gruesa y no me importa lo que digan los dem&amp;#225;s a menos que me den motivos y razones para que me importe.&lt;/p&gt;
&lt;p&gt;Vengo a decirles que si el &amp;#250;nico motivo para usar un software es que es el m&amp;#225;s barato, est&amp;#225;s diciendo que ese software es malo.&lt;/p&gt;
&lt;p&gt;No s&amp;#243;lo quiero que la gente use Linux, quiero que &lt;strong&gt;quieran&lt;/strong&gt; usarlo. Quiero que esperen ansiosos la siguiente versi&amp;#243;n de Ubuntu o Firefox o lo que sea.&lt;/p&gt;
&lt;p&gt;Y el primer paso hacia la excelencia es querer ser excelente. Si al no tener que pagar por Windows ni Ubuntu estamos seguros que gana Windows, entonces Ubuntu tiene problemas y hay que arreglarlos. &amp;#191;La gente no lo quiere ni gratis? Entonces &lt;strong&gt;hay problemas&lt;/strong&gt; y encontrarlos es importante.&lt;/p&gt;
&lt;p&gt;Pero m&amp;#225;s importante que encontrar la pieza que falta es ver el agujero donde deber&amp;#237;a estar esa pieza. La comunidad Open Source se ha vuelto complaciente. Se ha vuelto pagada de s&amp;#237; misma, es un adolescente, seguro de su grandeza e inmortalidad.&lt;/p&gt;
&lt;p&gt;Yo no creo en muchas cosas, pero creo en el libre albedr&amp;#237;o. Creo que la gente &lt;strong&gt;no&lt;/strong&gt; es idiota, creo que si prefieren Windows, es por algo, hay algo que hace mejor, y creo que sea lo que sea eso (que no lo conozco), se puede encontrar y mejorar y reemplazar, y sumado a otras cosas va a lograr que sea el &lt;strong&gt;mejor&lt;/strong&gt; producto y creo que la gente va a querer usarlo.&lt;/p&gt;
&lt;p&gt;Y si no lo hacen... bueno, se di&amp;#243; una pelea honesta, hicimos lo mejor que pudimos, abrimos caminos, creamos cosas interesantes, y los usuarios est&amp;#225;n mejor que antes a&amp;#250;n si no eligieron a nuestro beb&amp;#233;, porque levantamos el nivel general.&lt;/p&gt;
&lt;p&gt;Por ejemplo, antes de Linux, Windows era una bazofia mucho peor, y creo que muchas de las mejoras que tuvo fueron &lt;strong&gt;gracias a Linux&lt;/strong&gt;, y estoy feliz que los usuarios hoy tengan un sistema operativo m&amp;#225;s decente, aunque no sea Linux.&lt;/p&gt;
&lt;p&gt;Quiero que la gente use open source porque es asombroso, no porque es barato. Asombroso &lt;strong&gt;y&lt;/strong&gt; barato est&amp;#225; bien. &amp;#191;S&amp;#243;lo barato? Es una mierda.&lt;/p&gt;
&lt;p&gt;Ya que estamos: &amp;#191;el constante &amp;quot;usan Windows porque no tienen idea&amp;quot;? Es condescendiente y muy, muy molesto. Y si me moesta a m&amp;#237;, que no soy el blanco de la condescendencia, cr&amp;#233;anme, molesta mucho m&amp;#225;s a los usuarios de Windows, y molestar a la gente no la convence de nada, excepto de que sos molesto.&lt;/p&gt;
&lt;p&gt;Crezcan, m&amp;#233;tanle para adelante, empiecen a hacer cosas asombrosas, muestren calidad. Para eso estamos ac&amp;#225;, no para ser la segunda marca de otro, no para ser la Goliat cola.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jLCA4gxr-9Pq4YOe5cMcGMgxJuo/0/da"&gt;&lt;img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/jLCA4gxr-9Pq4YOe5cMcGMgxJuo/0/di" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jLCA4gxr-9Pq4YOe5cMcGMgxJuo/1/da"&gt;&lt;img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/jLCA4gxr-9Pq4YOe5cMcGMgxJuo/1/di" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PostsInLateralOpinionAboutPython?a=k2EyerrEkwg:XmzE1I81HT0:yIl2AUoC8zA"&gt;&lt;img border="0" src="http://feeds.feedburner.com/~ff/PostsInLateralOpinionAboutPython?d=yIl2AUoC8zA" /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height="1" src="http://feeds.feedburner.com/~r/PostsInLateralOpinionAboutPython/~4/k2EyerrEkwg" width="1" /&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">http://humitos.wordpress.com/?p=294</guid>
      <title>Humitos: Introducci&#xF3;n a Django Reloaded</title>
      <pubDate>Mon, 06 Sep 2010 18:17:55 GMT</pubDate>
      <link>http://humitos.wordpress.com/2010/09/06/introduccion-a-django-reloaded/</link>
      <description>&lt;p&gt;La &amp;#250;ltima vez que d&amp;#237; una charla si mal no recuerdo fue hace un a&amp;#241;o atr&amp;#225;s en la PyCon de Argentina. La verdad que estoy re oxidado con esto.&lt;/p&gt;
&lt;p&gt;Hace un tiempo cuando &lt;a href="http://www.taniquetil.com.ar/plog/"&gt;Facundo&lt;/a&gt; me ofreci&amp;#243; dar una charla de &lt;em&gt;Introducci&amp;#243;n a Django&lt;/em&gt; en el &lt;a href="http://python.org.ar/pyar/CharlasAbiertas2010"&gt;ciclo de charlas&lt;/a&gt; organizadas por FM La Tribu&amp;#160;le dije que s&amp;#237;, que pod&amp;#237;a hacer un viaje a Buenos Aires para dar una chalar de Django ah&amp;#237;. Me parec&amp;#237;a que estaba buena la idea y participar en ella iba a estar bueno tambi&amp;#233;n: &amp;#8220;me parec&amp;#237;a una buena forma de &lt;strong&gt;volver&lt;/strong&gt; a las tablas y adem&amp;#225;s me iba a obligar a hacerlo&amp;#8221;&lt;/p&gt;
&lt;p&gt;Lo malo de esto es que est&amp;#225; llegando la fecha de mi charla (es el 11 de Septiembre, el finde que viene) y todav&amp;#237;a no la tengo lista a la charla. La estuve viendo, y aunque me parece que est&amp;#225; bien, quiero cambiar algunas cosas y ver la forma de que sea m&amp;#225;s din&amp;#225;mica y no tanto bombardeo de conceptos. Vamos a ver c&amp;#243;mo sale.&lt;/p&gt;
&lt;p&gt;Como siempre, estoy un poco ansioso porque voy a estar en frente de mucha gente que quiere aprender algo que yo voy a explicar y adem&amp;#225;s supongo que va a haber alguno de los grosos de PyAr tomando ex&amp;#225;men &lt;img alt=":P" class="wp-smiley" src="http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif" /&gt;  . No tengo mucha &lt;strong&gt;experiencia&lt;/strong&gt; dando charlas frente al p&amp;#250;blico, he dado algunas (por tirar un n&amp;#250;mero: 7, ponele) pero siempre he estado nervioso con anticipaci&amp;#243;n. Por m&amp;#225;s seguro que est&amp;#233; de que la &lt;strong&gt;charla&lt;/strong&gt; est&amp;#225; &lt;strong&gt;buena&lt;/strong&gt; o aunque sepa que es &lt;strong&gt;p&amp;#233;sima&lt;/strong&gt;: &amp;#8220;s&amp;#237;, he dicho cada cosa frente al p&amp;#250;blico que si todos me hubiesen escuchado y visto mi carrera estar&amp;#237;a arruinada&amp;#8221; &lt;img alt=";)" class="wp-smiley" src="http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif" /&gt; &lt;/p&gt;
&lt;p&gt;Espero que vaya la &lt;strong&gt;gente justa&lt;/strong&gt;, ni m&amp;#225;s ni menos. No est&amp;#225; bueno cuando se llena que no da a basto el lugar y tampoco est&amp;#225; bueno cuando hay muy poca gente. Me gustar&amp;#237;a que salga bien la charla, que se entienda y que la gente quede contenta con lo que pude transmitirles, voy a hacer lo mejor que pueda aunque ya &lt;strong&gt;estoy con poco tiempo&lt;/strong&gt; si se quiere.&lt;/p&gt;
&lt;br /&gt;  &lt;a href="http://feeds.wordpress.com/1.0/gocomments/humitos.wordpress.com/294/" rel="nofollow"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/humitos.wordpress.com/294/" /&gt;&lt;/a&gt; &lt;a href="http://feeds.wordpress.com/1.0/godelicious/humitos.wordpress.com/294/" rel="nofollow"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/humitos.wordpress.com/294/" /&gt;&lt;/a&gt; &lt;a href="http://feeds.wordpress.com/1.0/gofacebook/humitos.wordpress.com/294/" rel="nofollow"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/humitos.wordpress.com/294/" /&gt;&lt;/a&gt; &lt;a href="http://feeds.wordpress.com/1.0/gotwitter/humitos.wordpress.com/294/" rel="nofollow"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/humitos.wordpress.com/294/" /&gt;&lt;/a&gt; &lt;a href="http://feeds.wordpress.com/1.0/gostumble/humitos.wordpress.com/294/" rel="nofollow"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/humitos.wordpress.com/294/" /&gt;&lt;/a&gt; &lt;a href="http://feeds.wordpress.com/1.0/godigg/humitos.wordpress.com/294/" rel="nofollow"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/humitos.wordpress.com/294/" /&gt;&lt;/a&gt; &lt;a href="http://feeds.wordpress.com/1.0/goreddit/humitos.wordpress.com/294/" rel="nofollow"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/humitos.wordpress.com/294/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" height="1" src="http://stats.wordpress.com/b.gif?host=humitos.wordpress.com&amp;amp;blog=1616317&amp;amp;post=294&amp;amp;subd=humitos&amp;amp;ref=&amp;amp;feed=1" width="1" /&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">http://blog.malev.com.ar/?p=520</guid>
      <title>Marcos Vanetta: ActiveRecord, a brief introduction &#x2013; Part 2</title>
      <pubDate>Mon, 06 Sep 2010 13:18:32 GMT</pubDate>
      <link>http://blog.malev.com.ar/2010/09/06/activerecord-a-brief-introduction-part-2/</link>
      <description>&lt;p&gt;Preguntas en ActiveRecord 3.0) ActiveRecord est&amp;#225; conectado? User.connected? # =&amp;#62; true 3.1) Change u = User.first u.changed? # =&amp;#62; false u.first_name = "NewName" # =&amp;#62; "NewName" u.changed? # =&amp;#62; true 3.1.2) &amp;#191;Qu&amp;#233; cambi&amp;#243;? u.changed # =&amp;#62; ["first_name"] 3.1.3) &amp;#191;Cu&amp;#225;les son los cambios? u.changes # =&amp;#62; {"first_name"=&amp;#62;["Enrique", "NewName"]} 3.2) &amp;#191;C&amp;#243;mo preguntar si guardamos los cambios? No [...]</description>
    </item>
    <item>
      <guid isPermaLink="false">http://www.taniquetil.com.ar/plog/post/1/479</guid>
      <title>Facundo Batista: Python Argentina, la historia</title>
      <pubDate>Sun, 05 Sep 2010 13:48:24 GMT</pubDate>
      <link>http://www.taniquetil.com.ar/plog/post/1/479</link>
      <description>&lt;p&gt;&lt;br /&gt;
&lt;em&gt;El siguiente texto form&amp;oacute; parte de la Primera Edici&amp;oacute;n de &lt;a href="http://revista.python.org.ar/"&gt;PET - Python Entre Todos&lt;/a&gt;, la revista de PyAr. Tiene un mont&amp;oacute;n de art&amp;iacute;culos copados, y la pueden ver online, o bajarla en PDF en distintos formatos. En la semana va a salir el mismo n&amp;uacute;mero, pero en ingl&amp;eacute;s, y esperamos una segunda edici&amp;oacute;n prontito. &amp;iexcl;Disfr&amp;uacute;tenla!&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&lt;br /&gt;
Ahora, el art&amp;iacute;culo.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Conoc&amp;iacute; Python en el 2001, buscando un lenguaje piola para trabajar en entornos Unix y Windows, y frustrado por algunas experiencias anteriores. Inmediatamente v&amp;iacute; que era algo que me gustaba, y comenc&amp;eacute; a invertir tiempo, aprendiendo y profundizando en &amp;eacute;l.&lt;br /&gt;
&lt;br /&gt;
No conoc&amp;iacute;a muchos que usaran este lenguaje. S&amp;iacute;, estaba la lista de Python en espa&amp;ntilde;ol, y la lista en ingl&amp;eacute;s, pero no ten&amp;iacute;a contacto con otros argentinos que programaran en &amp;eacute;l (m&amp;aacute;s que un par de compa&amp;ntilde;eros de trabajo). Buscando gente, ca&amp;iacute; en un sitio que organizaba reuniones de todo tipo, me anot&amp;eacute;, pero nada.&lt;br /&gt;
&lt;br /&gt;
Lleg&amp;oacute; el 2004. Pablo Ziliani (m&amp;aacute;s conocido como &lt;em&gt;un tal Pablo&lt;/em&gt;) encontr&amp;oacute; el mismo sitio pero lo tom&amp;oacute;, lo sac&amp;oacute; de su hibernaci&amp;oacute;n, y mand&amp;oacute; invitaci&amp;oacute;n para juntarnos.&lt;br /&gt;
&lt;br /&gt;
Esta juntada fue finalmente la Primera Reuni&amp;oacute;n de Python Argentina. Nos encontramos en un bar c&amp;eacute;ntrico, el 9 de Septiembre de 2004, Pablo, un chico llamado Javier que no volvimos a ver, y el que suscribe.&lt;br /&gt;
&lt;br /&gt;
Aunque s&amp;oacute;lo charlamos de generalidades alrededor de Python, el &amp;iacute;mpetu no qued&amp;oacute; ah&amp;iacute; y con esa base se organiz&amp;oacute; la pr&amp;oacute;xima reuni&amp;oacute;n, en la que ya se empez&amp;oacute; a formar el grupo propiamente dicho.&lt;br /&gt;
&lt;br /&gt;
En esta segunda reuni&amp;oacute;n, a fines de Octubre, se bautiz&amp;oacute; al grupo como &amp;ldquo;PyAr - Python Argentina&amp;rdquo;, y decidimos crear la lista de correo y establecer un portal web donde se den a conocer los objetivos y actividades del grupo, las instrucciones para participar, enlaces a informaci&amp;oacute;n &amp;uacute;til, y generar contenido propio (como por ejemplo experiencias locales en el uso de Python).&lt;br /&gt;
&lt;br /&gt;
El primer a&amp;ntilde;o del grupo pas&amp;oacute; a pura reuni&amp;oacute;n. Darnos a conocer no era f&amp;aacute;cil, y aunque hac&amp;iacute;amos promedio una reuni&amp;oacute;n por mes, &amp;eacute;ramos entre cuatro y siete personas, siempre los mismos. Pero en funci&amp;oacute;n de llegar a m&amp;aacute;s gente fue que en la reuni&amp;oacute;n de Agosto del 2005 decidimos participar en CaFeConf 2005, las Jornadas Abiertas de GNU/Linux y Software Libre organizadas por CaFeLUG. Presentamos entonces dos charlas para dicha conferencia, Lucio di&amp;oacute; una sobre PyGame y yo una de introducci&amp;oacute;n a Python.&lt;br /&gt;
&lt;br /&gt;
Las primeras reuniones del 2006 nos encontraron ya con m&amp;aacute;s gente (entre diez y veinte por reuni&amp;oacute;n), y discutiendo sobre otros temas a nivel de grupo m&amp;aacute;s all&amp;aacute; de la difusi&amp;oacute;n. Est&amp;aacute;bamos con la creaci&amp;oacute;n de las primeras remeras, Ricardo hab&amp;iacute;a creado un canal de IRC en Freenode (el viejo &lt;em&gt;#python-ar&lt;/em&gt;), y Alecu propon&amp;iacute;a formalizar un poco el tema de las reuniones, creando un procedimiento para las mismas.&lt;br /&gt;
&lt;br /&gt;
Tambi&amp;eacute;n con estructuras m&amp;aacute;s afianzadas se empezaron a barajar otros desaf&amp;iacute;os, como reuniones en interior del pa&amp;iacute;s, traer alg&amp;uacute;n invitado internacional a CaFeConf 2006, traducir documentaci&amp;oacute;n oficial de Python, y algo que en su momento se llam&amp;oacute; NERDcamp...&lt;br /&gt;
&lt;br /&gt;
En Febrero de ese a&amp;ntilde;o yo realic&amp;eacute; mi primer viaje a PyCon USA (la conferencia de Python m&amp;aacute;s importante del mundo), donde PyAr comenz&amp;oacute; a hacerse visible m&amp;aacute;s all&amp;aacute; de nuestras fronteras, no s&amp;oacute;lo porque d&amp;iacute; una Lightning Talk de nuestro grupo, sino porque aprovech&amp;eacute; para vender muchas de las remeras que hab&amp;iacute;amos hecho.&lt;br /&gt;
&lt;br /&gt;
En reuniones de esa primera parte del a&amp;ntilde;o tambi&amp;eacute;n hablamos sobre el contenido de la lista de correo (si la separamos en sub listas o qu&amp;eacute; hacemos para limitar las conversaciones no espec&amp;iacute;ficas a Python; esta discusi&amp;oacute;n la seguimos teniendo hoy en d&amp;iacute;a...), hablamos del D&amp;iacute;a Python realizado en Mendoza, y charlamos sobre c&amp;oacute;mo organizar el grupo a nivel estructura: si &amp;iacute;bamos a definir /cargos/ dentro del grupo, o seguir como est&amp;aacute;bamos en una estructura plana sin presidentes ni presididos.&lt;br /&gt;
&lt;br /&gt;
La organizaci&amp;oacute;n del grupo merece un p&amp;aacute;rrafo aparte. Desde el comienzo de Python Argentina hasta ahora no hubieron nunca personas con cargos espec&amp;iacute;ficos, sino que siempre mantuvimos una muy saludable anarqu&amp;iacute;a, en donde hab&amp;iacute;a una asociaci&amp;oacute;n y un pacto voluntario entre las personas del grupo que quisieran llevar alg&amp;uacute;n proyecto interno adelante, sin necesidad de &amp;quot;decisiones oficiales&amp;quot; que impongan recorridos al resto de las personas del grupo. En otras palabras, si alguien en PyAr desea empujar un proyecto, s&amp;oacute;lo tiene que hacerlo, y tendr&amp;aacute; m&amp;aacute;s o menos participantes y/o ayudantes en funci&amp;oacute;n de si el proyecto es interesante o no, pero no tiene que &amp;quot;oficializarlo&amp;quot;, o pedir aprobaci&amp;oacute;n sobre el mismo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Siguiendo con la historia&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
En Junio del 2006 se realiz&amp;oacute; la Primer Jornada Python Santa Fe, en la Universidad Tecnol&amp;oacute;gica Nacional, ciudad y provincia de, justamente, Santa Fe. Las jornadas fueron un &amp;eacute;xito, y en la reuni&amp;oacute;n / sprint posterior a las mismas (mientras com&amp;iacute;amos pizza y habl&amp;aacute;bamos de todo un poco) se empez&amp;oacute; a trabajar en un proyecto importante para el grupo: una versi&amp;oacute;n offline de la Wikipedia. Este evento nos motiv&amp;oacute; bastante, y en la reuni&amp;oacute;n siguiente Pablo Ziliani&amp;nbsp; sugiri&amp;oacute; que tratemos de ponernos como objetivo &amp;quot;organizar una reuni&amp;oacute;n /federal/ al menos una vez al a&amp;ntilde;o&amp;quot;, y decidimos que quer&amp;iacute;amos tener una bandera de PyAr.&lt;br /&gt;
&lt;br /&gt;
Septiembre del 2006 nos encontr&amp;oacute; participando en la tercera edici&amp;oacute;n de PyWeek, una competencia internacional en la que se debe programar un juego en Python en una semana, arrancando desde cero y terminando con algo que prueban el resto de los competidores. No era la primera vez que particip&amp;aacute;bamos, pero en esta oportunidad uno de los grupos de PyAr gan&amp;oacute; la competencia con el juego Typus Pocus (&amp;iexcl;y otro grupo nuestro qued&amp;oacute; tercero!).&lt;br /&gt;
&lt;br /&gt;
La segunda mitad del a&amp;ntilde;o no trajo mayores novedades hasta que llegamos a CaFeConf 2006, donde estrenamos stand con una bandera reci&amp;eacute;n salida del horno, y adem&amp;aacute;s una de las plenarias del evento era dada por Alex Martelli (habl&amp;oacute; de &amp;quot;Qu&amp;eacute; es Python y por qu&amp;eacute; importa&amp;quot;), invitado internacional tra&amp;iacute;do por gestiones propias de PyAr.&lt;br /&gt;
&lt;br /&gt;
Luego de este evento empezamos a reconocer lo importante que era para Python Argentina participar de estas conferencias y jornadas abiertas a la comunidad, ya que luego de las mismas not&amp;aacute;bamos un salto en la cantidad de suscriptos a la lista de correo. Adem&amp;aacute;s, empezamos a establecer buenos v&amp;iacute;nculos con el resto de la comunidad de software libre de Argentina, comunidad a la que algunos conoc&amp;iacute;amos pero en la que no est&amp;aacute;bamos involucrados.&lt;br /&gt;
&lt;br /&gt;
El a&amp;ntilde;o 2007 fueron meses de consolidaci&amp;oacute;n. Se realizaron varias reuniones en Capital e interior, estuvo el segundo D&amp;iacute;a Python en Santa F&amp;eacute; (esta vez con dos tracks, de nuevo un &amp;eacute;xito), y PyAr particip&amp;oacute; en CaFeConf, en Unlux y en las Jornadas Regionales de Software Libre, en C&amp;oacute;rdoba. Como se discuti&amp;oacute; en la reuni&amp;oacute;n del grupo luego de esa conferencia, Python Argentina era un grupo nuevo que estaba naciendo y&amp;nbsp; aprovech&amp;aacute;bamos la gentileza de los &amp;ldquo;hermanos mayores&amp;rdquo;: la capacidad organizativa y la gente involucrada en los LUGs. Un detalle importante a considerar es que Python era el &amp;uacute;nico lenguaje de programaci&amp;oacute;n con stand propio, tanto en CaFeConf como en dichas Jornadas.&lt;br /&gt;
&lt;br /&gt;
Durante este a&amp;ntilde;o tambi&amp;eacute;n la lista de correo alcanz&amp;oacute; una cantidad de participantes suficientes como para que la rueda gire sola: la gran cantidad de respuestas a las preguntas dej&amp;oacute; de surgir del grupito de 20 o 30 personas que arranc&amp;oacute; el grupo y pas&amp;oacute; a ser generadas por personas m&amp;aacute;s nuevas. Tambi&amp;eacute;n activamos el IRC como medio de comunicaci&amp;oacute;n, pero usando &lt;em&gt;#pyar&lt;/em&gt; como canal en Freenode (necesit&amp;aacute;bamos hacer algunos cambios y no ten&amp;iacute;amos acceso a Ricardo, que hab&amp;iacute;a creado el anterior). En conjunto, la lista y el canal de IRC, probaron ser los mejores medios de comunicaci&amp;oacute;n para el grupo, complement&amp;aacute;ndose entre ellos ya que la din&amp;aacute;mica es distinta en cada caso, y ambos teniendo como soporte persistente al sitio web, que de a poco se fue llenando de Recetas, Cartelera de Trabajo, Novedades, Documentaci&amp;oacute;n, FAQ, etc.&lt;br /&gt;
&lt;br /&gt;
2008 arranc&amp;oacute; con una gran novedad: el primer PyCamp. Organizado por Except, una empresa de C&amp;oacute;rdoba, este evento se desarroll&amp;oacute; durante cuatro d&amp;iacute;as en los que fuimos a trabajar en distintos proyectos de Software libre relacionados con Python, a socializar, y a tener alg&amp;uacute;n peque&amp;ntilde;o contacto con la naturaleza.&lt;br /&gt;
&lt;br /&gt;
En la reuni&amp;oacute;n de Mayo de ese a&amp;ntilde;o se charl&amp;oacute; sobre las participaciones del grupo en otros eventos internacionales. Estuvimos representados nuevamente en PyCon y por primera vez en Fisl (donde integrantes de PyAr hicieron Falabracman, un juego en 36 horas para la competencia OLPC Game Jam, &amp;iexcl;la cual ganaron!).&amp;nbsp; Tambi&amp;eacute;n se charl&amp;oacute; una diferencia importante entre los grupos de usuarios de USA y de Argentina; en Estados Unidos se juntan directamente a programar o a hablar de cosas netamente t&amp;eacute;cnicas, y en Argentina las reuniones son con un fin m&amp;aacute;s social, para conocernos las caras y quiz&amp;aacute; tomar alguna que otra cerveza.&amp;nbsp; Relacionado con una idea que ven&amp;iacute;a de antes, Humitos nos cont&amp;oacute; que estaba haciendo una traducci&amp;oacute;n al espa&amp;ntilde;ol de manual de Django, y surgi&amp;oacute; el tema de traducir el Tutorial oficial de Python, con la posibilidad de imprimirlos y encuadernarlos para venderlos o regalarlos en algunos eventos.&lt;br /&gt;
&lt;br /&gt;
La segunda mitad del a&amp;ntilde;o estuvo bien movidita tambi&amp;eacute;n. No s&amp;oacute;lo por reuniones en Buenos Aires e interior (&amp;iexcl;primera vez en Rosario!), sino que terminamos de definir el dise&amp;ntilde;o de la segunda tanda de remeras de PyAr, y participamos nuevamente en las Jornadas Regionales de Software Libre. En este evento Python volvi&amp;oacute; a pisar fuerte, no solo por la cantidad de charlas presentadas o lo exitoso del stand, sino que volvimos a traer un invitado internacional (Raymond Hettinger) para que d&amp;eacute; una plenaria en un evento de primera linea.&lt;br /&gt;
&lt;br /&gt;
Tambi&amp;eacute;n se realizaron las 3ras Jornadas Python en Santa Fe, donde se anunci&amp;oacute; formalmente que al a&amp;ntilde;o siguiente se realizar&amp;iacute;a la primera conferencia nacional de Python en Argentina. En la &amp;uacute;ltima reuni&amp;oacute;n del a&amp;ntilde;o en Buenos Aires se termin&amp;oacute; de discutir el arranque de la organizaci&amp;oacute;n de esta importante conferencia, y terminamos el 2008 con muchas ganas de que arranque el pr&amp;oacute;ximo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Quinto aniversario&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Los &amp;uacute;ltimos d&amp;iacute;as de Marzo del 2009 nos trajo la segunda edici&amp;oacute;n del PyCamp, nuevamente en Los Cocos (C&amp;oacute;rdoba). Fueron nuevamente cuatro d&amp;iacute;as en los que se desarrollaron muchos proyectos, y se profundizaron muchos lazos dentro de la comunidad Python.&lt;br /&gt;
&lt;br /&gt;
La segunda parte del a&amp;ntilde;o tuvo como plato fuerte a PyCon Argentina 2009, la primera conferencia en espa&amp;ntilde;ol del mundo, un merecido festejo del quinto cumplea&amp;ntilde;os de PyAr. Fueron dos d&amp;iacute;as en Septiembre, ma&amp;ntilde;ana y tarde, con tres secciones en paralelo la mayor parte del tiempo. Usamos tres auditorios de distintas capacidades, siendo el mayor para 300 personas, y dividimos las exposiciones en tres tipos: charlas comunes (tuvimos 33 distribuidas en ambos d&amp;iacute;as), lightning talks, y plenarias.&lt;br /&gt;
&lt;br /&gt;
PyCon fue todo un &amp;eacute;xito (no esper&amp;aacute;bamos tanta gente, vinieron m&amp;aacute;s de 400 personas, muchas de Buenos Aires, pero una buena parte de interior, y tambi&amp;eacute;n gente de otros paises), y tuvo muy buena repercusi&amp;oacute;n tanto en nuestro pa&amp;iacute;s como en medios internacionales. A esto &amp;uacute;ltimo ayud&amp;oacute; que tuvimos dos invitados de primera linea (Jacob Kaplan-Moss y Collin Winter) que se lucieron en sus respectivas charlas plenarias.&lt;br /&gt;
&lt;br /&gt;
Para la conferencia pudimos terminar uno de los proyectos de larga data dentro del grupo: ni m&amp;aacute;s ni menos que la traducci&amp;oacute;n completa al castellano del Tutorial de Python (el oficial), que publicamos en la red pero que tambi&amp;eacute;n imprimimos en cantidad para repartir durante la conferencia (especialmente en la charla de &lt;em&gt;Introducci&amp;oacute;n a Python&lt;/em&gt;), y que luego fuimos llevando a los otros eventos que participamos. Adem&amp;aacute;s, aprovechando que PyAr tiene mucha gente estudiando en Universidades, donamos Tutoriales a las Bibliotecas de dichas instituciones.&lt;br /&gt;
&lt;br /&gt;
Terminamos el a&amp;ntilde;o con una participaci&amp;oacute;n en un evento amigo, F&amp;aacute;brica de Fallas, en La Tribu. No es un &amp;aacute;mbito tradicionalmente orientado a la programaci&amp;oacute;n, y aunque PyAr siempre tuvo buena acogida en ese &amp;aacute;mbito, nos sorprendi&amp;oacute; gratamente que uno de los momentos art&amp;iacute;sticos del evento haya sido la pintada de un mural cuya base es un tutorial de Python!&lt;br /&gt;
&lt;br /&gt;
El comienzo del 2010 tuvo al cl&amp;aacute;sico PyCamp en la primera parte del a&amp;ntilde;o, pero esta vez no en Los Cocos, como en las dos ediciones anteriores, sino en Ver&amp;oacute;nica (Buenos Aires). Cambi&amp;oacute; el lugar pero no el estilo: los PyCamps son uno de los eventos de programaci&amp;oacute;n m&amp;aacute;s interesantes que conozco, y uno de los que m&amp;aacute;s cumplen a la hora de aprender y divertirse.&lt;br /&gt;
&lt;br /&gt;
Tambi&amp;eacute;n se aceler&amp;oacute; el trabajo sobre la CDPedia, el proyecto que ya les hab&amp;iacute;a mencionado sobre meter la Wikipedia en un disco para usarse sin estar conectados a Internet. En la versi&amp;oacute;n CD entraron m&amp;aacute;s de 80 mil art&amp;iacute;culos, la mayor&amp;iacute;a con im&amp;aacute;genes. Y en la versi&amp;oacute;n DVD entraron todos, casi todos con sus respectivas im&amp;aacute;genes. Si podemos terminar algunas funcionalidades que necesitamos, estar&amp;iacute;amos distribuyendo la CDPedia en muchas escuelas de todo el pa&amp;iacute;s, a trav&amp;eacute;s del Ministerio de Educaci&amp;oacute;n.&lt;br /&gt;
&lt;br /&gt;
En Mayo se realiz&amp;oacute; el primer Python Day en Rafaela, Santa Fe, el cual fue un &amp;eacute;xito, llevando a casi 100 personas. Y para Septiembre se har&amp;aacute; el primer Python Day en Buenos Aires, que esperamos ansiosos.&lt;br /&gt;
&lt;br /&gt;
La segunda parte del a&amp;ntilde;o nos traer&amp;aacute; tambi&amp;eacute;n el primer Ciclo de Charlas Abiertas, en La Tribu (una serie de charlas sobre programaci&amp;oacute;n y Python, a la gorra, abiertas a la comunidad), y la segunda edici&amp;oacute;n de PyCon Argentina, esta vez en C&amp;oacute;rdoba.&lt;br /&gt;
&lt;br /&gt;
Seguramente cerremos el sexto a&amp;ntilde;o del grupo festejando todo lo hecho, pero tambi&amp;eacute;n planeando nuevos eventos, nuevas formas de promover Python, y de juntarnos entre todos los usuarios de Python del pa&amp;iacute;s.</description>
    </item>
    <item>
      <guid isPermaLink="false">http://www.tail-f.com.ar/?p=423</guid>
      <title>Andr&#xE9;s Gattinoni: Notificaciones de mails Prioritarios de Gmail en nuestro escritorio</title>
      <pubDate>Sat, 04 Sep 2010 18:21:46 GMT</pubDate>
      <link>http://www.tail-f.com.ar/programacion/python/notificaciones-de-mails-prioritarios-de-gmail-en-nuestro-escritorio.html</link>
      <description>&lt;div class="wp-caption alignright" id="attachment_424" style="width: 310px;"&gt;&lt;a href="http://www.tail-f.com.ar/wp-content/uploads/gmail-logo.jpg"&gt;&lt;img alt="GMail" class="size-medium wp-image-424" height="224" src="http://www.tail-f.com.ar/wp-content/uploads/gmail-logo-300x224.jpg" title="gmail-logo" width="300" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text"&gt;GMail&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;En estos d&amp;#237;as &lt;a href="http://www.gmail.com"&gt;GMail&lt;/a&gt; empez&amp;#243; a implementar la &lt;a href="http://mail.google.com/support/bin/answer.py?hl=en&amp;amp;answer=186531"&gt;Priority Inbox&lt;/a&gt;, o &lt;a href="http://mail.google.com/support/bin/answer.py?hl=es&amp;amp;answer=186531"&gt;Prioritarios&lt;/a&gt; en su versi&amp;#243;n en castellano. No es nada demasiado novedoso, en realidad es una etiqueta que define a un mensaje como prioritario. Lo m&amp;#225;s interesante es que Gmail no solamente te puede mostrar por separado los mails con prioridad de los otros, sino que nos promete ir &amp;#8220;aprendiendo&amp;#8221; a determinar cu&amp;#225;les son prioritarios y cu&amp;#225;les no.&lt;/p&gt;
&lt;p&gt;En estos d&amp;#237;as estuve probando el feature y me viene bien. Yo recibo muchos mails por d&amp;#237;a, la mayor&amp;#237;a de distintas listas de correo. Y como soy muy obsesivo, cada vez que tengo un mensaje nuevo voy a ver de qu&amp;#233; se trata y &amp;#8220;marcarlo como le&amp;#237;do&amp;#8221;. Este feature me permite perocuparme solamente por los prioritarios y dejar los menos importantes (como los de las listas) para m&amp;#225;s tarde.&lt;/p&gt;
&lt;p&gt;Hoy pens&amp;#233;: &amp;#8220;qu&amp;#233; bueno estar&amp;#237;a tener una aplicaci&amp;#243;n que me notifique solamente de los mails importantes&amp;#8221;. Ya existen varios &lt;a href="http://www.google.com/search?&amp;amp;q=gmail+notifier&amp;amp;ie=utf-8&amp;amp;oe=utf-8"&gt;notifiers para Gmail&lt;/a&gt;, tanto de Google o de terceros, para Firefox o para el Desktop. Pero supongo que todav&amp;#237;a no habr&amp;#225;n implementado esta posibilidad de solamente avisarte de los mensajes prioritarios. As&amp;#237; que lo que hice fue hacerlo en Python que es muuuy f&amp;#225;cil.&lt;/p&gt;
&lt;p&gt;En su versi&amp;#243;n simplificada, ver si hay mails &amp;#8220;Importantes&amp;#8221; y notificarlo es tan sencillo como esto:&lt;/p&gt;
&lt;div class="dean_ch" style="white-space: wrap;"&gt;&lt;span class="co1"&gt;#!/usr/bin/env python&lt;/span&gt;&lt;br /&gt;
&lt;span class="co1"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;import&lt;/span&gt; &lt;span class="kw3"&gt;sys&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;import&lt;/span&gt; &lt;span class="kw3"&gt;imaplib&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;import&lt;/span&gt; pynotify&lt;br /&gt;
&lt;span class="kw1"&gt;from&lt;/span&gt; &lt;span class="kw3"&gt;email&lt;/span&gt;.&lt;span class="me1"&gt;header&lt;/span&gt; &lt;span class="kw1"&gt;import&lt;/span&gt; decode_header&lt;br /&gt;
&lt;span class="kw1"&gt;from&lt;/span&gt; &lt;span class="kw3"&gt;email&lt;/span&gt;.&lt;span class="kw3"&gt;parser&lt;/span&gt; &lt;span class="kw1"&gt;import&lt;/span&gt; Parser&lt;/p&gt;
&lt;p&gt;host = &lt;span class="st0"&gt;&amp;#8216;imap.gmail.com&amp;#8217;&lt;/span&gt;&lt;br /&gt;
port = &lt;span class="nu0"&gt;993&lt;/span&gt;&lt;br /&gt;
username = &lt;span class="st0"&gt;&amp;#8216;usuario@gmail.com&amp;#8217;&lt;/span&gt;&lt;br /&gt;
password = &lt;span class="st0"&gt;&amp;#8216;passwordsupersecreto&amp;#8217;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="kw1"&gt;def&lt;/span&gt; get_header &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;msg, header&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;Gets a header from a message&amp;quot;&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; header = decode_header&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;msg.&lt;span class="me1"&gt;get&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;header&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;header&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;return&lt;/span&gt; &lt;span class="kw2"&gt;unicode&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;header&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;, header&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;encode&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;&amp;#8216;utf8&amp;#8242;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;else&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;return&lt;/span&gt; header&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="kw1"&gt;not&lt;/span&gt; pynotify.&lt;span class="me1"&gt;init&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;GMail Important Messages&amp;quot;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;print&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;Failed to initialize pynotify&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw3"&gt;sys&lt;/span&gt;.&lt;span class="me1"&gt;exit&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;client = &amp;nbsp;&lt;span class="kw3"&gt;imaplib&lt;/span&gt;.&lt;span class="me1"&gt;IMAP4_SSL&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;host, port&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="kw1"&gt;not&lt;/span&gt; client.&lt;span class="me1"&gt;login&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;username, password&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;print&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;Failed to login&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw3"&gt;sys&lt;/span&gt;.&lt;span class="me1"&gt;exit&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;status, data = client.&lt;span class="kw3"&gt;select&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;&amp;#8216;[Gmail]/Important&amp;#8217;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;if&lt;/span&gt; status != &lt;span class="st0"&gt;&amp;#8216;OK&amp;#8217;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;print&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;Failed to select Important label&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw3"&gt;sys&lt;/span&gt;.&lt;span class="me1"&gt;exit&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;status, data = client.&lt;span class="me1"&gt;search&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;None&lt;/span&gt;, &lt;span class="st0"&gt;&amp;#8216;(UNSEEN)&amp;#8217;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;span class="kw1"&gt;if&lt;/span&gt; status == &lt;span class="st0"&gt;&amp;#8216;OK&amp;#8217;&lt;/span&gt; &lt;span class="kw1"&gt;and&lt;/span&gt; data&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; != &lt;span class="st0"&gt;&amp;#8221;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;for&lt;/span&gt; msg_id &lt;span class="kw1"&gt;in&lt;/span&gt; &lt;span class="kw2"&gt;sorted&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;data&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;split&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;if&lt;/span&gt; msg_id != &lt;span class="st0"&gt;&amp;#8221;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; status, data = client.&lt;span class="me1"&gt;fetch&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;msg_id, &lt;span class="st0"&gt;&amp;#8216;(RFC822)&amp;#8217;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;if&lt;/span&gt; status == &lt;span class="st0"&gt;&amp;#8216;OK&amp;#8217;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; msg = Parser&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;parsestr&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;data&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pynotify.&lt;span class="me1"&gt;Notification&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;get_header&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;msg, &lt;span class="st0"&gt;&amp;#8216;From&amp;#8217;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;, \&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;get_header&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;msg, &lt;span class="st0"&gt;&amp;#8216;Subject&amp;#8217;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;show&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;else&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;print&lt;/span&gt; &lt;span class="st0"&gt;&amp;quot;Failed to fetch message #%s&amp;quot;&lt;/span&gt; % &lt;span class="kw2"&gt;str&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;msg_id&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;Ese c&amp;#243;digo lo que hace es inicializar pynotify, conectarse al servidor IMAP de GMail usando &lt;a href="http://docs.python.org/library/imaplib.html"&gt;imaplib&lt;/a&gt;, autenticarse con el user y password provisto, seleccionar la etiqueta &amp;#8220;[Gmail]/Important&amp;#8221; y ver si hay mensajes sin leer. En caso de que haya itera sobre ellos, obtiene su contenido (para sacar el remitente y el asunto) y lanza un mensaje de notificaci&amp;#243;n.&lt;/p&gt;
&lt;p&gt;Para convertir eso en una aplicaci&amp;#243;n b&amp;#225;sicamente hace falta meterlo en un while y corregir un detalle que es que el fetch del mensaje lo marca como le&amp;#237;do (y eso no es algo que queramos en un simple notificador), as&amp;#237; que hay que volver a marcarlo como no le&amp;#237;do. Eso y algunos toques cosm&amp;#233;ticos es lo que hice en &lt;a href="http://pastebin.com/9SqPTLJS"&gt;el script completo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Por supuesto se trata solo de una prueba de concepto y a una aplicaci&amp;#243;n completamente funcional deber&amp;#237;an hacersele algunas correcciones m&amp;#225;s. Pero creo que es una idea divertida como para que otros puedan hacer algo mejor.&lt;/p&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-2304908645814887524.post-7685588306451008088</guid>
      <title>Mariano Reingart: Se viene el PyDay 2010 Buenos Aires</title>
      <pubDate>Fri, 03 Sep 2010 15:04:54 GMT</pubDate>
      <link>http://reingart.blogspot.com/2010/09/se-viene-el-pyday-2010-buenos-aires.html</link>
      <description>&lt;p&gt;Este s&amp;#225;bado 4 de septiembre es la jornada sobre el lenguaje de programaci&amp;#243;n Python "PyDay Buenos Aires 2010" organizado por &lt;a href="http://www.python.org.ar"&gt;PyAr&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pyday.com.ar/"&gt;http://www.pyday.com.ar/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Entre varias charlas agendadas estar&amp;#233; presentando &lt;a href="http://www.web2py.com.ar"&gt;web2py&lt;/a&gt; (una herramienta para desarrollo web  simple y poderosa) y seguramente en los espacios abiertos y/o charlas rel&amp;#225;mpago hablaremos sobre los proyectos &lt;a href="http://www.pyafipws.com.ar"&gt;PyAfipWs&lt;/a&gt; (factura electr&amp;#243;nica libre), &lt;a href="http://pysimplesoap.googlecode.com/"&gt;PySimpleSOAP&lt;/a&gt; (webservices), &lt;a href="http://pyfpdf.googlecode.com/"&gt;PyFPDF&lt;/a&gt;, &lt;a href="http://code.google.com/p/gestionlibre/"&gt;Gesti&amp;#243;n Libre&lt;/a&gt;, y dem&amp;#225;s temas generados desde nuestro emprendimiento &lt;a href="http://www.sistemasagiles.com.ar"&gt;"Sistemas &amp;#193;giles"&lt;/a&gt;, sin olvidarnos de &lt;a href="http://www.arpug.com.ar"&gt;PostgreSQL&lt;/a&gt; y su nueva versi&amp;#243;n 9.0!&lt;div class="blogger-post-footer"&gt;&lt;img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/2304908645814887524-7685588306451008088?l=reingart.blogspot.com" width="1" /&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">http://lateral.netmanagers.com.ar/tr/es/weblog/posts/BB913.html</guid>
      <title>Roberto Alsina: Goodreads+webcam+python+zbar == hackfun!</title>
      <pubDate>Wed, 01 Sep 2010 16:36:47 GMT</pubDate>
      <link>http://feedproxy.google.com/~r/PostsInLateralOpinionAboutPython/~3/LAKO-rTx_r4/BB913.html</link>
      <description>&lt;p&gt;Me gusta mucho  &lt;a class="reference external" href="http://goodreads.com"&gt;GoodReads&lt;/a&gt; una red social para gente que lee libros.&lt;/p&gt;
&lt;p&gt;Leo mucho, y me gusta que puedo ver las opiniones de otra gente antes de empezar un libro, y puedo poner comentarios, y que anduve leyendo, y otras cosas.&lt;/p&gt;
&lt;p&gt;De hecho, goodreads va a ser una parte importante de un proyecto que estamos empezando con gente de PyAr.&lt;/p&gt;
&lt;p&gt;Una cosa que no vengo haciendo es agregar los libros que tengo en goodreads, porque es mucho laburo.&lt;/p&gt;
&lt;p&gt;Bueno, ya no tanto!&lt;/p&gt;
&lt;p&gt;As&amp;#237; se hace, al estilo hacker...&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Instal&amp;#225; &lt;a class="reference external" href="http://zbar.sourceforge.net/"&gt;zbar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Conseguite una webcam barata&lt;/li&gt;
&lt;li&gt;Agarr&amp;#225; un libro&lt;/li&gt;
&lt;li&gt;Un programita python de 7 l&amp;#237;neas (ver abajo)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Y &lt;a class="reference external" href="http://blip.tv/file/4071008"&gt;mir&amp;#225; el video...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#191;No es lindo?&lt;/p&gt;
&lt;p&gt;El programa:&lt;/p&gt;
&lt;div class="code-block" style="background: #f8f8f8;"&gt;&lt;pre style="line-height: 125%;"&gt;&lt;span style="color: #008000; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #0000FF; font-weight: bold;"&gt;os&lt;/span&gt;

p&lt;span style="color: #666666;"&gt;=&lt;/span&gt;os&lt;span style="color: #666666;"&gt;.&lt;/span&gt;popen(&lt;span style="color: #BA2121;"&gt;'/usr/bin/zbarcam'&lt;/span&gt;,&lt;span style="color: #BA2121;"&gt;'r'&lt;/span&gt;)
&lt;span style="color: #008000; font-weight: bold;"&gt;while&lt;/span&gt; &lt;span style="color: #008000;"&gt;True&lt;/span&gt;:
    code &lt;span style="color: #666666;"&gt;=&lt;/span&gt; p&lt;span style="color: #666666;"&gt;.&lt;/span&gt;readline()
    &lt;span style="color: #008000; font-weight: bold;"&gt;print&lt;/span&gt; &lt;span style="color: #BA2121;"&gt;'Got barcode:'&lt;/span&gt;, code
    isbn &lt;span style="color: #666666;"&gt;=&lt;/span&gt; code&lt;span style="color: #666666;"&gt;.&lt;/span&gt;split(&lt;span style="color: #BA2121;"&gt;':'&lt;/span&gt;)[&lt;span style="color: #666666;"&gt;1&lt;/span&gt;]
    os&lt;span style="color: #666666;"&gt;.&lt;/span&gt;system(&lt;span style="color: #BA2121;"&gt;'chromium http://www.goodreads.com/search/search?q=&lt;/span&gt;&lt;span style="color: #BB6688; font-weight: bold;"&gt;%s&lt;/span&gt;&lt;span style="color: #BA2121;"&gt;'&lt;/span&gt;&lt;span style="color: #666666;"&gt;%&lt;/span&gt;isbn)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zyNBQuAa7s6RysWqc6mcEkylm8c/0/da"&gt;&lt;img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/zyNBQuAa7s6RysWqc6mcEkylm8c/0/di" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zyNBQuAa7s6RysWqc6mcEkylm8c/1/da"&gt;&lt;img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/zyNBQuAa7s6RysWqc6mcEkylm8c/1/di" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PostsInLateralOpinionAboutPython?a=LAKO-rTx_r4:8ao2K3M64tQ:yIl2AUoC8zA"&gt;&lt;img border="0" src="http://feeds.feedburner.com/~ff/PostsInLateralOpinionAboutPython?d=yIl2AUoC8zA" /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height="1" src="http://feeds.feedburner.com/~r/PostsInLateralOpinionAboutPython/~4/LAKO-rTx_r4" width="1" /&gt;</description>
    </item>
    <item>
      <guid isPermaLink="false">http://blog.malev.com.ar/?p=330</guid>
      <title>Marcos Vanetta: Agregar resaltado de c&#xF3;digo a gedit</title>
      <pubDate>Wed, 01 Sep 2010 13:16:23 GMT</pubDate>
      <link>http://blog.malev.com.ar/2010/09/01/agregar-resaltado-de-codigo-a-gedit/</link>
      <description>&lt;p&gt;En un post anterior les comente sobre gedit, un excelente editor y potencialmente un gran IDE. Hace unos d&amp;#237;as atr&amp;#225;s volv&amp;#237; a usarlo para unos experimentos en Ruby on Rails. Pero hab&amp;#237;a archivos en los que no funcionaba bien el resaltado de c&amp;#243;digo (hight light code). Principalmente en los archivos de vistas ERB. Buscando encontr&amp;#233; [...]</description>
    </item>
    <item>
      <guid isPermaLink="false">http://blog.malev.com.ar/?p=497</guid>
      <title>Marcos Vanetta: ActiveRecord, a brief introduction &#x2013; Part 1</title>
      <pubDate>Mon, 30 Aug 2010 13:24:48 GMT</pubDate>
      <link>http://blog.malev.com.ar/2010/08/30/activerecord-introduction-1/</link>
      <description>&lt;p&gt;Active record es un patr&amp;#243;n de dise&amp;#241;o. Es un enfoque al problema de acceder a los datos de una base de datos. Donde cada tabla es una clase por lo que cada fila es asociada con objetos del lenguaje de programaci&amp;#243;n usado. Cuando se crea uno de estos objetos, se a&amp;#241;ade una fila a la [...]</description>
    </item>
    <item>
      <guid isPermaLink="false">http://lateral.netmanagers.com.ar/tr/es/weblog/posts/BB912.html</guid>
      <title>Roberto Alsina: PET: English Translation Issue 1 tiene fecha</title>
      <pubDate>Sun, 29 Aug 2010 16:58:51 GMT</pubDate>
      <link>http://feedproxy.google.com/~r/PostsInLateralOpinionAboutPython/~3/23CJ-xNrnU4/BB912.html</link>
      <description>&lt;p&gt;Porque funcion&amp;#243; una vez, hag&amp;#225;moslo de nuevo. Acabo de ponerle una fecha completamente arbitraria y probablemente muy cercana para la salida del primer n&amp;#250;mero en ingl&amp;#233;s de la revista &amp;quot;PET: Python Entre Todos&amp;quot;.&lt;/p&gt;
&lt;p&gt;La versi&amp;#243;n en ingl&amp;#233;s se llama PET, que significa &amp;quot;Python Entre Todos: English Translation&amp;quot;.&lt;/p&gt;
&lt;p&gt;Va a tener los mismos contenidos que el primer n&amp;#250;mero en castellano... y va a ser la &amp;#250;ltima que hagamos as&amp;#237;.&lt;/p&gt;
&lt;p&gt;De ah&amp;#237; en m&amp;#225;s, las dos versiones van a salir al mismo tiempo, si podemos.&lt;/p&gt;
&lt;p&gt;Por lo tanto, va a haber un lapso muy corto entre el primer n&amp;#250;mero en ingl&amp;#233;s y el segundo (ojal&amp;#225; que menos de un mes).&lt;/p&gt;
&lt;p&gt;As&amp;#237; que , &lt;a class="reference external" href="http://revista.python.org.ar/"&gt;no cambien de canal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FjKUV1yAL7WX4yfUa7vx_VChrIY/0/da"&gt;&lt;img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/FjKUV1yAL7WX4yfUa7vx_VChrIY/0/di" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FjKUV1yAL7WX4yfUa7vx_VChrIY/1/da"&gt;&lt;img border="0" ismap="true" src="http://feedads.g.doubleclick.net/~a/FjKUV1yAL7WX4yfUa7vx_VChrIY/1/di" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PostsInLateralOpinionAboutPython?a=23CJ-xNrnU4:Bj0yanaTYOU:yIl2AUoC8zA"&gt;&lt;img border="0" src="http://feeds.feedburner.com/~ff/PostsInLateralOpinionAboutPython?d=yIl2AUoC8zA" /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img height="1" src="http://feeds.feedburner.com/~r/PostsInLateralOpinionAboutPython/~4/23CJ-xNrnU4" width="1" /&gt;</description>
    </item>
  </channel>
</rss>
