Juanjo Conti: Fotografiando desde el camino (segunda edición)
Hace 2 años había empezado a publicar fotos instantáneas en mi blog. Las sacaba con el celular (un Nokia 6131) y en segundos estaban on line mostrando la última en la sidebar. En ese entonces no tenía el celular que tengo ahora, y tuve que arreglarmelas con tremento hack para lograr la funcionalidad que buscaba.
Hoy con un Motorolla Milestone que tiene más capacidad de procesamiento que las computadoras que llevaron al hombre a la luna y más conectividad muchos países, el tema es más sencillo.
Publico fotos através de Twitpic con mi cliente de Twitter Seesmic y las muestro usando el plugín My Pictures Widget para WordPress. Nice.
Gustavo Carmona: Gvim Color darkblue
Gustavo Carmona: Gvim Fullscreen Ubuntu
menu
:set guioptions-=m
:set guioptions+=m
toolbar
:set guioptions-=T
:set guioptions+=T
sistema->preferencia->combinacion de teclas – elegir toggle fullscreen mode

Marcos Vanetta: ActiveRecord, a brief introduction – Part 3
named_scope [1][2][3] Nos permite generar “métodos”[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íamos: p = Post.all :conditions => {:user_id => 3} También queremos todos los post que están en estado: searchable p = Post.all :conditions => {:state => [...]
Roberto Alsina: Por qué estamos acá.
Advertencia: rant.
Ayer el gobierno argentino anunció que van a regalar 3 millones de netbooks a estudiantes. También anunciaron que les van a dar la opción de Ubuntu o Windows 7.
Por supuesto al rato empezó a circular la típica reacción del lado FLOSS: ¿por qué les dan Windows si Linux es mejor? ¡Es injusto que el gobierno pague Windows!
Mi misión hoy es decirles que crezcan y dejen de actuar como nenes. Estoy acá para decirles que paren de tratar a los demás como bebés.
Creo que lo puedo hacer porque estoy inmunizado contra las crí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ños.
Y tengo la piel gruesa y no me importa lo que digan los demás a menos que me den motivos y razones para que me importe.
Vengo a decirles que si el único motivo para usar un software es que es el más barato, estás diciendo que ese software es malo.
No sólo quiero que la gente use Linux, quiero que quieran usarlo. Quiero que esperen ansiosos la siguiente versión de Ubuntu o Firefox o lo que sea.
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. ¿La gente no lo quiere ni gratis? Entonces hay problemas y encontrarlos es importante.
Pero más importante que encontrar la pieza que falta es ver el agujero donde debería estar esa pieza. La comunidad Open Source se ha vuelto complaciente. Se ha vuelto pagada de sí misma, es un adolescente, seguro de su grandeza e inmortalidad.
Yo no creo en muchas cosas, pero creo en el libre albedrío. Creo que la gente no 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 mejor producto y creo que la gente va a querer usarlo.
Y si no lo hacen... bueno, se dió una pelea honesta, hicimos lo mejor que pudimos, abrimos caminos, creamos cosas interesantes, y los usuarios están mejor que antes aún si no eligieron a nuestro bebé, porque levantamos el nivel general.
Por ejemplo, antes de Linux, Windows era una bazofia mucho peor, y creo que muchas de las mejoras que tuvo fueron gracias a Linux, y estoy feliz que los usuarios hoy tengan un sistema operativo más decente, aunque no sea Linux.
Quiero que la gente use open source porque es asombroso, no porque es barato. Asombroso y barato está bien. ¿Sólo barato? Es una mierda.
Ya que estamos: ¿el constante "usan Windows porque no tienen idea"? Es condescendiente y muy, muy molesto. Y si me moesta a mí, que no soy el blanco de la condescendencia, créanme, molesta mucho más a los usuarios de Windows, y molestar a la gente no la convence de nada, excepto de que sos molesto.
Crezcan, métanle para adelante, empiecen a hacer cosas asombrosas, muestren calidad. Para eso estamos acá, no para ser la segunda marca de otro, no para ser la Goliat cola.
Facundo Batista: Un video más de Felipe
Manuel Kaufmann (Humitos): Estadísticas y alcance de un blog
¿Cuántas personas visitan tu blog por día? ¿Cuánto significa eso? ¿Es suficiente para vos? ¿Realmente el número de personas que indican tus estadísticas leen tu blog? ¿Cuánto de estos son bots?
Estas son algunas de las preguntas que hoy me hice al ver el gráfico de las estadísticas que trae wordpress.com. Debo tener una media de 50 personas por día que leen mi blog, pero ¿cuántas de estas personas realmente leen, al menos, un artículo completo? ¿aprenden los conceptos / programas que explico? ¿les sirven?
Entonces, hoy me puse a pensar si estaría bueno empezar a escribir sobre más u otras cosas también. Digamos, si tengo un promedio de 50 personas (que no sé si son muchas, pocas, quienes son o qué, pero son 50 personas que me importan) y realmente lo leen porque les interesa lo que tengo para compartir: ¿sobre qué cosas más podría escribir y que sigan siendo de su interés?
Por otro lado, me he dado cuenta que muchas dudas que tengo las pongo en Twitter en vez de mi blog, y que a su vez me responden con un enlace, o me tiran la posta. Pensando… ¿porqué no puedo usar mi blog para debatir algo? ¿porque no empiezo a tirar algunas preguntas acá haciendo una introducción al tema y que se pueda desarrollar este mediante los comentarios?
Me parece que esta idea debe estar buena y puede llegar a funcionar. Por ejemplo, hoy o ayer, (no me acuerdo) pregunté por un manual básico sobre Cómo sacar fotografías y me mandaron un link que era interesante mediante Twitter, pero capaz que la persona que me lo pasó se podía explayar un poco más en el tema y dejar un par de conceptos propios sobre la toma de fotos.
Esto quizás tenga una contra también, en Twitter es muy fácil y rápido dejar un comentario; entonces cualquiera lo hace, en menos de 2′ y le quita la duda a la otra persona. Es por esto que quizás no funcione la idea de que el blog sea como un foro personal, si se quiere.
Hoy se me pasaron estas cosas por la cabeza y ahora tuve el rato para escribir, así que me senté y lo hice. Ya que estamos, vamos a ver si suben las visitas, qué cosas son interesantes para los que leen y una de las cosas más importantes quienes y porqué comentan o dejan de comentar. Se escuchan opiniones: comentar es gratis
Diego Sarmentero: Prototype
Este si que es un buen Juego!!
Manuel Kaufmann (Humitos): Mi primera cámara digital
¡Me compré una cámara digital!
Todos tienen una, es casi como un celular ya. De hecho la mayoría de los celulares tienen una cámara integrada, y muchos de ellos con muy buena resolución. Entonces, ¿porqué yo no tenía una si hace mucho tiempo que la quiero?
Capaz es porque soy una rata, o porque no tengo muchas cosas a qué sacarle, o qué sé yo. Una de las principales cuestiones por las cuales no tenía una era porque son caras. Una cámara minimamente aceptable sale algo de $1000, y ojo, con aceptable me refiero a que no sea profesional, ni que tenga muchos mega píxeles, que sí sea con batería y si es posible que tenga zoom óptico.
Entonces, con esas características no encontraba (bah, es una forma de decir… nunca busqué de verdad, sino que sólo veía las vidrieras) una cámara que tenga un precio aceptable y que la pueda llevar para todos lados sin que me importe perderla, que me la roben o que se caiga al piso y se le parta la pantalla. Todavía tengo un pensamiento similar con el celular…
La semana pasada estuve dando un par de vueltas por el centro y encontré una Kodak que salía $450 y me detuve a mirarla. Un par de días después fui a averiguar por esta máquina y me encontré que era a pilas, que no tenía zoom, era de 6 MP y además no venía con pilas ni cargador, tampoco con tarjeta de memoria
. Pregunté a cuánto se me iba con todo eso y me dijo que unos $100 más por lo menos, con lo que me quedaba de $550 y para eso me compraba la más pedorra que venga con batería que están desde los $600. No me convenció.
Averigüé en otros lugares, en Garbarino por ejemplo, y me la dejaba a esa misma cámara a $500 más o menos, lo pensé un poco más, dí un par de vueltas y terminé en Frávega viendo la Olympus Stylus 710 de 7.1 MP que saliá $419, ¿¡Cuánto!?
Sí, $419. La miré bien, pregunté qué tenía y porqué estaba a ese precio. Esa cámara tiene zoom óptico de 3x, digital de 5x, es a batería tiene varios modos para sacar fotos, trae funda y memoria de 256Mb. Entonces, ¿porqué estaba tan barata?. El flaco me dijo que porque era un modelo viejo. Y sí, después me fijé en la caja y esta cámara es del 2007.
Dí un par de vueltas más por ahí, consulté con un amigo, ví otras cámaras y finalmente fui por la tarde a comprarla en Frávega (a la Olympus). La miré de nuevo, le pedí que me la saque de la vidriera y que sé yo. Cuando la saca veo que la lustraba el loquito y le digo: “Eso no va a salir, está re rayada en el visor” y me dice: “Ah, porque es la última que me queda”… Nahh, me re culió, no me dijo eso a la mañana cuando fui
Así que, me puse a pensarlo de nuevo. La máquina esa estuvo en vidriera 3 años, con la batería puesta, pasó por las manos de todo el mundo, está rayada, es un modelo que no viene más (ni aparece en la página de Olympus) y demás… Lo pensé un rato más y dije: “Ma’ sí, total si hay algo que no andan me dan una nota de crédito y me compro otra” (había varias por un precio similar).
Y bueno, acá estoy. Me compré una cámara que en su época debe haber salido unos $1500 pesos a $419. Por ahora estoy contento, ya dí un par de vueltas por la ciudad sacando fotos así como viene nomás y toqueteando todo y parece que está buena. Ni siquiera he puesto la mejor calidad todavía
Este es el mate que se encuentra en la entrada a la ciudad de Paraná:
Aquí algunas otras fotos que saqué recorriendo la Ciudad, para probar nomás: álbum en flickr
Manuel Kaufmann (Humitos): Introducción a Django Reloaded
La última vez que dí una charla si mal no recuerdo fue hace un año atrás en la PyCon de Argentina. La verdad que estoy re oxidado con esto.
Hace un tiempo cuando Facundo me ofreció dar una charla de Introducción a Django en el ciclo de charlas organizadas por FM La Tribu le dije que sí, que podía hacer un viaje a Buenos Aires para dar una chalar de Django ahí. Me parecía que estaba buena la idea y participar en ella iba a estar bueno también: “me parecía una buena forma de volver a las tablas y además me iba a obligar a hacerlo”
Lo malo de esto es que está llegando la fecha de mi charla (es el 11 de Septiembre, el finde que viene) y todavía no la tengo lista a la charla. La estuve viendo, y aunque me parece que está bien, quiero cambiar algunas cosas y ver la forma de que sea más dinámica y no tanto bombardeo de conceptos. Vamos a ver cómo sale.
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ás supongo que va a haber alguno de los grosos de PyAr tomando exámen
. No tengo mucha experiencia dando charlas frente al público, he dado algunas (por tirar un número: 7, ponele) pero siempre he estado nervioso con anticipación. Por más seguro que esté de que la charla está buena o aunque sepa que es pésima: “sí, he dicho cada cosa frente al público que si todos me hubiesen escuchado y visto mi carrera estaría arruinada”
Espero que vaya la gente justa, ni más ni menos. No está bueno cuando se llena que no da a basto el lugar y tampoco está bueno cuando hay muy poca gente. Me gustarí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 estoy con poco tiempo si se quiere.
Marcos Vanetta: ActiveRecord, a brief introduction – Part 2
Preguntas en ActiveRecord 3.0) ActiveRecord está conectado? User.connected? # => true 3.1) Change u = User.first u.changed? # => false u.first_name = "NewName" # => "NewName" u.changed? # => true 3.1.2) ¿Qué cambió? u.changed # => ["first_name"] 3.1.3) ¿Cuáles son los cambios? u.changes # => {"first_name"=>["Enrique", "NewName"]} 3.2) ¿Cómo preguntar si guardamos los cambios? No [...]
Facundo Batista: Python Argentina, la historia
El siguiente texto formó parte de la Primera Edición de PET - Python Entre Todos, la revista de PyAr. Tiene un montón de artículos copados, y la pueden ver online, o bajarla en PDF en distintos formatos. En la semana va a salir el mismo número, pero en inglés, y esperamos una segunda edición prontito. ¡Disfrútenla!
Ahora, el artículo.
Conocí Python en el 2001, buscando un lenguaje piola para trabajar en entornos Unix y Windows, y frustrado por algunas experiencias anteriores. Inmediatamente ví que era algo que me gustaba, y comencé a invertir tiempo, aprendiendo y profundizando en él.
No conocía muchos que usaran este lenguaje. Sí, estaba la lista de Python en español, y la lista en inglés, pero no tenía contacto con otros argentinos que programaran en él (más que un par de compañeros de trabajo). Buscando gente, caí en un sitio que organizaba reuniones de todo tipo, me anoté, pero nada.
Llegó el 2004. Pablo Ziliani (más conocido como un tal Pablo) encontró el mismo sitio pero lo tomó, lo sacó de su hibernación, y mandó invitación para juntarnos.
Esta juntada fue finalmente la Primera Reunión de Python Argentina. Nos encontramos en un bar céntrico, el 9 de Septiembre de 2004, Pablo, un chico llamado Javier que no volvimos a ver, y el que suscribe.
Aunque sólo charlamos de generalidades alrededor de Python, el ímpetu no quedó ahí y con esa base se organizó la próxima reunión, en la que ya se empezó a formar el grupo propiamente dicho.
En esta segunda reunión, a fines de Octubre, se bautizó al grupo como “PyAr - Python Argentina”, 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ón útil, y generar contenido propio (como por ejemplo experiencias locales en el uso de Python).
El primer año del grupo pasó a pura reunión. Darnos a conocer no era fácil, y aunque hacíamos promedio una reunión por mes, éramos entre cuatro y siete personas, siempre los mismos. Pero en función de llegar a más gente fue que en la reunió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ó una sobre PyGame y yo una de introducción a Python.
Las primeras reuniones del 2006 nos encontraron ya con más gente (entre diez y veinte por reunión), y discutiendo sobre otros temas a nivel de grupo más allá de la difusión. Estábamos con la creación de las primeras remeras, Ricardo había creado un canal de IRC en Freenode (el viejo #python-ar), y Alecu proponía formalizar un poco el tema de las reuniones, creando un procedimiento para las mismas.
También con estructuras más afianzadas se empezaron a barajar otros desafíos, como reuniones en interior del país, traer algún invitado internacional a CaFeConf 2006, traducir documentación oficial de Python, y algo que en su momento se llamó NERDcamp...
En Febrero de ese año yo realicé mi primer viaje a PyCon USA (la conferencia de Python más importante del mundo), donde PyAr comenzó a hacerse visible más allá de nuestras fronteras, no sólo porque dí una Lightning Talk de nuestro grupo, sino porque aproveché para vender muchas de las remeras que habíamos hecho.
En reuniones de esa primera parte del año también hablamos sobre el contenido de la lista de correo (si la separamos en sub listas o qué hacemos para limitar las conversaciones no específicas a Python; esta discusión la seguimos teniendo hoy en día...), hablamos del Día Python realizado en Mendoza, y charlamos sobre cómo organizar el grupo a nivel estructura: si íbamos a definir /cargos/ dentro del grupo, o seguir como estábamos en una estructura plana sin presidentes ni presididos.
La organización del grupo merece un párrafo aparte. Desde el comienzo de Python Argentina hasta ahora no hubieron nunca personas con cargos específicos, sino que siempre mantuvimos una muy saludable anarquía, en donde había una asociación y un pacto voluntario entre las personas del grupo que quisieran llevar algún proyecto interno adelante, sin necesidad de "decisiones oficiales" que impongan recorridos al resto de las personas del grupo. En otras palabras, si alguien en PyAr desea empujar un proyecto, sólo tiene que hacerlo, y tendrá más o menos participantes y/o ayudantes en función de si el proyecto es interesante o no, pero no tiene que "oficializarlo", o pedir aprobación sobre el mismo.
Siguiendo con la historia
En Junio del 2006 se realizó la Primer Jornada Python Santa Fe, en la Universidad Tecnológica Nacional, ciudad y provincia de, justamente, Santa Fe. Las jornadas fueron un éxito, y en la reunión / sprint posterior a las mismas (mientras comíamos pizza y hablábamos de todo un poco) se empezó a trabajar en un proyecto importante para el grupo: una versión offline de la Wikipedia. Este evento nos motivó bastante, y en la reunión siguiente Pablo Ziliani sugirió que tratemos de ponernos como objetivo "organizar una reunión /federal/ al menos una vez al año", y decidimos que queríamos tener una bandera de PyAr.
Septiembre del 2006 nos encontró participando en la tercera edició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ábamos, pero en esta oportunidad uno de los grupos de PyAr ganó la competencia con el juego Typus Pocus (¡y otro grupo nuestro quedó tercero!).
La segunda mitad del año no trajo mayores novedades hasta que llegamos a CaFeConf 2006, donde estrenamos stand con una bandera recién salida del horno, y además una de las plenarias del evento era dada por Alex Martelli (habló de "Qué es Python y por qué importa"), invitado internacional traído por gestiones propias de PyAr.
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ábamos un salto en la cantidad de suscriptos a la lista de correo. Además, empezamos a establecer buenos vínculos con el resto de la comunidad de software libre de Argentina, comunidad a la que algunos conocíamos pero en la que no estábamos involucrados.
El año 2007 fueron meses de consolidación. Se realizaron varias reuniones en Capital e interior, estuvo el segundo Día Python en Santa Fé (esta vez con dos tracks, de nuevo un éxito), y PyAr participó en CaFeConf, en Unlux y en las Jornadas Regionales de Software Libre, en Córdoba. Como se discutió en la reunión del grupo luego de esa conferencia, Python Argentina era un grupo nuevo que estaba naciendo y aprovechábamos la gentileza de los “hermanos mayores”: la capacidad organizativa y la gente involucrada en los LUGs. Un detalle importante a considerar es que Python era el único lenguaje de programación con stand propio, tanto en CaFeConf como en dichas Jornadas.
Durante este año también la lista de correo alcanzó una cantidad de participantes suficientes como para que la rueda gire sola: la gran cantidad de respuestas a las preguntas dejó de surgir del grupito de 20 o 30 personas que arrancó el grupo y pasó a ser generadas por personas más nuevas. También activamos el IRC como medio de comunicación, pero usando #pyar como canal en Freenode (necesitábamos hacer algunos cambios y no teníamos acceso a Ricardo, que había creado el anterior). En conjunto, la lista y el canal de IRC, probaron ser los mejores medios de comunicación para el grupo, complementándose entre ellos ya que la diná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ón, FAQ, etc.
2008 arrancó con una gran novedad: el primer PyCamp. Organizado por Except, una empresa de Córdoba, este evento se desarrolló durante cuatro días en los que fuimos a trabajar en distintos proyectos de Software libre relacionados con Python, a socializar, y a tener algún pequeño contacto con la naturaleza.
En la reunión de Mayo de ese año se charló 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, ¡la cual ganaron!). También se charló 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écnicas, y en Argentina las reuniones son con un fin más social, para conocernos las caras y quizá tomar alguna que otra cerveza. Relacionado con una idea que venía de antes, Humitos nos contó que estaba haciendo una traducción al español de manual de Django, y surgió el tema de traducir el Tutorial oficial de Python, con la posibilidad de imprimirlos y encuadernarlos para venderlos o regalarlos en algunos eventos.
La segunda mitad del año estuvo bien movidita también. No sólo por reuniones en Buenos Aires e interior (¡primera vez en Rosario!), sino que terminamos de definir el diseño de la segunda tanda de remeras de PyAr, y participamos nuevamente en las Jornadas Regionales de Software Libre. En este evento Python volvió 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é una plenaria en un evento de primera linea.
También se realizaron las 3ras Jornadas Python en Santa Fe, donde se anunció formalmente que al año siguiente se realizaría la primera conferencia nacional de Python en Argentina. En la última reunión del año en Buenos Aires se terminó de discutir el arranque de la organización de esta importante conferencia, y terminamos el 2008 con muchas ganas de que arranque el próximo.
Quinto aniversario
Los últimos días de Marzo del 2009 nos trajo la segunda edición del PyCamp, nuevamente en Los Cocos (Córdoba). Fueron nuevamente cuatro días en los que se desarrollaron muchos proyectos, y se profundizaron muchos lazos dentro de la comunidad Python.
La segunda parte del año tuvo como plato fuerte a PyCon Argentina 2009, la primera conferencia en español del mundo, un merecido festejo del quinto cumpleaños de PyAr. Fueron dos días en Septiembre, mañ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ías), lightning talks, y plenarias.
PyCon fue todo un éxito (no esperábamos tanta gente, vinieron más de 400 personas, muchas de Buenos Aires, pero una buena parte de interior, y también gente de otros paises), y tuvo muy buena repercusión tanto en nuestro país como en medios internacionales. A esto último ayudó que tuvimos dos invitados de primera linea (Jacob Kaplan-Moss y Collin Winter) que se lucieron en sus respectivas charlas plenarias.
Para la conferencia pudimos terminar uno de los proyectos de larga data dentro del grupo: ni más ni menos que la traducción completa al castellano del Tutorial de Python (el oficial), que publicamos en la red pero que también imprimimos en cantidad para repartir durante la conferencia (especialmente en la charla de Introducción a Python), y que luego fuimos llevando a los otros eventos que participamos. Además, aprovechando que PyAr tiene mucha gente estudiando en Universidades, donamos Tutoriales a las Bibliotecas de dichas instituciones.
Terminamos el año con una participación en un evento amigo, Fábrica de Fallas, en La Tribu. No es un ámbito tradicionalmente orientado a la programación, y aunque PyAr siempre tuvo buena acogida en ese ámbito, nos sorprendió gratamente que uno de los momentos artísticos del evento haya sido la pintada de un mural cuya base es un tutorial de Python!
El comienzo del 2010 tuvo al clásico PyCamp en la primera parte del año, pero esta vez no en Los Cocos, como en las dos ediciones anteriores, sino en Verónica (Buenos Aires). Cambió el lugar pero no el estilo: los PyCamps son uno de los eventos de programación más interesantes que conozco, y uno de los que más cumplen a la hora de aprender y divertirse.
También se aceleró el trabajo sobre la CDPedia, el proyecto que ya les había mencionado sobre meter la Wikipedia en un disco para usarse sin estar conectados a Internet. En la versión CD entraron más de 80 mil artículos, la mayoría con imágenes. Y en la versión DVD entraron todos, casi todos con sus respectivas imágenes. Si podemos terminar algunas funcionalidades que necesitamos, estaríamos distribuyendo la CDPedia en muchas escuelas de todo el país, a través del Ministerio de Educación.
En Mayo se realizó el primer Python Day en Rafaela, Santa Fe, el cual fue un éxito, llevando a casi 100 personas. Y para Septiembre se hará el primer Python Day en Buenos Aires, que esperamos ansiosos.
La segunda parte del año nos traerá también el primer Ciclo de Charlas Abiertas, en La Tribu (una serie de charlas sobre programación y Python, a la gorra, abiertas a la comunidad), y la segunda edición de PyCon Argentina, esta vez en Córdoba.
Seguramente cerremos el sexto año del grupo festejando todo lo hecho, pero también planeando nuevos eventos, nuevas formas de promover Python, y de juntarnos entre todos los usuarios de Python del país.
Andrés Gattinoni: Notificaciones de mails Prioritarios de Gmail en nuestro escritorio
En estos días GMail empezó a implementar la Priority Inbox, o Prioritarios en su versión en castellano. No es nada demasiado novedoso, en realidad es una etiqueta que define a un mensaje como prioritario. Lo más interesante es que Gmail no solamente te puede mostrar por separado los mails con prioridad de los otros, sino que nos promete ir “aprendiendo” a determinar cuáles son prioritarios y cuáles no.
En estos días estuve probando el feature y me viene bien. Yo recibo muchos mails por día, la mayoría de distintas listas de correo. Y como soy muy obsesivo, cada vez que tengo un mensaje nuevo voy a ver de qué se trata y “marcarlo como leído”. Este feature me permite perocuparme solamente por los prioritarios y dejar los menos importantes (como los de las listas) para más tarde.
Hoy pensé: “qué bueno estaría tener una aplicación que me notifique solamente de los mails importantes”. Ya existen varios notifiers para Gmail, tanto de Google o de terceros, para Firefox o para el Desktop. Pero supongo que todavía no habrán implementado esta posibilidad de solamente avisarte de los mensajes prioritarios. Así que lo que hice fue hacerlo en Python que es muuuy fácil.
En su versión simplificada, ver si hay mails “Importantes” y notificarlo es tan sencillo como esto:
host = ‘imap.gmail.com’
port = 993
username = ‘usuario@gmail.com’
password = ‘passwordsupersecreto’
def get_header (msg, header):
"""Gets a header from a message"""
header = decode_header(msg.get(header))
if (header[0][1]):
return unicode(header[0][0], header[0][1]).encode(‘utf8′)
else:
return header[0][0]
if not pynotify.init("GMail Important Messages"):
print "Failed to initialize pynotify"
sys.exit(1)
client = imaplib.IMAP4_SSL(host, port)
if not client.login(username, password):
print "Failed to login"
sys.exit(1)
status, data = client.select(‘[Gmail]/Important’)
if status != ‘OK’:
print "Failed to select Important label"
sys.exit(1)
status, data = client.search(None, ‘(UNSEEN)’)
if status == ‘OK’ and data[0] != ”:
for msg_id in sorted(data[0].split()):
if msg_id != ”:
status, data = client.fetch(msg_id, ‘(RFC822)’)
if status == ‘OK’:
msg = Parser().parsestr(data[0][1])
pynotify.Notification(get_header(msg, ‘From’), \
get_header(msg, ‘Subject’)).show()
else:
print "Failed to fetch message #%s" % str(msg_id)
Ese código lo que hace es inicializar pynotify, conectarse al servidor IMAP de GMail usando imaplib, autenticarse con el user y password provisto, seleccionar la etiqueta “[Gmail]/Important” 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ón.
Para convertir eso en una aplicación básicamente hace falta meterlo en un while y corregir un detalle que es que el fetch del mensaje lo marca como leído (y eso no es algo que queramos en un simple notificador), así que hay que volver a marcarlo como no leído. Eso y algunos toques cosméticos es lo que hice en el script completo.
Por supuesto se trata solo de una prueba de concepto y a una aplicación completamente funcional deberían hacersele algunas correcciones más. Pero creo que es una idea divertida como para que otros puedan hacer algo mejor.
Diego Sarmentero: Remera
Como comentaba en el Post anterior, me quiero hacer una remera de Qt, pero boludeando un rato, se me ocurrió de hacerme (además de la de Qt) una remera con mi nombre con "código ofuscado".
Esto es lo que se me ocurrió hasta ahora (no es GUAU que ofuscado, pero bue...):
Diego Sarmentero: Remera Qt
Ayer viendo un par de páginas de Qt, encontré que para algunos eventos de Qt (en conferencias en países donde por el momento no tengo forma de ir :P) suelen regalar unas remeras que cuando las vi me parecieron muy copadas...
Diego Sarmentero: Sumando Lecturas
Bueno, acá sumo 2 lecturas más. Termine de leer:
Diego Sarmentero: Volver al Futuro (Juego)
Hoy leo en MundoGeek que Universal ha confirmado el lanzamiento de una versión totalmente restaurada de la trilogía de "Volver al Futuro" ("Regreso al Futuro", o "Back to the Future") en formato Blu-ray, cargada de contenido extra. La cual estará disponible el 26 de Octubre, coincidiendo con el 25 aniversario de la franquicia.
Y que además la Gente de Telltale Games, la empresa encargada del desarrollo del nuevo "Monkey Island" y el nuevo "Sam and Max", se han atrevido con una aventura gráfica basada en esta saga tan querida por todos. Y parece que hay motivos para creer, ya que Bob Gale, el guionista que escribió las tres películas, también está involucrado en el proyecto.
Mariano Reingart: Se viene el PyDay 2010 Buenos Aires
Este sábado 4 de septiembre es la jornada sobre el lenguaje de programación Python "PyDay Buenos Aires 2010" organizado por PyAr:
http://www.pyday.com.ar/
Entre varias charlas agendadas estaré presentando web2py (una herramienta para desarrollo web simple y poderosa) y seguramente en los espacios abiertos y/o charlas relámpago hablaremos sobre los proyectos PyAfipWs (factura electrónica libre), PySimpleSOAP (webservices), PyFPDF, Gestión Libre, y demás temas generados desde nuestro emprendimiento "Sistemas Ágiles", sin olvidarnos de PostgreSQL y su nueva versión 9.0!
Diego Sarmentero: Asimov: Trilogia del Imperio
POR FIN!!
Me llego el libro "Trilogía del Imperio", que reune las historias de:
Andrés Gattinoni: Backups con tar + rsync + rotación
En estos días tuve que configurar unos backups para un cliente. Algo bastante sencillo. Tenía dos servidores y necesitaba hacer backups de distintas cosas en cada equipo y copiarlos al otro. Por supuesto, la herramienta clave para esto es rsync. Googleando un poco vi que existe esta página donde se puede ver cómo generar snapshots incrementales automáticos usando hard links y rsync. Realmente es una solución muy interesante, pero a mí no me terminaba de convencer porque yo quería tener archivos comprimidos que fueran rotando.
Por lo tanto lo que hice fue, seguramente, reinventar la rueda una vez más. Hice una pequeña librería en BASH que luego reutilicé en los distintos scripts de backup que hice. La clave aquí es la función “create_archive” que toma un path, un nombre de archivo base y una lista de archivos, y se ocupa de ir al path, ver todos los archivos que haya con ese patrón de nombre básico, rotarlos y generar un nuevo tar.gz. Después agregué un par de funciones más que me venían bien, “log” para registrar todo lo que pasaba en un archivo, “mail_notification” para mandarme mails y “sync_backup_servers” para ejecutar rsync.
El código:
RM_BIN="/bin/rm"
TAR_BIN="/bin/tar"
MAIL_BIN="/bin/mail"
RSYNC_BIN="/usr/bin/rsync"
function log
{
echo "`date`: $*" >> $LOG_FILE
}
function mail_notification
{
subject="$1"
message="$2"
if [ -z "$subject" ]; then
subject="Backup Notification"
fi
if [ -z "$NOTIFICATIONS_MAILS" ]; then
log "mail_notification: empty recipients list"
return 1
fi
if [ -z "$message" ]; then
log "mail_notification: empty message"
return 1
fi
sysdata="Date: `date`\nHost: `hostname`"
echo -e "$message\n\n$sysdata" | $MAIL_BIN -s "$subject" "$NOTIFICATIONS_MAILS"
}
function sync_backup_servers
{
log "Running rsync from $LOCAL_DIR to $REMOTE_DIR as $RSYNC_USER"
su -c "$RSYNC_BIN -aq –delete -e ssh $LOCAL_DIR/ $REMOTE_DIR/ 2>> $LOG_FILE" $RSYNC_USER
if [ $? -eq 0 ]; then
log "Syncronization complete successfuly"
else
log "Syncronization finished with errors"
fi
}
function create_archive
{
file_path="$1"
file_name="$2"
files="${*:3}"
if [ -z $file_path ]; then
echo "Missing file path"
return 1
fi
if [ -z $file_name ]; then
echo "Missing file name"
return 1
fi
if [ -z $files ]; then
echo "Missing file list"
return 1
fi
if [ -z $MAX_BKP_FILES ]; then
MAX_BKP_FILES=4
fi
archive_name="${file_name}_`date +%Y%m%d`.tar.gz"
log "Preparing to create $archive_name archive"
# Begin to Rotate files
# Sort files by date and keep the latest ones
# MAX_BKP_FILES will determine how many to store
dir=`ls -t $file_path/${file_name}_*.tar.gz 2> /dev/null`
if [ $? -eq 0 ]; then
N=0
for file in $dir; do
if [ $N -lt $MAX_BKP_FILES ]; then
let N++
else
log "Removing old file $file"
$RM_BIN -f $file
fi
done
else
log "No other archive found on $file_path"
fi
log "Creating tar archive $file_path/$archive_name"
$TAR_BIN zcf "$file_path/$archive_name" $files 2>> $LOG_FILE
}
Algunas consideraciones importantes.
Configuración
Al principio del script lo que hago es incluir un archivo de configuración con algunas variables básicas que voy a utilizar. Este archivo debería ser algo similar a esto:
LOCAL_DIR es el directorio local base donde van a estar mis backups. REMOTE_DIR es el directorio equivalente en el otro servidor. Lo que hice fue crear un usuario “sysbackup” (un poco menos obvio que “backup”, pero también self-explanatory) en los dos servidores y generar llaves para que se puedan conectar por SSH entre los dos servidores. Luego en la /home de cada usuario creé una carpeta “backup” y adentro de ella una carpeta para cada host que iba a ser backupeado “server1.domain.com” y “server2.domain.com”.
LOG_FILE indica el archivo donde se van a guardar los logs del backup y MAX_BKP_FILES determina la cantidad máxima de archivos de backup que va a haber por cada elemento.
Rotación
Como dije, la función más importante es create_archive. La pensé para logs que se crean una vez por día (o cada más tiempo), por lo que si la quieren usar para rotar logs generados en intervalos de tiempo más cortos van a tener que modificarla. Lo que hace es generar un nombre de archivo con una raiz elegida por nosotros (digamos “db”) y la fecha actual (la función pone la fecha, pero si necesitan intervalos más cortos van a tener que poner fecha y hora). Luego hace un `ls -t` del directorio donde hay que generar el backup para ver si hay otros archivos que coincidan con el patrón del nombre correspondiente (por ejemplo, ‘db_*.tar.gz’). Si hay archivos, va a conservar los últimos 4 (en realidad la cantidad la determina MAX_BKP_FILES) y va a borrar los más viejos. Por último, va a generar el tar.gz con la lista de archivos que le hayamos pasado.
Ejemplo:
Va a generar con un archivo de nombre como “web_20100902.tar.gz” en la carpeta $LOCAL_DIR/web con todos los contenidos de /var/www/html.
Rsync
La función sync_backup_servers hace la sincronización entre los dos servidores usando rsync por SSH. Una cosa a tener en cuenta es que en mi caso, yo necesitaba que el script de backup corriera como root (para poder acceder a todos los archivos que había que backupear) pero quería que el rsync se ejecutara con el usuario sysbackup (para mayor seguridad). Por lo tanto la función usa “su -c sysbackup”. Si a uds. este enfoque no les sirve pueden poner en la función directamente:
Notificaciones por mail
Es muy útil poder tener notificaciones por mail, sobre todo cuando las cosas andan mal. El comando “mail” de Linux/Unix es muy útil para esto. La funcion mail_notification usa ese comando para mandar un mail con el mensaje que queramos y le agrega dos datos útiles: la fecha y el hostname desde el que se manda. En realidad son datos que siempre viajan en los headers del mail, pero a mí me parecía útil que estuvieran en el body.
Espero que les sirvan estos recursos. No son una solución completa y cerrada, sino herramientas que quizás les sirvan para implementar o al menos pensar cómo hacer sus propios sistemas de backup. Les recomiendo enfáticamente que lean este artículo sobre cómo generar backups con rsync porque explica muchas cosas fundamentales.
Santiago Peresón (Yaco): perro viejo, trucos nuevos
capacitores, op-amps, resistencias… bienvenido al nuevo mundo.
cansado de simular analógicas, desde hace un par de semanas empecé a explorar electrónica. circuitos analógicos. caminos donde el sonido continuo es siempre transformado, pero nunca diseccionado, cortado en láminas para hacer estadística.
un lugar interesante…
Roberto Alsina: Goodreads+webcam+python+zbar == hackfun!
Me gusta mucho GoodReads una red social para gente que lee libros.
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.
De hecho, goodreads va a ser una parte importante de un proyecto que estamos empezando con gente de PyAr.
Una cosa que no vengo haciendo es agregar los libros que tengo en goodreads, porque es mucho laburo.
Bueno, ya no tanto!
Así se hace, al estilo hacker...
¿No es lindo?
El programa:
import os p=os.popen('/usr/bin/zbarcam','r') while True: code = p.readline() print 'Got barcode:', code isbn = code.split(':')[1] os.system('chromium http://www.goodreads.com/search/search?q=%s'%isbn)
Manuel Kaufmann (Humitos): Empecé circo
Culiado, ¡Me duele hasta el cu…!
Hace aproximadamente dos semanas que estoy yendo a circo los Lunes y Jueves. Sí, y ya falté a una clase, cualquiera lo mío. Pero lo interesante es que es realmente divertido y estoy muy enganchado.
Estoy contento porque es una actividad que desconocía por completo que se realizaba en Paraná, depende de la Municipalidad, es gratis, libre, con gente muy buena onda y muchas otras características que lo hacen que sea muy piola asistir.
En lo personal, empecé esta actividad para salir un poco de la computadora, trabajar el cuerpo y distraer la mente. Sobre todo esta última ya que ir a un lugar dónde te vas a encontrar con gente que no tiene nada que ver con lo que vos te dedicás, que no esté relacionado con estudiar algo (como ir a inglés, por ejemplo) y que la actividad principal es divertirse me resultó muy apropiado.
En la escuela está ubicada en el Centro Cultural Gloria Montoya (Rivadavia al final). Esto antes era un boliche bailable, así que se pueden imaginar la onda del lugar. De hecho, la mayoría de las actividades se realizan sobre la pista del boliche que es de parquet. Es muy lindo el lugar, lamentablemente, como muchos de estos lugares en Paraná, está un poco abandonado, tiene muchas manchas de humedad, las canillas pierden agua y cosas similares.
El primer día que tuve clases, fue medio raro porque la mayoría venían hacer una presentación hacía un par de días atrás, así que fue medio liberal y cada uno hacía lo que quería, practicaba cosas que estuvieron flojos en la presentación o bien charlaban mucho sobre esta. Yo como no tenía idea de qué estaban hablando me dieron para hacer algunos ejercicios:
Después de esto elongamos lo suficiente como para que podamos salir caminando de ahí. Claro, yo hace años que no hago nada, ninguna actividad física más que caminar mucho. Así que estaba molido. Mejor ni cuento como estaba a los dos días (el peor de todos).
A la siguiente clase vimos un video del Cirque Du Solei y después de esto vimos la presentación del curso completo que hicieron en el Teatro 3 de Febrero de Paraná. Estuvo muy bien por cierto, me emocioné un poco
. Después de eso terminó la clase, no hicimos actividad ese día
La última clase que fui estuvo buenísima. Hicimos una entrada en calor que fue con un poco de actuación también. En la pista hicimos un cuadrado con las colchonetas y nos pusimos todos adentro de éste. Éramos 11 más o menos. Empezamos a caminar, sin sentido alguno dentro del cuadrado, pero no se podía caminar en círculos y siempre manteniendo la mirada en el horizonte. No se podía mirar hacia abajo.
Nos fueron dando diferentes indicaciones, que recorramos todo el espacio, que caminemos de diferentes formas, que usemos las manos, que nos arrastremos, sin chocarse, sin caminar en círculo y sin bajar la mirada. Después había que hacer todo esto y agregarle un sonido cada tanto, no sé, cualquier cosa, lo primero que se te venía a la mente (ya para este momento nos estábamos cagando todos de risa… y eso no se podía tampoco
).
Manteniendo todo lo anterior había que hacer de estatua de algo. El profesor iba a decir alguna estatua y nosotros teníamos que hacer lo primero que se nos venía a la cabeza y cuando decía basta seguíamos con lo que estábamos haciendo (nunca dejar de caminar). Entonces el vago tiraba cosas como estatua de chancho con hambre… Lo primero fue cagarse de la risa y después intentar hacerlo. Realmente era muy chistoso. Otra que tiró era estatua de cartuchera pobre, seee cualquiera, pero re divertido. Nos hizo perder la timidez y entrar más en confianza. Estuvo bueno eso. A esto se le sumó la interacción con los compañeros, tratar de armar estatuas de a dos y cosas así (siempre sin pensar mucho).
El siguiente ejercicio fue copiar la forma de caminar y sonar del otro, entonces decía: “bueno ahora copien a Manuel” (sí, me dicen Manuel, cualquiera eso
); entonces por un rato quedás como un pelotudo haciendo el ridículo y todos se te cagan de risa y te da un poco de vergüenza todavía, pero mucho menos que si no nos hubiera hecho hacer los otros ejercicios.
Luego nos hicieron caminar pegados de alguna forma en grupos, no sé, de la frente, de la nuca, pegados de la cadera, de las manos, del codo y cosas así. Sin hablar e intentando llegar a un acuerdo sin mirarse, sólo expresándose con el cuerpo.
El último ejercicio de esta entrada en calor fue de a grupos de a cuatro. Nos poníamos en una ronda con los ojos cerrados, el resto de los chicos nos miraban a nosotros, y el profesor te tocaba una vez. En este momento tenías que empezar a hacer un loop con algún sonido que se te acababa de ocurrir hasta que te volvía a tocar y parabas. Cuando estabas callado y te volvía a tocar tenías que inventar otro sonido y nuevamente hacer un loop, entonces el loco iba mezclando los sonidos que tirábamos los cuatro. Salieron cosas interesantes, casi una banda de beatbox
Por último hicimos tela nuevamente, nos enseñaron a escalar y a hacer algunas figuras más. Por suerte cuando terminamos no me dolían tanto las manos y aprendí a controlar mucho más la fuerza en los lugares que la necesitaba.
Antes de irnos elongamos, me despedí de todos y me fui re contento pensando: “¿Qué es una computadora?”. Realmente estaba en otra cosa y lo que menos se me pasó por la cabeza en todo ese tiempo fue algo que tenga que ver con programación, ya no sabía ni lo que era casi. Como ejercicio de relajación mental es fabuloso.
Referencia:
Marcos Vanetta: Agregar resaltado de código a gedit
En un post anterior les comente sobre gedit, un excelente editor y potencialmente un gran IDE. Hace unos días atrás volví a usarlo para unos experimentos en Ruby on Rails. Pero había archivos en los que no funcionaba bien el resaltado de código (hight light code). Principalmente en los archivos de vistas ERB. Buscando encontré [...]
Facundo Batista: Foto interesante: Chicago luz
Como dice el título, Chicago. Marzo del 2008, un frio de cagarrrrrrrrse, esperando el tren en la plataforma elevada para volver al hotel. El viaje que contextualiza la foto: PyCon USA 2008. La foto no fue demasiado complicada, una larga exposición buscando algún juego de contrastes entre lo oscuro de las vias y el cielo atrás (las primeras parecen apuntar a lo segundo), lo muy brillante de las luces, y el punto medio en los edificios.

Las otras fotos interesantes hasta ahora, acá.
Diego Sarmentero: Persons Unknown
Acabo de terminar de ver la Primer Temporada de "Persons Unknown"... los primeros capítulos me acuerdo que estaba en duda de si seguir mirando o no, por momentos me re enganchaba, y en otros momentos medio le faltaba emoción, pero poco a poco la serie se va poniendo cada vez más buena, y los últimos 2 capítulos de la temporada están realmente MUY GROSOS!!
La primer temporada tiene solo 13 capítulos... y ahora ya tengo ganas de que empiece la segunda temporada, que no se cuando sera eso...
Diego Sarmentero: Through The Wormhole
Me demore en ver los últimos 2 capítulos, pero ya termine con "Through The Wormhole" una serie/documental de Science Channel conducida por Morgan Freeman. La verdad muy muy buena serie, son solo 8 capítulos, pero tratan temas muy copados, donde para la mayoría de los temas en realidad no hay ninguna respuesta definitiva sino que se muestran las distintas teorías actuales que tratan de explicar esos temas.
En fin, una serie/documental que realmente vale la pena ver para escuchar distintas teorias sobre temas que seguramente conocemos y abrir la mente a otras posibles explicaciones.
Diego Sarmentero: Sherlock
Ayer empecé a ver "Sherlock", una adaptación de los libros de Arthur Conan Doyle en una serie de televisión, pero modernizando la historia y haciendo que sea en la actualidad. Se hicieron solo 3 capítulos para la primer temporada de la Serie como para ver si lograba generar interés, y por la buena respuesta que tuvo, se esta preparando una segunda temporada para el 2011.
La serie aunque la primer temporada consta solo de 3 capítulos, cada capítulo dura una hora y 30 minutos, así que hay para un buen rato (a no ser que veas los 3 capítulos juntos :P).
La historia y la personalidad de los personajes esta muy buena, y según mi hermano (por el lado de los seguidores de las novelas) que él si leyó los libros de Sherlock Holmes, dice que es una buena adaptación, que respetan muchas cosas de la historia original a la vez que le agregan ese toque moderno.
En fin, Serie Recomendada!!
Marcos Vanetta: ActiveRecord, a brief introduction – Part 1
Active record es un patrón de diseñ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ón usado. Cuando se crea uno de estos objetos, se añade una fila a la [...]
Juanjo Conti: Fotos en el campo
Hoy a la tarde fuimos con Padre al campo a buscar verdura para la semana. Aproveché para sacar algunas fotos y probar los “efectos” que vienen con la cámara del celular desde que le actualicé el sistema operativo.
Se dieron cuenta que poniendo la cámara en modo sepia, fotos normales se convierte en casi artísticas? Nice.
Manuel Kaufmann (Humitos): Uso práctico de VNC
Actualmente tengo una computadora de escritorio, que dejo siempre prendida y uso como server: para descargar cosas de internet, para guardar la música, como backup, servidor web y demás.
Como todas las cosas que bajo de internet están en ese equipo, necesito organizar las cosas que bajo y no siempre uso un programa en modo texto (consola) para hacer esto. Por ejemplo, si es un disco con mp3 me gusta ponerle los ID3 correctos con easytag, o si bajo un DVD9 lo tengo que convertir a DVD5 para poder grabarlo y lo hago con k9copy.
Para estos programas necesito tener una interfaz gráfica, entonces uso VNC para ello. De hecho, normalmente tengo corriendo el JDownloader en un VNC porque lo quiero tener siempre abierto, pero no quiero que me moleste en la barra de tareas y además también me interesa controlarlo remotamente, si bien para esto uso el servidor web que trae, éste no cubre toda la funcionalidades que se pueden hacer mediante la interfaz gráfica. Por ejemplo, ingresar los códigos que piden algunos File Hosting.
Entonces, la idea de esto es, levantar un servidor VNC y ejecutar programas dentro de éste (sin que alteren el escritorio actual) y luego poder comandar estos programas que lanzamos en el VNC desde cualquier otro equipo. Mi idea fue así:
vncserver :4
export DISPLAY=michifus:4
java -Xmx512m -jar ~/.jd/JDownloader/JDownloader.jar &
Con esto estoy levantando un servidor en el display 4 de localhost (que se llama michifus en la red). Entonces, después exporto ese display para ser usado por los programas y ejecuto el JDownloader.
Luego, desde otra PC me conecto usando el xtightvncviewer:
xtightvncviewer michifus:4
Y ahora puedo administrar el JDownloader mediante VNC como si estuviera sentado en la PC que lo está ejecutando realmente. Esto es normalmente lo que tengo ejecutando en el VNC siempre. Además, cuando bajo algo como antes comentaba, quiero levantar otro programa; para eso me conecto por ssh al servidor y hago:
export DISPLAY=michifus:4
k9copy &
Luego me conecto nuevamente por VNC a michifus y veo que se cargó el k9copy en el escritorio que estoy sirviendo por VNC.
Roberto Alsina: PET: English Translation Issue 1 tiene fecha
Porque funcionó una vez, hagámoslo de nuevo. Acabo de ponerle una fecha completamente arbitraria y probablemente muy cercana para la salida del primer número en inglés de la revista "PET: Python Entre Todos".
La versión en inglés se llama PET, que significa "Python Entre Todos: English Translation".
Va a tener los mismos contenidos que el primer número en castellano... y va a ser la última que hagamos así.
De ahí en más, las dos versiones van a salir al mismo tiempo, si podemos.
Por lo tanto, va a haber un lapso muy corto entre el primer número en inglés y el segundo (ojalá que menos de un mes).
Así que , no cambien de canal
Juanjo Conti: Dejar de revisionar un archivo sin borrarlo en svn
A veces me pasa que en un proyecto tengo un archivo X que empezó siendo un archivo común, pero en un momento dado, cada desarrollador necesita taner su propia copia y no revisionarlo más.
Cómo dejar de revisionarlo sin borrarlo?
La primer vez que me topé con el problema hice:
cp X Y svn rm X svn ci -m "chau X" mv Y X
Ugly.
La forma correcta de hacerlo es:
svn rm --keep-local X
Juanjo Conti: Cómo unir videos en GNU/Linux
Ayer en Carlos Pellegrini fue el Día del Pueblo. Una de las actividades que hubo fue una carrera de autos con obstáculos. Aproveché para filmar un poco y probar mi nuevo celular, por lo que terminé con varios archivos mp4. Para subirlos a Internet quería unirlos: ¿cómo hacerlo de forma fácil? Si tenés varios archivos de texto y querés unirlos, o expresándome de forma más correcta, contactenarlos, usás el comando cat. ¿Se puede hacer lo mismo con videos? Suena algo loco cuando se escucha por primera vez, pero hay algunos formatos que SI lo soportan, como mpeg 1 y 2.
Usando ffmpeg podemos convertir los archivos mp4 a mpeg. Parados en el directorio donde estén los videos:
for i in `ls *.mp4`; do ffmpeg -i $i -sameq $i.mpeg; done
Ahora simplemente los concatenamos y redirigimos la salida de cat a un nuevo archivo:
cat *.mpeg > video.mpeg
Notemos que el orden lexicográfico de los videos coincide con el orden en que fueron tomados; por eso puedo usar el * y obtener un resultado ordenado en el tiempo.
Listo, subí el resultado a YouTube.
Me hubiese gustado una transición más suave entre video y video, pero investigarlo y hacerlo excedía la ecuación costo beneficio. Se escuchan ideas!
Manuel Kaufmann (Humitos): Algunos comandos útiles
Hace un tiempo, por lo menos 2 años, que tengo un Trac instalado en casa para uso personal. La idea surgió para organizar mis cosas personales, como repositorio de código para los scripts que vaya haciendo y además para anotar documentación sobre las cosas que voy investigando: links, paquetes, configuraciones, instalaciones de programas, comandos y demás.
En este post voy a poner algunos comandos (surtidos) que no tienen nada que ver uno con el otro, pero que son realmente útiles y que normalmente los busco en internet cada vez que necesito hacer algo similiar, a partir de que los anoté en el wiki del trac que uso me pasa que probablemente me lo acuerdo o sinó, al menos, ya sé dónde buscar.
Seleccionar el programa a usar por defecto
En Linux podemos tener instalados varios programas para hacer lo mismo en pocas palabras, como ser el Java o bien el Navegador Web. Existen otros programas que en algún momento por ejemplo quieren abrir una página web y se fijan cual es el navegador que tenemos configurado por defecto, y lo lanzan con el link en cuestión. Puede ser que el navegador configurado en nuestro Linux por defecto no sea el que realmente usamos comunmente. Para cambiar esto existe el comando update-alternatives
humitos@teresa: ~$ update-alternatives –config x-www-browser
There are 5 choices for the alternative x-www-browser (providing /usr/bin/x-www-browser).Selection Path Priority Status
————————————————————
0 /usr/bin/google-chrome 120 auto mode
1 /usr/bin/google-chrome 120 manual mode
* 2 /usr/bin/iceweasel 70 manual mode
3 /usr/bin/konqueror 100 manual mode
4 /usr/bin/opera 90 manual mode
5 /usr/bin/xlinks2 69 manual modePress enter to keep the current choice[*], or type selection number: 2
humitos@teresa: ~$
Como cualquier comando de Linux, hay un montón de opciones y de variables para configurar, recomiendo mirar el man update-alternatives
Sincronizar directorios
Una cosa que hago mucho es copiar información de una máquina a otra por la red en mi casa, o cuando voy a la casa de un amigo y me quiero llevar varias cosas de las que tiene en su máquina. Entonces, ¿seguimos utilizando el método antiguo de Windows que cuando se corta la transferencia por algo tenemos que hacer todo de nuevo o empezar a ver qué era lo que ya pasó y qué lo que no? Al menos yo, nunca supe qué hacer en esos casos y copiaba todo de nuevo: ¿se me había pasado algo?
Bueno, en Linux estoy usando rsync para esto y para algunas cosas más (por ejemplo para hacer backups). Lo bueno de rsync es que compara los dos directorios y copia sólo lo que falta, digamos, continúa con la copia anterior. Además se puede hacer que sincronice los directorios, borrando lo que corresponda de cada lado luego de hacer la transferencia. En pocas palabras: se puede hacer mucho con rsync y no lo sé usar para todo lo que se puede.
rsync –recursive –human-readable –verbose –checksum –delete-after \
–exclude winxp.img /media/sdb1/trabajo trabajo
El comando anterior es el que usaba cuando no tenía notebook y trabajaba en mi casa y además en la oficina, entonces lo que hacía era sincronizar todo lo que tenía en el pen drive con la carpeta local borrando las cosas que estaban de más en la carpeta de destino (en este caso la de la máquina, no la del pen drive). Las otras opciones más o menos se caen de maduras
Levantar un trac de forma simple
Durante mucho tiempo (antes de tener el trac que tengo ahora en casa) lo tenía en el pen drive y me resultaba extremadamente útil, porque iba a dónde iba podía levantarlo con toda la documentación que hacía un tiempo venía escribiendo, buscar cualquier cosa y actualizarlo. De hecho, lo podía levantar en Windows también si hiciera falta, aunque era un poquito más complicado.
tracd -p 8080 –basic-auth=trac,/media/humitos/trac/htpasswd,trac /media/humitos/trac
De esta forma estoy levantando el trac en el puerto 8000 y diciéndole que utilice el archivo htpasswd para obtener los usuarios y las claves desde ahí. El último argumento es la ruta a dónde se encuentra el trac.
Nota: la idea de meter un trac en el pen drive fue de un compañero de trabajo en el Ministerio de Innovación y Cultura: Cristian, se merece sus créditos
Ordenar los mp3 en el reproductor de mp3
Muchas veces me ha pasado con algunos reproductores de mp3 que no reproducen los archivos siguiendo el orden alfabético de los mismos sino que siguen el orden que tienen en la tabla FAT. No estoy seguro si esto pasa únicamente cuando copiamos los archivos con Linux o también pasa con Windows. Nunca escuché a un usuario de Windows que tenga este problema, pero sí lo he escuchado de algunos usuarios de Linux.
El programa que utilizo para ordenar los mp3 de la forma que quiero que se reproduzcan se llama fatsort y se usa así:
fatsort /dev/sdc
Nota: esta forma de ordenar los mp3′s se la debo a Nicolás, un groso
Utilizar ssh en el puerto 443 y mediante https
Existen muchos lugares en los que limitan el acceso a internet a sólo conexión https y http entonces no podemos acceder a nuestra máquina linux en la que tenemos corriendo un ssh en el puerto 22 (que es el puerto por default). Para estos casos, yo tengo configurado el ssh corriendo en el puerto 443 y utilizo un programa llamado corkscrew para que meta el ssh dentro de una conexión https
Los único que hay que hacer es editar el archivo de configuración de ssh en la máquina desde la cuál nos vamos a conectar a la que tiene el ssh corriendo en el puerto 443. El archivo es este ~/.ssh/config
Host=humitos.homelinux.net
ProxyCommand /usr/bin/corkscrew 10.2.6.219 3128 %h %p
Port 443
En el ejemplo anterior el ip 10.2.6.219 es el ip del proxy al cuál nos vamos a conectar para salir a internet y el 3128 es el puerto de este.
Evita: Tenemos nuestra primera bicicleta - Nos vamos !
Este blog se cierra, se va. En realidad se muda, se va de su alojamiento en blogspot a su nueva casa. Su dominio propio. La Fundación Eva Perón, por la que obtuvimos nuestra primera bicicleta, hoy nos da nuestro primer hosting. Sí compañero, sí compañera, para visitarnos, simplemente hacé clic en:
Patricio Molina: ¿Por qué tener auto es estúpido?
A continuación voy a escribir por qué creo que tener auto es estúpido, aun cuando el sistema de transporte público de la Ciudad de Buenos Aires tiene muchas falencias.
Supongamos que vivo en Caballito y trabajo en Palermo. Por comodidad, sólo utilizo taxi. La tarifa actual del taxi es la siguiente:
Para simplificar el cálculo voy a obviar el tiempo de espera (una ficha cada 60 segundos cuando el auto se encuentra detenido o circulando a menos de los 12 km/h) y la velocidad de cruce.
Según Google Maps, sé que el camino más rápido es por Av. Juan B. Justo, y que mi taxi deberá recorrer 6.4 km de distancia (32 fichas), con un costo aproximado de AR$ 20.
La vuelta es un trayecto similar, recorriendo 5.7 km (29 fichas) a cambio de AR$ 18.
Resumiendo, sé que voy a gastar AR$ 38 por día en taxi. Si quisiera podría agregar algunos pesos más por “eventualidades” (cambio de ruta por corte, embotellamiento, etcétera), pero como dije antes, prefiero mantener un escenario simple para que se entienda bien a lo que apunto.
Suponiendo que tengo un trabajo estándar (de lunes a viernes), gasto AR$ 190 por semana, o sea, AR$ 760 por mes.
Ahora bien, el 0 km más económico en el mercado es el Fiat Uno, con un valor aproximado de AR$ 40.000
¿Cuántos meses viajo en taxi si lo comparo con el costo de un auto económico? AR$ 40.000 / AR$ 760 me da 52 meses (4 años y 4 meses)
Lo primero que uno piensa es “bueno, pero después de 4 años y 4 meses el auto sigue estando ahí, para mí”, y aquí es donde creo que hay un gran error: el taxi es un gasto, pero el auto es un gasto que genera más gastos.
Además de los AR$ 40.000 (gasto inicial por el auto), tenemos la siguiente lista de gastos:
Dejo de lado los “impuestazos” (obleas) que cada tanto aparecen, el lavadero (manguereo el coche en la puerta de vez en cuando) y extras como cambiar el aceite, ponerle Bardahl y Glade Auto Sport (?)
¿Qué quiero decir con todo esto? Uno paga enormes cantidades de dinero para comprar algo que le reportará comparativamente igual o mayor gasto. Llevado al ejemplo, uno gasta AR$ 40.000 en un auto que genera gastos de mantenimiento, como mínimo, de AR$ 1000 al mes, lo que equivale a gastar AR$ 50 en taxi diarios.
En mi ejemplo usé el taxi como el escenario financiero más desfavorable, pero existen alternativas mucho más económicas y eficientes, como el subte y el tren (aunque estén colapsadas en su capacidad)
Obviamente esta es una visión muy citadina del asunto, y es poco aplicable si vivís en lugares donde el transporte público es prácticamente inexistente (pueblos o pequeñas ciudades).
Para terminar, aquí enumero algunos beneficios de no tener auto:
No me preocupo por el auto: si llueve, si graniza, si me lo roban, si me sacan el stereo, si me lo raya el “trapito”, si me lo lleva la grúa, si me lo “toca” la boluda que no sabe estacionar, etcétera. Una vez que me bajo del subte, taxi o colectivo, me despreocupé.
Indemne a los accidentes menores: si el vehículo en el que viajo tiene un accidente menor, cambio de vehículo y sigo camino en pocos minutos.
Menos autos: menos contaminación (ambiental y sonora) y menos tráfico en la ciudad.
No necesito concentrarme en manejar: mientras viajo puedo hacer otras cosas como escribir, escuchar música, leer, relajarme, etcétera. Tampoco me hago mala sangre porque la gente es boluda y no sabe manejar.
Choferes profesionales: esto, para mí, es fundamental, especialmente en la ruta. Le tengo muchísima más confianza al chofer de un ómnibus de larga distancia que a un conductor común. Los choferes de ómnibus de empresas serias son profesionales y tienen que relevarse cada N horas (por eso siempre son dos en la cabina). Comparativamente, sufren un porcentaje bajísimo de accidentes en ruta.
Dormir: muy relacionado con los dos puntos anteriores. Como algunos de ustedes saben, viajo mucho a la ciudad de Rosario con ómnibus de coche cama, suite o ejecutivo, con un costo aproximado de AR$ 80. En resumen: voy cómodo, veo una peli, duermo una siesta, me atienden y voy seguro.
Como dijo Martín Fierro, “estas cosas y otras muchas medité en mis soledades, sepan que no hay falsedades ni error en estos consejos, es de la boca del subte de ande salen las verdades” (?)
Update 1: los precios de bajada y ficha en Wikipedia estaban desactualizados, ya hice los cambios correspondientes para que reflejen los valores actuales.
Update 2: como bien me señaló Ale por Facebook, es importante aclarar que este post es un análisis estrictamente “de ciudad”. Si sos una persona con varios hijos, vivís en un lugar de difícil acceso o viajás mucho al interior, indefectiblemente el auto propio tiene un valor agregado que no lo podés conseguir con otros medios de transporte.
Update 3: breve conversación con Marian
Mariano: vos te mojás cuando llueve?
Patricio: no
Patricio: uso taxi
Patricio: y vos?
Mariano: si, porque tengo el auto a 3 cuadras de casa.
Mariano: TOMA!
Patricio: ah, a mí me pasa a buscar por la puerta de mi casa
Patricio: TOMAAA
Mariano: vos le podés gritar a una mujer “Andá, yegua, andá a lavar los platos y dejá de cornear a tu marido con cada negro que pasa!” y gozar de impunidad? sin que nadie te juzge?
Patricio: sí, en bici
Mariano: me cagaste.
Mariano: igual no me vas a comparar.
Patricio: no sólo puedo huir, sino que puedo hacerlo de forma cinemática, saltando rampas y cruzando el medio de plaza francia
Patricio: a vos te agarró un semáforo y te cagaron a taconazos
Mariano: volvemos al punto aterior. Yo puedo mandarme por plaza francia también, pero llevandome gente por delante. Es más, puedo hacer la cómica de llevarme un puesto de sanguches y comerme uno.
Patricio: plaza francia está lleno de cámaras de Macri, te agarran la patente y se te acabó la impunidad
Patricio: yo me pongo un pasamontañas, me afano un sanguche y no me identifican ni a palos, la bici no tiene patente
Mariano: los dos podemos hablar por celular mientras manejamos, pero vos te ponés en peligro y yo pongo en peligro al resto.
Mariano: pura ganancia.
Patricio: en taxi puedo hablar por celular sin poner en peligro a nadie, y el tachero, además, me sugiere cosas
Patricio: win win
Mariano: jajaja
Patricio: voy a poner esta conversación en mi blog
Mariano: si, pero en tacho tenés contacto con la derecha más jodida.
Mariano: la derecha tachera.
Martín Gaitán: Modelos de negocio FLOSS, la universidad, el sector privado y el Estado
Distintos laboratorios de investigación y vinculación de mi facultad del área química y del área computación, junto a algunas empresas de software locales (VATES y otra) y del sector petroquímico (Petroquímica Rio Tercero) están conformando un "Consorcio Asociativo Público Privado (CAPP)" en el marco del programa FSTICS del Ministerio de Ciencia y Tecnología de la Nación, con el fin de desarrollar una plataforma de desarrollo I+D de software para la industria. Para que contextualicemos de que hablamos: el programa estipula un aporte estatal de hasta el 60% para un proyecto de hasta 38 millones de pesos.
Mi participación es minúscula y aledaña: el impulsor de este proyecto es el Dr. Martín Cismondi, director de mi proyecto integrador que se trata de un prototipo del (tipo de) software que se desarrollaría desde esta plataforma.
Cismondi es Phd en ingenieria quimica y sus investigaciones en el campo del equilibrio de fases tienen mucha aplicación en la industria. En particular en el petróleo, donde el impacto que puede tener mejorar el rendimiento de un proceso (por ejemplo de destilación) se mide en millones de morlacos.
Ayer tuve oportunidad de participar de una reunión, sirviendo de una especie de "traductor" entre los quimicos y los informáticos.
Si bien, repito, no tengo voz (mucho menos voto) en nada de lo que allí se resuelva, tengo interés en investigar y transmitir de la manera más clara posible otros modelos de negocio que, por lo que presencié ayer, están lejos de ser tenidos en cuenta. Me refiero, claro, a que, sobre todo (no muy increíblemente) desde la facultad, no se ve más allá de un modelo de negocio de software cerrado de venta por licencia.
Apunto algunas cuestiones sin orden:
El nicho de mercado es bastante acotado: industrias de gran escala mayormente transnacionales. Separadamente tiene mucha utilidad y aceptación en centros de investigación académicos.
Desde el grupo conformado, no existe conocimiento cabal de las soluciones de software específicas que ese mercado, el industrial, demanda. Sí se sabe que el -*expertise-* y el -*know how-* que el grupo de investigación de Cismondi tiene son el valor diferencial.
No existe hoy peso específico suficiente, desde el punto de vista del producto existente, para competir con las empresas de software proveedoras de este nicho, sobre todo en los mercados de USA y Europa. Por ejemplo Aspen Tech.
Es difícil, a priori inimaginable, desarrollar un producto genérico que satisfaga necesidades de diversos clientes potenciales. La especifidad de los problemas de cada industria se supone grande.
Preguntas para hacerse ¿cuantos clientes reales existen en el mercado? ¿qué "llegada" se tiene con ellos? ¿que posibilidades reales de venderle un software cerrado existen, teniendo en cuenta que no se sabe cabalmente cuales son sus demandas? Supongiendo que se conoce un problema específico ¿cuanto sale desarrollar una solución ? ¿se puede correr el riesgo de desarrollarla sin tener asegurada su comercialización?
Soy un novato en el área negocios con FLOSS (y en negocios, a secas, también) pero lo que se me ocurre viene más o menos por este lado:
1. Generar una estrategia para una fuerte inserción en el ámbito académico internacional
2. La repercusión de la masa crítica generada abre la puerta al mercado por las siguientes razones:
3. Insertado en el mercado se generan posibilidades de lucro en dos áreas
Muchísimo material para leer sobre el tópico hay en este sitio. Yo empezaré en cuanto tenga tiempo. Invito también, de manera enfática, a leer la justificación de que el software desarrollado en el marco de mi proyecto integrador lo libero como Software Libre
Además de lo expuesto se me cruzan cuestionamientos sobre el rol de la universidad y el estado en este escenario.
Como ciudadano y futuro profesional festejo la inversión que en los últimos años el Estado ha realizado para ciencia y tecnología. Apostar a generar valor en áreas tan estrategicas como el software es necesario, y plantearlo desde el punto de vista de fortalecer la industria nacional (pymes) es entonces doblemente valioso.
Pero...
¿son los laboratorios de investigación de las universidades actores que deben generar recursos por sí mismos? ¿A quien pertenece el conocimiento que se produce en la universidad? ¿A quién debe pertenecer? ¿La universidad actual responde a un proyecto de país ? ¿Existe tal cosa? ¿No debiera el Estado, formar parte societaria en los consorcios para los cuales está aportando grandes recursos, además de ser agente regulador? ¿quién y cómo regula la relación e intereses existentes entre los grupos de investigación y el sector privado? ¿no se puede prestar a malversaciones y abuso del sello de la universidad?
Me desperté preguntón (como nací).
Diego Sarmentero: Nuevo Blog de Uni-Code
Administración y hosting cortesía de Net Managers SRL
Tema por Andrés Antista
Banner por Joaquín Sorianello