Novedades: actualmente estoy impulsando el proyecto Argentina en Python, desde aquí (ver mapa)

Huayra: el camino hacia la libertad

http://huayra.conectarigualdad.gob.ar/sites/all/themes/vientos/images/logo-huayra-300x162.png

Finalmente, la presidencia de la nación presentó Huayra en sociedad. Pero, ¿qué es Huayra?. Huayra es una nueva distribución de GNU/Linux basda en Debian que fue desarrollada por el Gobierno de la Nación. Esto no quiere decir que los muchachos programaron cada uno de los programas que están en Huayra, sino que pensaron cuáles son todos los programas que los chicos necesitan, los juntaron, los configuraron, programaron algunas cosas para hacer que todo eso sea compatible y los pusieron en un solo lugar: Huayra.

Eso es Huayra.

Lo bueno que todo esto tiene (más allá de las posiciones políticas que cada uno tiene) es que a partir de ahora los chicos van a tener en sus Netbooks como sistema por omisión a Huayra. Y eso es una primera forma de abrir la puerta para salir a jugar. Salir a jugar significa dejar de ser un consumidor de programas para pasar a ser un creador.

Además de eso, para mí es muy importante que puedan ver más caras de la moneda (que de hecho, no tiene solo dos) y que no sea solo la de Windows, que si bien tiene un montón de características muy buenas, también tiene muchas muy pero muy malas. OJO! También GNU/Linux tiene muchas características malas, no todas son hermosas, pero una de esas características hermosas que tiene es que lo podés cambiar. Entonces, si realmente hay algo que no te gusta, te complica la vida o lo que sea, podés buscar si alguien no lo ha cambiado ya y copiar libremente su modificación para aplicarla en tu sistema, pedirle ayuda a alguien para que lo cambie o cambiarlo vos mismo.

También, que más gente use GNU/Linux, hace que los fabricantes de computadoras piensen cada vez más en hacer un "driver" para esta plataforma (que es uno de los problemas frecuentes con placas específicas). Aunque lo ideal sería que liberen bajo una licencia libre el código del controlador, en vez de "tomarse el trabajo" de hacerlo ellos.

Estoy ansioso por ver a los chicos empezar a usar Huayra y escucharlos preguntar cosas sobre este nuevo sistema e incluso escuchar sus opiniones.

Hoy en día, GNU/Linux ya no es solo para programadores...

Mejor que te lo expliquen ellos, los creadores de toda ésta movida, y no los políticos que solo se llenan la boca hablando al pedo:

UPDATE: un videíto más corto que muestra a los que trabajaron en Huayra para llegar a la primera versión. Varios de los que están laburando ahí los conozco, y puedo asegurar que son buena gente :)


RSS Feed de Mercurial (hg)

Se me ocurrió mantener la traducción del Tutorial de Python actualizada. Pero claro, para eso tengo que chequear periódicamente para ver si hubo algunos cambios en los originales. Entonces, el primer paso para cualquier cosa que sea periódica es un Google Calendar. El segundo: un script.

... luego de crear el evento de Google Calendar ...

Me puse a ver como funcionaba el repositorio de Python de Mercurial y veo que tiene una opción de RSS, entonces la cosa se empieza a simplificar. Ya que teniendo un RSS era más fácil informarse de los cambios. Lo siguiente que hice, fue buscar el RSS para una carpeta en particular, pero a eso no lo encontré. Entonces, me fui directamente a la documentación de Mercurial y encontré que tiene el RSS Global y el particular para un archivo, nada más :(

Bueno, "Me bajo el global y lo parseo buscando el nombre de la carpeta que estoy interesado" -me dije. Y... ¿Vos podés creer? El feed RSS solo tiene la fecha, el título, el autor y mail, el link y el mensaje del commit. ¡Son unos muertos! Ese feed no me sirve para nada.

Así que, ¿se te ocurre una forma de hacer ésto sin hacer "hg pull" y comparar eso contra mis archivos de traducciones?

Solución

Finalmente, usé el RSS de tags del repositorio de Mercurial. Ya que cada nueva versión, viene con su documentación correspondiente. El problema que tiene esto es que quizás entre una versión y otra la documentación varie lo suficiente como para que sea tedioso actualizarla (espero que esto no pase).

Utilicé este script para hacer el chequeo:

check_python_tags.py

# This script checks if there is a newer tag than the specified in CURRENT_TAG

import conf
import smtplib
import feedparser
from email.mime.text import MIMEText

TAGS_URL = 'http://hg.python.org/cpython/tags'
CURRENT_TAG = 'v3.4.0a2'
ATOM_URL = 'http://hg.python.org/cpython/atom-tags'

rss = feedparser.parse(ATOM_URL)
tag = rss['entries'][0].title

if tag != CURRENT_TAG:
    # Send an email to my account
    text = 'Please go to {} to check it out.'.format(TAGS_URL)
    msg = MIMEText(text)
    msg['From'] = conf.FROMADDR
    msg['To'] = conf.TOADDRS
    subject = '[Python HG] There is a new tag: {tag}'.format(tag=tag)
    msg['Subject'] = subject

    # Credentials
    username = conf.USERNAME
    password = conf.PASSWORD

    # The actual mail send
    server = smtplib.SMTP('smtp.gmail.com:587')
    server.starttls()
    server.login(username, password)
    server.send_message(msg)
    server.quit()

Finalmente configuré un cron para que lo ejecute una vez al mes.

0 11 1 * * /home/humitos/.virtualenvs/python-rss/bin/python3 /home/humitos/Source/scripts/check_python_tags.py

Tutorial de Python en Español

La comunidad de Python Argentina hace tiempo que viene traduciendo el Tutorial de Python (en inglés) a su versión en Español. Hoy en día mantiene dos versiones activas: 2.7 y 3.3.0.

Ayer estuve mirando algunas características que no conocía entre esas versiones, como para actualizarme un poco y mirar qué hay de nuevo en todo ésto. También para ver si Python va en una dirección que me gusta o no. Siempre uno está a tiempo de cambiar de lenguaje favorito por el que más se adapte a los gustos de uno, ¿no?

Lo estuve mirando un rato, leyendo a consciencia y encontrando algunos que otros errores de tipeo, sobre todo. Pero en un momento, me surgió una duda sobre una diferencia entre 2.7 y 3.3, entonces me fui diréctamente al tutorial en inglés (donde en general está la posta posta) y veo que lo que yo estaba leyendo en la traducción ni aparecía. Entonces, me fijé a qué versiones correspondía cada uno y nuestra traducción estaba bastante atrasada. Así que, me puse manos a la obra para actualizarla.

Así, me bajé el código fuente de la documentación que está hoy día en vigencia (3.4.0a2), me fijé las diferencias con la versión que teníamos traducida y traduje solamente eso.

Se puede leer la versión actualizada del tutorial aquí.

Migrar de SVN a github.com

El repositorio dónde teníamos el código del tutorial estaba hosteado en USLA en un controlador de versiones SVN (que ya está bastante -más que suficiente- obsoleto), así que por eso y porque tuvimos problemas para hacer commits decidimos migrarlo a github.com.

Como buen programador, quería mantener la historia de los cambios conservando sus autores y demás, así que me puse a investigar un poco sobre eso y llegué a este link.

Finalmente, los pasos que seguí fueron:

$ mkdir python-tutorial

$ cd python-tutorial

$ svn2git http://trac.usla.org.ar/svn/python-tutorial \
    --verbose --username humitos --authors ../authors.txt

$ git remote add origin git@github.com:PyAr/tutorial.git

$ git pull origin master

$ git commit -a

$ git push origin master

Ahora el nuevo código está en https://github.com/PyAr/tutorial

Cambiar autor / email de los commits de git en github.com

Como buen pelotudo, metí mal el dedo cuando creé el archivo authors.txt y agregué una "s" de más al email de uno de los traductores. Y... "Oh, qué casualidad" era uno de los que más había colaborado. Así que, me parecía bastante flojo de mi parte dejarlo así nomás.

Estuve buscando un poco en Google y caí en diferentes lugares (ser programador en el 2013 es una pelotudés) con muchas soluciones distintas. Yo usé éste script para re-escribir todos los commits de ese usuario y cambiar su dirección de email para que sea la correcta y quede asociada a su cuenta de usuario.

Por último, cuando hice git push me encontré con un error y tuve que investigar un poquito más hasta llegar a este post y encontrar el comando mágico que forza el push de todos modos:

$ git push origin +master:master

Warning

OJO! Yo hice este maneje únicamente porque el repositorio fue creado hoy y no hay nadie trabajando en él aún, pero hacer cambios en el historial de commits no está recomendado.


Todo es un remix

Este video es muy bueno para explicar de forma sencilla porqué el Copyright está obsoleto y va en contra del progreso humano como sociedad, en campos de la tecnología y el conocimiento.

Es estúpido tener que hacer un producto de mala calidad, y así generar más basura y contaminar porque la mejora está patentada. Incluso, una mejora, que está basada en algo que inventó otro, que está basado en el descubrimiento de otra persona, que está basado incluso en el lenguaje. Entonces, ¿qué hubiese sido si alguien habría patentado el lenguaje?

No inventé nada nuevo. Simplemente junté descubrimientos de otros hombres con siglos de trabajo. Hubiese trabajado 50, 10 o incluso 5 años, habría fracasado. Así es con todo lo nuevo. El progreso ocurre cuando todos los factores necesarios están listos y entonces en inevitable.

Enseñar que sólo unos pocos hombres son responsables de los grandes progresos de la humanidad, es el peor sinsentido.

—Henry Ford

Evolución social: copiar, transformar y combinar.

—Kirby Ferguson

Nada nos pertenece.

—Manuel Kaufmann

Si te interesa informarte sobre licencias que promueven la copia, la edición y la distribución, podés leer acerca de Creative Commons (en Español).