Cómo vota Perú en el TPP (“tratado anti-internet”)?

Hace un par de semanas, el portal Wikileaks publicó el documento secreto correspondiente al borrador de las negociaciones del capítulo de propiedad intelectual del TPP (Trans-Pacific Partnership).

Ya han habido varias alertas acerca de las implicancias de estas negociaciones (una introducción al tema aquí). Además de ser negociaciones que se realizan de manera secreta, preocupa que esté en riesgo el libre acceso a Internet y el componente de propiedad intelectual que pueda dificultar el acceso a medicamentos.

Se supone que este tratado está apunto de ser firmado por el Perú antes de fin de año y gracias a Wikileaks recién podemos darnos cuenta de lo que realmente se ha estado negociando a puerta cerrada.

El documento filtrado al público tiene 96 páginas (si se bajan el PDF) y está disponible aquí. A primera vista se pueden ver los temas que se han discutido y la manera de cómo ha votado cada país. Algunas propuestas parecen provenir de ciertos países mientras que otros votan a favor o se oponen (ver figura 1).

Figura 1. Algunos países votan a favor, otros se oponen.

Figura 1. Algunos países votan a favor, otros se oponen.

Podemos dar una lectura a todo el PDF para enterarnos “cómo es la cosa”. Pero, siendo este un blog nerd, podemos hacer un “data-mining” rudimentario para rápidamente poder averiguar algunos detalles:

  1. Cuántas veces Perú vota como país de manera opuesta a Estados Unidos?
  2. Cuántas veces Perú vota igual que Estados Unidos?
  3. Podemos averiguar como vota algún país vecino? digamos Chile, vota de manera diferente a Perú?
  4. Chile se opone o vota de manera similar que Estados Unidos?
  5. En qué puntos específicos hay discrepancias en las votaciones

Podría ponerme a contar la votaciones una por una pero me iba a demorar una enternidad. Entonces escribí un script in Python para hacer este data-mining (script completo en la sección geek al final de este post).

Lo bueno es que Wikileaks publicó el documento como PDF conteniendo texto (no como imágenes). Entonces, es bien fácil convertir el PDF a TXT y proceder con el minado de datos.

pdftotext Wikileaks-secret-TPP-treaty-IP-chapter.pdf texto.txt

Mi script funciona de la siguiente manera:

  1. Lee el documento TXT línea por línea
  2. Si encuentra una línea que contenga la palabra Article se pone alerta y se fija si hay alguna línea con las iniciales de los países PE, CL, US (osea Perú, Chile y Estados Unidos).
  3. La línea de texto que indica la votación tiene un patrón consistente: países oppose/propose más países.
  4. Entonces el script divide la lista de países en dos bandos, los que están a la derecha e izquierda de las palabras clave oppose/propose
  5. Una vez divididos los bandos, solo es cuestión de contar cuántas veces se repiten las iniciales y llevar la cuenta el bando.

Estos son los resultados:

Conteo de votos de PE versus US
propose_together 26
oppose_together 6
oppose_each_other 23

---------------------

Conteo de votos de PE versus CL
propose_together 36
oppose_together 22
oppose_each_other 8

---------------------

Conteo de votos de US versus CL
propose_together 16
oppose_together 2
oppose_each_other 32

Se supone que ambos países, Perú y Chile, tenían la intención hacer propuestas alternativas a las que figuran en el TPP (ver aquí y aquí).

Pero al parecer, esto puede haber quedado en intenciones, al menos viendo la manera cómo ha estado votando Perú.

Perú ha votado igualito que Estados Unidos 32 veces y se ha opuesto (votado diferente) sólo 23 veces. Mientras que Chile ha votado igual que EEUU solo 18 veces y se ha opuesto 32 veces.

Parece que Chile se opone mucho a las propuestas apoyadas por EEUU mientras que Perú vota en tándem. Mi script me dice que:

Chile se opone a US y PE 9 veces

y se opone en estos artículos del TPP:

* Article QQ.C.2: {Collective and Certification Marks}
    [US/PE/MX41/SG propose; AU/NZ/ VN/BN/MY/CL/CA oppose: 2. Pursuant to
* Article QQ.D.11: [CL/SG/BN/VN/MX propose82; AU/PE/US/NZ/CA/JP oppose:
* Article QQ.D.12: {Homonymous Geographical Indications}
    [NZ/CL/VN/MY/BN/SG/MX propose84; PE/US/AU oppose: 1. Each Party may
    [CL propose; AU/US/PE/NZ/VN/SG/MY/BN/MX/CA/JP oppose: 2. The Parties
    [CL/SG/BN/MX propose; AU/PE/US/NZ/CA/JP oppose: Annex […] Lists of
* Article QQ.E.9: [US/PE/AU propose; 101 CL/VN/MY/BN/NZ/CA/SG/MX oppose:
* Article QQ.H.7: {Criminal Procedures and Remedies / Criminal Enforcement}
    2. [US/AU/SG/PE propose; CL/VN/MY/NZ/CA/BN/MX oppose: Willful
* Article QQ.I.1:267 {Internet Service Provider Liability}
    280 [US/PE/SG/AU propose; CL/NZ/VN oppose: A Party may request consultations with the other Parties to

Ahora que tenemos una idea a ojo de buen cubero cómo van las votaciones de Perú, Chile y EEUU, además de los temas potencialmente picantes. Podemos leer mejor el documento filtrado por Wikileaks.

** Spoiler ** (Uno de esos temas tiene que ver con la denominación de origen del Pisco. Chile propone, Perú y EEUU se oponen).

PD. este post se inció a sugerencia de un tuitero amixer.

Sección geek

El script corre de la siguiente manera:

python leeme_votaciones.py texto.txt

Guía práctica para hackear las páginas del Congreso

Según Wikipedia, un hacker es:

“A person who enjoys exploring the details of programmable systems and stretching their capabilities, as opposed to most users, who prefer to learn only the minimum necessary.”

Algunos creen equivocadamente que hacker = malechor, delincuente. Pero lo cierto es que hay varios tipos de hackers.

  • Aquel que infringe medidas de seguridad con fines maléficos, también se le conoce como “cracker”.
  • Un miembro de la comunidad Unix de programas de computación libre y “open source”, o alguien que usa este principio para desarrollo de software o hardware.

Además individuos considerados como hackers de la subcultura de programadores pueden hacer tareas repititivas de 100 a 1,000 veces más rapido que usuarios que no son hackers (gracias a que usan de técnicas de computación avanzadas).

El congreso peruano ha aprobado una ley de delitos informáticos recontra ridícula que ha sido criticada por muchos, por ejemplo en el blog http://iriartelaw.com y http://www.hiperderecho.org, además de ser considerada una ley Frankenstein. Esto evidencia que el congreso legisla sobre temas que desconoce.

Para demostrar qué tan mal redactada está la ley ex-beingolea. He decidido hackear las páginas web del Congreso de la República. Y aquí detallo el procedimiento.

Quiero hacer uso de programas informáticos para averiguar cúantos proyectos de ley ha propuesto cada congresista durante este año 2013.

Hay que buscar la página web del congreso que tiene la lista de los proyectos de ley emitidos este año:

Buscar la página con los proyectos de ley.

Buscar la página con los proyectos de ley.

Listado de proyectos de ley por fecha.

Listado de proyectos de ley por fecha.

Si vemos el código original HTML de esa página (hacer CTRL-U, si están en Mozilla Firefox) veremos que está compuesta de 4 “frames”. Cada “frame” corresponde a una parte de la página. Me interesa el último “frame”, el que contiene la lista de links a los proyectos de ley.

Código HTML de la página del congreso

Código HTML de la página del congreso

Si hacemos click al último “frame” nos encontramos con esta página:

"Frame" conteniendo la lista de proyectos de ley.

“Frame” conteniendo la lista de proyectos de ley.

Esta página lista 100 proyectos de ley, y al ver la dirección URL de esta página, nos damos cuenta que basta con cambiar el último parámetro Start=1 por Start=100 para obtener los siguientes 100 proyectos de ley.

Osea cambiar:

http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2011.nsf/PAporNumeroInverso?OpenView&Start=1

por:

http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2011.nsf/PAporNumeroInverso?OpenView&Start=100

Puedo escribir un hack (osea script) que me colecte rápidamente todas las páginas que contienen los links. En lugar de bajarme documento por documento (lo cual me tomaría muuuuucho tiempo), lo puedo hacer al toque si hago uso de las tecnologías de información y comunicación que tanto miedo causa a los congresistas:

Hay 812 proyectos de ley para examinar. Necesitamos descargar cada proyecto de ley y copiar la lista de autores para contar cuántos proyectos ha sido emitido por cada congresista. Obviamente hacer esto manualmente me demoraría una eternidad. Para eso he creado un segundo hack. Es un script in Python que examina cada link, y extrae los nombres de los congresistas que son autores de cada proyecto de ley. Junta todos los nombres y hace un gráfico para poder visualizar los datos (el código de programación está al final de este post).

Bueno, el script estaba demorando mucho, me cansé de esperar y cancelé el programa por lo que no pude colectar toda la info. Pero la idea se entiende no?

Número de proyectos de ley presentado por cada congresista durante el 2013

Número de proyectos de ley presentado por cada congresista durante el 2013

Aquí se pueden descargar la dichosa ley http://www.hiperderecho.org/wp-content/uploads/2013/09/nuevaleybeingolea.pdf.

Hagamos recuento de las veces que he faltado a la ley:

Artículo 3. Atentado a la integridad de datos informáticos

El que, a través de las tecnologias de la información o de la comunicación, introduce,
borra, deteriora, altera, suprime o hace inaccesibles datos informáticos
, será reprimido
con pena privativa de libertad

-> Al escribir este post he introducido datos informáticos al servidor de WordPress usando tecnologías de la comunicación.

Articulo 6. Tráfico ilegal de datos

El que, crea, ingresa, o utiliza indebidamente una base de datos sobre una persona natural o jurídica, identificada o identificable, para comercializar; traficar, vender, promover, favorecer o facilitar información relativa a cualquier ámbito de la esfera personal, familiar, patrimonial, laboral, financiera u otro de naturaleza análoga, creando o no perjuicio, será reprimido con pena privativa de libertad no menor de tres ni mayor de cincó años.

-> Al bajarme la lista de proyectos de Ley del Congreso he ingresado a su base de datos para facilitar la información relativa al ámbito laboral de cada congresista sin crear perjuicio (ojo que no es necesario causar perjuicio para ir en contra de la ley).

Artículo 1O. Abuso de mecanismos y dispositivos informáticos

El que fabrica, diseña, desarrolla, vende, facilita, distribuye, importa u obtiene para su utilización, uno o más mecanismos, programas informáticos, dispositivos, contraseñas, códigos de acceso o cualquier otro dato informático, específicamente diseñados para la comisión de los delitos previstos en la presente Ley, o el que ofrece o presta servicio que contribuya a ese propósito, será reprimido con pena privativa de libertad no menor de uno
ni mayor de cuatro años y con treinta a noventa días-multa.

-> En este post publico el programa informático que he fabricado, diseñado y desarrollado con el fin de específicamente incumplir los artículos 3 y 6 de la presente Ley.

Conclusión

He violado la ley de delitos informáticos (ley ex-beingolea) 3 veces

Señores congresistas métanme preso. Quiero cárcel dorada como Antauro y Fujimori. Gracias.

Sección para geeks

Aqui está el código para bajarse los nombres de los congresistas que fueron autores de proyectos de ley durante el 2013:

Y aquí el código para plotear los datos:

Aurelio Pastor firmó 149 indultos de un solo plumazo

foto Revista Eva

Aurelio Pastor se ufana que en un sólo día pudo haber firmado 31 indultos, pero en realidad fue capaz de conmutar 149 presos en un solo día, de un solo plumazo.

En el vídeo propalado por Cuarto Poder se ve al exministro de justicia Aurelio Pastor fanfarronear, mientras come una empanada, de sus poderes como conmutador de penas.

Pastor dice que ha logrado firmar hasta 31 conmutaciones en un solo día (ver en Youtube)

Hoy día voy a firmar 31 más, hoy día, ayer he firmado como 10, 15

Puede parecer muchos indultos firmados en un día. Pero en realidad Aurelio Pastor logró firmar conmutaciones de pena de 149 presos en un solo día! de un solo plumazo!

Cómo encontrar ese dato

En un post anterior expliqué cómo descargar TODAS las normas jurídicas emitidas por el Ministerio de Justicia durante los años 2006-2011.
En otro post expliqué cómo contar el número de indultos firmados por cada exministro de justicia durante el 2do gobierno aprista.

Luego de seguir las intrucciones en esos posts, obtendrás un folder pastor con todas las normas jurídicas emitidas durante su gestión como ministro.

Lo que queremos averiguar es cuántas conmutaciones firmó Aurelio Pastor por día y ver en qué día se firmó el mayor número de supuestos #narcoindultos.

Este comando de Linux hace la búsqueda y ordena el número de conmutados por día de menor a mayor.

grep -i 'conmutarle' * | awk -F ':' '{print $1}' | sort | uniq -c | sort -n | sed 's/.txt//g'

Este es parte del resultado:

 ...
 58 03-11-09
 63 14-10-09
 65 25-12-09
 66 13-02-10
 68 17-12-09
 69 29-11-09
 71 04-03-10
 75 07-01-10
 85 15-01-10
149 22-12-09

Como vemos el 22 de Diciembre del 2009 (fecha 22-12-09) Aurelio Pastor firmó el indulto de 149 presos!

Qué coincidencia que ocurriera a 3 días de celebrarse la navidad. Parece que Santa Claus tiene competidores.

Aquí está la norma jurídica emitida ese día. Te la puedes descargar desde el sitio web del Ministerio de Justicia.
http://spij.minjus.gob.pe/Normas/textos/221209T.pdf

He extraído todos los nombres de los agraciados ese día y la puedes ver aquí:
indultados_22_Diciembre_2009.txt

Análisis del mensaje a la nación usando Linux

Según lo que pude leer en twitter el mensaje a la nación de Ollanta Humala este año estuvo algo aburrido. Pero lo mejor del discurso fue que duró la mitad que el del año pasado!

Luego de ver las nubes de palabras del mensaje de este año y ver al algunos opinar que este mensaje se parece mucho al del año pasado decidí hacer un rápido y rudimentario análisis de los discursos presidenciales del 2013 y 2012.

Estadísticas básicas

La cuenta de Scrib de PresidenciadelPeru tiene colagos los dos discursos. Bajé los archivos en formato PDF y los convertí a texto y averigué unas estadísticas básicas:

# convertir los archivos PDF a texto
pdftotext 101360576-Spr-28-de-Julio-2012.pdf       mensaje2012.txt
pdftotext 156579151-Mensaje-Presidencial-2013.pdf  mensaje2013.txt

# Cuantas líneas y palabras de texto tiene cada discurso?
wc -l mensaje2012.txt
1262 mensaje2012.txt

wc -w mensaje2012.txt
11989 mensaje2012.txt

wc -l mensaje2013.txt
690 mensaje2013.txt

wc -w mensaje2013.txt
6558 mensaje2013.txt

Vemos que el mensaje del 2013 tiene aproximandamente la mitad del número de lineas de texto que el 2012 (54.67%) y la mitad de palabras (54.70%). Este mensaje duró la mitad del tiempo que en el 2012 (63 minutos versus 2 horas). Entonces los ayayeros que aplaudían y gritaban en el congreso y no dejaban escuchar el discurso debieron haber interrumpido el mismo número de minutos que el año pasado. Ya que al parecer no tuvieron efecto significativo en la duración del discurso. Al contrario parece que este año Ollanta Humala pudo leer su discurso más rápido (a paso ligero).

Pero este año parece haber habido más quejas por los ayayeros. Debe ser una consecuencia de la baja desaprobación del presidente.

Frecuencia de palabras usadas en los mensajes

Las nubes de palabras son muy buenas para tener una idea de las palabras que han sido más usadas durante los discursos. Pero me da curiosidad tener los números duros de las palabras que más se usaron en el discurso.

Para ver las frecuencias de palabras tuve que hacer varias manipulaciones al texto para hacer una “limpieza” superficial de los archivos de texto y poder trabajarlo:

# Eliminar signos de puntuación usando el comando tr
tr -d [:punct:] < mensaje2012.txt > mensaje2012_nopunct.txt
tr -d [:punct:] < mensaje2013.txt > mensaje2013_nopunct.txt

# Convertir todas las mayúsculas a minúsculas
tr [:upper:] [:lower:] < mensaje2012_nopunct.txt > mensaje2012_lower.txt
tr [:upper:] [:lower:] < mensaje2013_nopunct.txt > mensaje2013_lower.txt

# Convertir todo el texto a una lista de palabras
tr ' ' '\n' < mensaje2012_lower.txt > mensaje2012_oneword.txt
tr ' ' '\n' < mensaje2013_lower.txt > mensaje2013_oneword.txt

Lo que nos da archivos conteniendo todo el discurso convertido a una lista de palabras:

mensaje
a
la
nación
del
señor
presidente
ollanta
humala
con
...

Podemos ver cuantas veces se usaron cada una de las palabras en cada uno de los mensajes a la nación.

Para el mensaje del 2012:

cat mensaje2012_oneword.txt | sort | uniq -c | sort -h

40 millones
41 estamos
44 ha
49 país
50 gobierno
52 estado
54 como
56 es
57 año
63 hemos
69 este
70 por
71 más
85
86 una
90 al
105 un
110 se
134 con
143 las
191 del
191 los
212 para
249 que
283 a
381 el
390 en
424 y
491 la
914 de

Las palabras comunes no nos interesan (de, la) pero vemos que se usó la palabra millones 40 veces.

Podemos averiguar cuántas veces se usó la palabra millones en el discurso del 2013:

cat mensaje2013_oneword.txt | sort | uniq -c | grep millones
    43 millones

Ollanta Humala mencionó la palabra millones 43 veces! Tres veces más que el año pasado. Pero este discurso fue 54% más corto! Si este mensaje hubiera sido de la misma longitud que el del año pasado, el presidente habría mencionado millones 86 veces? El doble que el año pasado. Este año ha sido una verdadera lluvia de millones. Lo cual puede preocupar porque como dice el conocido refrán dime de que presumes y te dire de qué careces.

Algo parecido pasa si vemos la frecuencia de la palabra seguridad:

En el 2012:

cat mensaje2012_oneword.txt | sort | uniq -c | sort -h | grep seguridad

1 seguridades
3 inseguridad
15 seguridad

En el 2013:

cat mensaje2013_oneword.txt | sort | uniq -c | sort -h | grep seguridad

2 inseguridad
13 seguridad

Si hacemos el ajuste por tamaño de discurso, este año el presidente mencionó la palabra seguridad casi el doble de veces que el año pasado.

dime de que presumes y te dire de qué careces