Juan Pedro Fisanotti: La prensa en China

Cómo la mayoría sabrá, Google cerró su sitio de China (www.google.cn) por no estar de acuerdo con la censura que el gobierno de ese país le obligaba a tener. El gobierno habló públicamente sobre la decisión, pero también envió las siguientes instrucciones a todos los medios de prensa del país, acerca de cómo deben informar sobre el asunto.
Después de leerlas, siento pena por la población de China. Es una dictadura peor de lo que pensaba...

(sacado del Washington Post, lo traduje rápido para que lo puedan leer quienes no sepan inglés)

A todos los editores en jefe y administradores:
Google ha oficialmente anunciado su retirada del mercado de China. Este es un incidente de alto impacto. Ha desatado discusiones de los usuarios de internet que no están limitadas al ámbito comercial. Por ende por favor presten estricta atención a los siguientes requerimientos para el contenido durante este período:

A. Secciones de noticias:

1. Solo utilicen el contenido del sitio web del Gobierno Central; no utilicen contenido de otras fuentes.

2. Al hacer re-posting no deben cambiar el título. (n. del t.: re-posting = postear el contenido en otro sitio)

3. Las recomendaciones de lectura deben apuntar al sitio principal de contenido del Gobierno Central.

4. No produzcan páginas de tópico relevante; no creen sesiones de discusión; no lleven a cabo reportes de investigaciones relacionadas.

5. Programas en linea con expertos y estudiantes sobre esta materia deben solicitar autorización por adelantado. Este tipo de producción de programas auto iniciada está estrictamente prohibido.

6. Administren cuidadosamente los comentarios en los post de noticias.

B. Foros, blogs, y otros tipos de secciones interactivas:

1. No está permitido mantener discusiones o investigaciones sobre el tópico de Google.

2. Las secciones interactivas no deben recomendar este tópico, no posicionen este tópico y comentarios relacionados al inicio.

3. Todos los sitios por favor quiten todo texto, imagen y sonido y video que ataque al Partido, Estado, agencias del gobierno, políticas de Internet con la excusa de este evento.

4. Todos los sitios por favor quiten todo texto, imagen y sonido y video que apoye a Google, dedique flores a Google, pida a Google quedarse, felicite a Google y otros que tengan un tono diferente al de la política del gobierno.

5. En tópicos relacionados a Google, administren cuidadosamente los intercambios de información, comentarios y otras sesiones interactivas.

6. Administradores en jefe de las diferentes regiones por favor asignen esfuerzo humano específico para monitorear la información relacionada a Google; si existen información acerca de incidentes en masa, por favor repórtenlos con el tiempo suficiente.

Le solicitamos al Grupo de Monitoreo y Control un seguimiento inmediato del monitoreo y control de las acciones detalladas en las directivas anteriores; cuando cualquier problema sea descubierto, por favor ponganse en contacto con las respectivas sesiones con el tiempo suficiente.

Lineamientos adicionales:

-- No participen ni reporten en los comunicados de prensa/información de Google.

-- No reporten acerca de Google ejerciendo presión en nuestro país por medio de personas o eventos.

-- Los reportes relacionados deben poner nuestra historia/perspectiva/información en el centro, no provean a Google de materiales con los cuales atacar políticas relevantes de nuestro país.

-- Utilicen los puntos de vista acerca de Google abandonando China publicados por los departamentos relevantes.

Fuente: artículo del Washington Post

Pablo Alejandro Costesich: Python Memory Tools

Ayer publiqué por primera vez una herramienta sobre la que estuve trabajando para resolver un par de problemas en Galaktia. Se trata de un conjunto de funciones decoradoras y clases para implementar el Memory Pattern en callables y brindarles una pseudo transparencia referencial (porque el valor debería depender sólo de los parámetros y no causar efectos colaterales). Es útil para funciones computacionalmente caras e inmutables (o que la actualización de sus valores de retorno tenga un tiempo de expiración largo).

Es una librería muy sencilla y fácil de entender, aunque seguro implementada miles de veces y de distintas maneras. Mi objetivo fue que sea fácil de usar (para mí), donde cada storage se asemeje lo más posible a un diccionario. Esto hace que pueda reemplazar muchas partes de código viejo sin romperlo.

Un ejemplo muy simple de la librería:

from memtools.storages import RedisMemory, MemcacheMemory, Alzheimer
mem = RedisMemory(debug=True)
mem2 = MemcacheMemory(debug=True) # podría usarlo del mismo modo
mem3 = Alzheimer(True) # easter egg, pierde valores a lo random.
@mem
def fib(n):
if n in (0, 1):
return 1
else:
return fib(n - 1) + fib(n - 2)

print fib(2)
print fib(5)
print fib(3)

mem["asd"] = 1
print mem["asd"]


La biblioteca está bajo licencia BSD y fue escrita enteramente por mí. En una época fue parte del proyecto Galaktia (@galaktia), pero gracias a Manuel Aráoz (@maraoz) y el resto del equipo pude separarla, así que ahora está disponible para todos. Agradezco cualquier modificación, sugerencia o cambio que pueda hacerse para mejorarla (son libres de hacerlo o no). Un fork&merge sería un halago.

Pueden encontrar el código en GitHub o en PyPI.

Puede ser que en un futuro le agregue soporte para memcache en Google App Engine y on-demand value updates (recalcular los valores almacenados para una clave cuando se cumpla una condición).

Juan Pedro Fisanotti: PyCamp 2010, día 4

Bueno, ya estoy en Retiro, en un rato estoy saliendo para Rafaela. Así que posteo el resumen de hoy. Probablemente después haga un post más completo con mis conclusiones de lso 4 días.


Algo muy interesante de hoy fué el hacking con OpenCV. Se hizo un programita que detecta cuando hay una cara cerca del monitor, si no hay nadie pone solo el protector de pantalla, y si hay alguien lo saca. Está genial :).


Y a la tarde se hizo el cierre, donde se expuso brevemente las cosas que se habían logrado en cada uno de los proyectos, y se charlaron algunas ideas para el próximo PyCamp, y PyCon.

Estoy muerto, pero estuvo todo muy, muy bueno. Después haré el resumen. Saludos!!

Juan Pedro Fisanotti: Pycamp 2010, día 3

Resumen de hoy :)


A la mañana me quedé medio dormido, jeje, porque anoche nos habíamos quedado hasta las 4 a.m.


A la siesta participé en un mini-cursito de empaquetado de aplicaciones Python para Debian. La verdad que era más complejo de lo que esperaba, pero nada que un programador no pueda hacer. Conclusión: tengo que aprender setuptools


Más tarde participé en el Bug Day de Python: cada uno elegía algún bug de Python y trataba de mandar un parche con la corrección. No pude hacer ningún parche, pero aprendí un poco viendo código de cómo está hecho Python, lo que estuvo bueno.


Y ahora a la noche, después de comer empanadas y panqueques, vuelvo a programar un poco el juego que empezamos el sábado.


Saludos!!


update!: me acabo de enganchar en una reunión de otro juego que se va a desarrollar para una competencia, veremos que onda :)

Juan Pedro Fisanotti: PyCamp 2010, día 2

Ayer no postee porque no tuve tiempo en todo el día, así que posteo ahora el resumen. Supongo que esta noche volveré a postear con el resumen de hoy


Lo más interesante de ayer fue el sprint de Django. Sprint = gente que se junta a programar, Django = framework para hacer desarrollo web usando Python, el mejor que probé hasta ahora. O sea, los que querían se juntaron para sobre todo corregir bugs en Django, para la versión nueva que va a salir dentro de unos días. Sinceramente fui más que nada para ver y aprender, porque pensaba que estaba a un nivel en el que yo no podía aportar mucho. Pero para mi sorpresa, terminamos corrigiendo un bug de Django juntos con Javi :). Mi granito de arena para Django, así devuelvo algo de todo lo que me está sirviendo.


Por la tarde me enganché en el momento de cocos2d (el framework para juegos que nació en un PyCamp anterior, que estamos usando para el juego que empezamos el sábado). Me enganché medio tarde, pero estuvo bueno, me ayudó a entenderlo mejor.


Finalmente, a la noche tuvimos el "fogón", pero sin fuego porque no se consiguió leña. Se empezó hablando de los temas más comunitarios, objetivos, realidad de Python en Argentina, etc. Se habló también de PyCon Atlanta 2010 y PyCon Argentina 2010. Y después se terminó hablando de política, sociedad, valores, ideologías, etc. Discusiones acaloradas pero muy interesantes. Algo parecido a los threads de PyAr, jajaja.


Hoy viene siendo interesante también, pero esta noche hago el resumen. Saludos!

Pablo Alejandro Costesich: Eerie ping

Ayer a la noche hablando con un amigo de la facultad e intercambiando ideas en base a una conversación con raíces en la última edición de la tira electrónica xkcd, salió como desafío mandar un mensaje entre equipos de una red usando la opción "-p" mediante ping.

El código, horrible pero legible, a continuación:

import sys, os
addr = sys.argv[1]
msg = ' '.join(sys.argv[2:])

for i in xrange(0, len(msg), 2):
a, b = msg[i], (msg[i+1] if i+1 < len(msg) else '\0')
os.popen("ping -c 1 -p %02X%02X %s" % (ord(a), ord(b), addr))