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

Modifying a Django setting could be a nightmare

I've been working at Read the Docs for four months more or less at this time. Although I've been using Django for a decade now, there are many things that I never used, forget or don't know how they work internally.

During the last three or four weeks I worked in a new feature for the corporate site of Read the Docs (https://readthedocs.com/) and I had a lot of different problems: mainly because I didn't know the full codebase, but also because I never used some pieces of technology involved to make this feature.

So, what do you do when you are afraid of breaking everything? You write many test to cover your ass! That's what I did and I felt very comfortable when I started writing the logic of the feature itself --of course, to write the tests I had to ask many questions to my team to be sure the tests were accurate regarding what they were testing.

Finally, the PR was tested for some members of the team, everything worked as expected, the code was merged and deployed. Successful story, right?

One of two days later, I started seeing one of my tests related to that PR failing locally. I did a simple PR to run the test in CircleCI and it also failed there. "WTF? This doesn't make sense" -I thought. I did the manual QA locally and the code worked as expected but the test were failing but... It didn't make sense because the initial tests under CircleCI before merging the PR were passing and now without any change at all this specific test wasn't passing. I was very confused.

Seguir leyendo…


Diversidad, inclusión y todo eso

Atención, este artículo puede ser difícil de leer y fácil de juzgar. Sin embargo, me gustaría desahogarme y que podamos hablar de "lo prohibido" para que entre todos podamos construir una sociedad/comunidad mejor, sin prejuicios y en el que todos podamos hablar libremente sin ofender a los demás: entendiendo a todas las partes involucradas.

Como muchos sabrán, hace tiempo que venimos trabajando en "todo esto de la diversidad e inclusión" en el mundo de la programación. Sin embargo, yo, quien fue uno de los que empezó a impulsar esta idea entre mis conocidos (incluso antes de que Django Girls existiese) tengo un montón de dudas y problemas con este tema que es tan sensible.

Sí, dudas y problemas.

Luego de la PyConBr 13 hablé bastante con @turicas, a quien considero una persona sumamente abierta con la que se puede hablar sin problemas de los temas que nos molestan y de los problemas que tenemos. Él, luego de su charla en la que mencionó "Género y Número", me ayudó muchísimo a reflexionar sobre todo esto y a tratar de comprender un poco más la situación.

Es por eso que hoy me gustaría escribir todo lo que me quedó dando vueltas en la cabeza.

Me gustaría remontarme un poco a mi infancia, al lugar en el que fui criado y que me ayuden a entender un poquito porqué yo, entre tantas otras personas que queremos cambiar este mundo, tenemos estos problemas.

Nací en un barrio "normal" de Paraná, Entre Ríos, Argentina a una cuadra del río Paraná y rodeado por el mismo. El barrio tenía una única salida hacia "el centro" y había que caminar 5 cuadras para llegar a "la civilización" donde pasaban los buses, taxis y cualquier medio de transporte. En fin, yo pagaba $5 (en ese entonces ~USD 5) de taxi para llegar a ese lugar en vez de ir a pie por el miedo que tenía a que algo me ocurriese en el camino. El barrio, estaba "bien" en mi cuadra, pero esas otras 5 eran muy desoladas y rodeadas de "villas".

Seguir leyendo…


Navegar en internet en aeropuertos

Una de las mejores cosas de saber cómo funcionan las cosas es que "a veces" podés utilizar ese conocimiento para tomar atajos.

Hoy tengo un ejemplo concreto de esto. En mi viaje por sudamérica creé un proyecto llamado PyFi Spot que básicamente es un portal cautivo escrito en Python que ejecuta comandos de iptables para permitir o denegar el acceso a internet de las personas que se conecta a una red abierta.

¿No les suena familiar? Esos bares, restaurantes o aeropuertos que te dicen que tenés 30 minutos gratis para navergar y luego se termina. OK, algunos aeropuertos te permiten pagar (nunca entedí dónde se compra ese usuario/contraseña que te pide al web) y podés seguir navegando durante el tiempo que has pagado. Pero hay otros, que ni siquiera tienen esa opción y entonces en una espera de 5 horas (como la mia de hoy) solo tenés 30 minutos y te querés matar.

Acá entran en juego macchanger y NetworkManager.

"Mmm... macchanger, eso me suena a algo", estarás pensando. Sí, la posta de este tipo de servicios es que bloquean a los dispositivos (teléfonos, laptops, etc) por el número de MAC de la placa de red de ese dispositivo que es único en el mundo. Entonces, esta es la forma que los portales tienen de saber quiénes están accediendo a su red y filtran el acceso a internet por ese número (que va incrustado en los paquetes de red).

Claro, ¿porqué sé esto? Porque me hice un programa que hace exactamente eso y le dediqué un par de semanas a estudiar como funcionaban estos bichos.

¿Entonces? ¿Cuál es la solución? Y claro, cada 29 minutos cambiar la MAC de tu placa de red y volverte a conectar utilizando la nueva MAC. El portal cautivo cree que sos una persona totalmente nueva y... ¡ADELANTE!

¿Cómo hago para cambiar la MAC? Utilicé Network Manager que hace todo esto sea muy fácil:

  • Click derecho en el ícono del systray
  • "Editar las conexiones..."
  • Elegís la conexión que tiene el nombre de la red del aeropuerto
  • Vas a la pestaña "Inalámbrica"
  • Y donde dice "Dirección MAC clonada", le ponés "Aleatorio"
  • Guardás todo, cerrás, volvés a conectar y listo!

Cookies en juego

Te recomiendo iniciar la sesión en el portal cautivo utilizando una pestaña privada, para así evitar que se guarden las cookies en tu máquina y que luego el sistema nos reconozca como que hemos vencido nuestro tiempo.

Si ya "la has cagao", borrando las cookies del navegador solucionás este problema.

Note

A "macchanger" no lo usé al final, ya que si bien funcionó, al volverme a conectar a la red mediante "network manager" este me volvía a poner la MAC de mi placa de red original.