Twitter en Ecuador, Junio 2013
Hace un año publiqué una lista de más de 270,000 cuentas ecuatorianas en Twitter. Hoy repetí el experimento y encontré 816,390 cuentas. Para saber más de la metodología y datos anteriores, ver aquí.
Como he explicado antes, hay varias consideraciones para esta metodología. La más notable es que mientras en cada ejecución se refina la metodología, los resultados anteriores pierden exactitud. Con la API 1.1 de Twitter (que se convirtió en obligatoria en medio de este mes) se facilita la recolección de tweets georeferenciados, que en el caso de Ecuador no son muy útiles (1% de las cuentas) Por lo tanto, como siempre, los cálculos de abajo están basados en las 816,000 cuentas conseguidas ahora (que, como antes, puedes bajar), y no en datos previos.
26% de estas cuentas usan Web para twittear, 19% Blackberry, 10% Android y 6% iPhone. Un 24% de las cuentas están potencialmente basadas en Guayaquil, y un 36% en Quito. Sin embargo, esa diferencia probablemente no sea tanta debido a la influencia de la variable timezone en el API de Twitter. Hay un 4% en Azuay, 3.8% en Manabí y un 28% de cuentas que no tienen una localidad particular. Solo 11,839 cuentas tienen coordenadas especificadas en sus tweets, y se ven así (no representativo, por limitaciones en el reverse geocoding)
La creación de nuevas cuentas supera mes a mes el promedio desde la explosión del 2011 (ver la gráfica de abajo) En Junio 2012 estimé que mi base crecía 20% trimestralmente.
Y aunque es lógico que las cuentas más nuevas tienen menos tweets y menos followers, el comportamiento continúa siendo un tanto frustrante: desde Enero 2012 el promedio de followers no ha subido de 100, y en 2013 en promedio se han escrito menos de 15 tweets/mes (en 2012 el promedio fue 20.5, con un pico de 25 en Mayo)
Carga rápida y masiva de Memcache para Nginx
Hace años escribí sobre como uso Nginx como proxy de Apache en algunas instalaciones. En esa arquitectura contemplo Memcache. La configuración es muy sencilla, basta agregar a la sección location que queramos cachear lo siguiente:
set $memcached_key $uri;
memcached_pass 127.0.0.1:11211;
error_page 404 @fallback;
Y agregar el location @fallback correspondiente:
location @fallback {
proxy_pass http://localhost:8000;
}
El único problema, como algunas personas que han usado Nginx con Memcache, es que alguien tiene que llenar Memcache con objetos para que Nginx pueda leerlos.
Usualmente, los desarrolladores de la aplicación usarán las librerías del lenguaje de programación para acceder a Memcache y cargar allí algunos objetos. Esto funciona, y es como la mayoría de la gente implementa este escenario. Sin embargo, si uno quiere cargar varios archivos de forma rápida a Memcache, no hay muchas herramientas sencillas y fácilmente disponibles.
Por ejemplo, hace dos meses en la wiki de Nginx alguien publicó un método para precargar memcache con Python. Es un enfoque interesante, pero complicado de mantener y decididamente experimental.
Sin embargo, memcache ya incluye un cliente llamado memccp que permite cargar archivos en Memcache. El problema es que este cliente no permite definir la llave con la que el objeto se almacena en Memcache. Esa llave es $uri, por ejemplo algo como /wp-content/plugins/akismet/akismet.gif.
Cuando Nginx encuentra un cliente que hace GET a este archivo, lo sirve desde Memcache, lo que en este escenario nos ahorra abrir una conexión TCP a localhost, que Apache atienda y responda una petición, y potencialmente I/O de disco.
Este parche a libmemcached permite que se defina una clave con –key, lo que facilita precargar archivos como imágenes o CSS en Memcache. Su uso es sencillo y se puede invocar desde un shell script (probado en dash)
#!/bin/sh
BASE=”/var/www/mysite”
for file in `\
find $BASE -type f \
-name ‘*.jpg’ -or \
-name ‘*.gif’ -or \
-name ‘*.png’ \
| sed “s#$BASE##”`
do
echo “Adding $file to memcached…”
sudo memccp –key=$file –servers=localhost $BASE$file
done
Entre otros escenarios que puedes activar en este caso, está el poder almacenar archivos para distintos hosts virtuales. En este caso sugiero que configures $memcached_key para usar $http_host y $uri, y añadas una variable de prefijo a tu script. También puedes correr otro memcache, si en realidad lo necesitas. memccp tiene otros problemas, por ejemplo no maneja la codificación de caracteres muy bien. Pero para archivos binarios, usualmente estáticos, ahorra bastante trabajo.
El repositorio en GitHub es un paquete fuente de Debian. Si tienes las dependencias (sudo apt-get build-dep libmemcached-tools) puedes construir el paquete (dpkg-buildpackage -b) e instalar libmemcached-tools que contiene memccp.
Este escenario es uno de los que describo en mi próximo libro rápido sobre Debian para aplicaciones Web, que está actualmente en fase de edición.
dpkg’s ‘interest-noawait’ directive
For years I’ve used unstable on my personal laptop. The only problem with using unstable is that the upgrade paths are fuzzy, and if you can catch up with the upgrades (because you’ve been user other system, or you’ve been travelling, or you’ve been relying on the APT cache because you don’t have much disk space and/or bad connectivity) then you are basically on your own.
While dist-upgrade’ing this week, I got into a dpkg hard stop because the trigger contained an unknown ‘interest-noawait’ directive. If you are a Debian head then the solution is as clear and straigthforward to you as it was to me: install the newest dpkg first. Enjoy sid. Even if it eats your dog. See below:
bureado@oersted:~$ sudo dpkg -i /var/cache/apt/archives/install-info_5.1.dfsg.1-3_i386.deb
/var/cache/apt/archives/install-info_5.1.dfsg.1-3_i386.deb
(Leyendo la base de datos … 265182 ficheros o directorios instalados actualmente.)
Preparando para reemplazar install-info 4.13a.dfsg.1-8 (usando …/install-info_5.1.dfsg.1-3_i386.deb) …
dpkg: error al procesar /var/cache/apt/archives/install-info_5.1.dfsg.1-3_i386.deb (–install):
el fichero de disparadores ci contiene una directiva desconocida `interest-noawait’
Se encontraron errores al procesar:
/var/cache/apt/archives/install-info_5.1.dfsg.1-3_i386.deb
bureado@oersted:~$ sudo dpkg -i /var/cache/apt/archives/dpkg_1.16.10_i386.deb
(Leyendo la base de datos … 265182 ficheros o directorios instalados actualmente.)
Preparando para reemplazar dpkg 1.16.0.3 (usando …/archives/dpkg_1.16.10_i386.deb) …
Desempaquetando el reemplazo de dpkg …
Configurando dpkg (1.16.10) …
Procesando disparadores para man-db …
bureado@oersted:~$ sudo dpkg -i /var/cache/apt/archives/install-info_5.1.dfsg.1-3_i386.deb
(Leyendo la base de datos … 265194 ficheros o directorios instalados actualmente.)
Preparando para reemplazar install-info 4.13a.dfsg.1-8 (usando …/install-info_5.1.dfsg.1-3_i386.deb) …
Desempaquetando el reemplazo de install-info …
Configurando install-info (5.1.dfsg.1-3) …
install-info: warning: no info dir entry in `/usr/share/info/smbc.info.gz’
Procesando disparadores para man-db …
Viviendo con estática
Siempre he tenido problemas con la electricidad estática. Algunos de esos problemas se agravaron cuando me mudé a Quito, pues el clima era un poco más seco, y ahora están significativamente peores.
¿Qué significa vivir con estática? Significa que tienes una reticencia quasi-Pavloviana a abrir puertas, encender luces, tocar aparatos con piezas metálicas, conectar periféricos al computador, bajarte de un vehículo, entre otras cosas. Y además, que cuando te rozas con alguien que está cargado de electricidad estática, tienes un desagradable chispazo que usualmente sobresalta y la gente te mira como si quisieran exorcizarte un demonio. Incluso si ese alguien es tu perro.
Hay muchos factores que agravan el problema. Remover o mitigar estos factores puede ayudar. Los principales son el clima seco y la fricción entre dos superficies (usualmente telas, aunque también los zapatos con la alfombra) El clima seco se puede mitigar con un humidificador o plantas, y agravar con aire acondicionado. Pero la fricción entre dos superficies (como tu pantalón y el asiento del carro) no se puede mitigar (existen zapatos que se descargan, pero eso es harina de otro costal)
Como no podemos mitigar eso, hay algunas técnicas que, con el tiempo y la disciplina, pueden ayudar:
- Utilizar un dispositivo para descargar la estática. Yo utilizo este. Lo cargas contigo y tocas las superficies metálicas con él antes de tocarlas tú. También puedes tocar personas o perros. Un poco raro, pero funciona.
- Utilizar un clip de metal para descargar la estática. Tomas un clip cualquiera, lo llevas contigo y tocas las superficies metálicas con él antes de tocarlas tú.
- Poner una mano en la carrocería del carro antes de salir del carro. Abres la puerta, tocas el metal, pones tus pies afuera y sueltas el metal. Si no lo haces, o lo haces mal, recibirás un calambre.
- Usar partes del cuerpo menos sensibles para tocar algo, por ejemplo los nudillos o las partes de abajo de las palmas de las manos.
Utilizar cremas y lociones en las manos, así como agua en spray (alguna gente utiliza agua y suavizante de ropas), frotarse láminas de secado (populares en Estados Unidos para suavizar la ropa en la secadora) o utilizar bolas para secar en la secadora, o productos como Static Guard también pueden ayudar.
Las alfombras son las principales culpables. Aplicarles Static Guard o limpiadores y luego aspirarlas, junto con humidificar un poco el ambiente puede ayudar. Anyway. Happy buzzing!
“The Open Source Guy at…”
While attending the Open Business Conference (formerly the Open Source Business Conference) in San Francisco, I noticed how some people were referred to as “the open source guy at…” foo/bar/baz.
Gender issues aside, I think it is interesting to notice that lots of places don’t have open source “guys” anymore… but open source teams, with broad strategies in place. And the open source “guy” role has merged into the business, adding value to the business.
Don’t get me wrong, I understand the value of the “guy” – she’s a catalyzer for open source inside the business and liaisons with executive leadership. And perhaps I’m lost in translation – as a non-native English speaker perhaps I give it too much importance.
Agreed, Microsoft’s a different animal composed of several product groups with open source guys and girls, Microsoft Open Technologies, some Open Source labs, people doing standards, lawyers and also the field team that does Open Source from a Corporate perspective.
And meanwhile, if you’re the open source guy or girl at foo/bar/baz, I’d love to hear from you!

