Comunicado a favor de la libertad y neutralidad de la red

Nosotros, los abajo firmantes, en nuestra condición de ciudadanos venezolanos, miembros de las comunidades organizadas de usuarios de Software Libre y activistas de la libertad del conocimiento y la neutralidad de la red, defendemos un Internet libre y abierto, apegándonos a la Declaración por la Libertad de Internet la cual citamos en su totalidad:

“Apoyamos procesos transparentes y participativos para regular internet y el establecimiento de cinco principios básicos:

Expresión: No se debe censurar internet.
Acceso: Promover acceso universal a redes rápidas y asequibles.
Apertura: Internet debe seguir siendo una red abierta donde todas las personas son libres de conectarse, comunicar, escribir, leer, ver, decir, escuchar, aprender, crear e innovar.
Innovación: Proteger la libertad de innovar y crear sin permiso. No se deben bloquear las nuevas tecnologías, y no se debe castigar a los innovadores por las acciones de los usuarios.
Privacidad: Proteger la privacidad y defender la capacidad de la gente para controlar como se utilizan sus datos y dispositivos.”

CONSIDERANDO
La violación al derecho de libre acceso a la información evidenciada recientemente por:

1. Restricción del acceso a los siguientes sitios Web:
1.1. twimg.com, que hospeda imágenes de la red social Twitter
1.2. pastebin.com, utilizado para compartir información como texto plano.
1.3. bit.ly, acortador de enlaces
1.4 zello.com, aplicación walkie-talkie virtual para hablar con otras personas en canales públicos y privados.
1.5 Diversos portales de noticias a nivel nacional.

Esta lista es meramente enunciativa y no restrictiva, por cuanto el bloqueo de sitios se extiende a un número bastante mayor de éstos, de aproximadamente 500; pero debido a falta de transparencia desde el ente regulador respecto a cuales son estos sitios bloqueados no se cuenta con una lista completa. Los sitios bloqueados han sido reportado por usuarios alrededor del mundo en un proceso de monitoreo constante, y verificados de igual manera.

CONSIDERANDO
2. La violación a la privacidad de los ciudadanos evidenciada por la instalación de un Centro Estratégico de Seguridad y Protección de la Patria (CESPPA), entre cuyas actividades, delineadas en el decreto 458 de la Presidencia de la República Bolivariana de Venezuela, publicado en la Gaceta Oficial N°:40266 del 7 de octubre de 2013 y cuyo reglamento interno se define en la resolución número 011-14 del Ministerio para el Poder Popular del Despacho de la Presidencia y seguimiento a la gestión de Gobierno de la república Bolivariana de Venezuela, publicada en la Gaceta Oficial N°: 40355 del 13 de Febrero de 2014, está la vigilancia permanente de los flujos de información, aún cuando la Constitución de la República Bolivariana de Venezuela establece el derecho inalienable a la privacidad en su artículo 48.

CONSIDERANDO
3. El corte generalizado del acceso a internet a una región del país por parte de la compañía nacional de teléfonos de Venezuela (CANTV) desde el día miércoles 19 de febrero de 2014 hasta el viernes 21 de febrero de 2014 evidenciado por múltiples reportes ciudadanos en el estado Táchira, en atención a que las Relatorías de Libertad de Expresión de la OEA en su comunicado R50/11 consideran el acceso a Internet parte fundamental del acceso libre a la información y expresión y por tanto necesario en el ejercicio de estos derechos humanos. Agregando que existe un precedente, presentado el 14 de abril del 2013, cuando el acceso a Internet fue cortado por 4 minutos en expresas palabras del Ministro Arreaza, en respuesta a ataques a sitios y cuentas oficiales.

CONSIDERANDO
4. Las repetidas y consuetudinarias violaciones a la neutralidad de la red, principio plasmado en nuestra Ley Orgánica de Telecomunicaciones, el libre acceso a la información y la prohibición de la censura previa, presentes en la Constitución de la República Bolivariana de Venezuela (art. 58 ejusdem), e incluso normas supraconstitucionales a las que el Estado Venezolano debe apegarse por haber suscrito acuerdos, entre ellos la Declaración Universal de los Derechos Humanos en su artículo 19.

ACORDAMOS
Fijar nuestra posición en los siguientes términos:

1. Apoyamos la declaración de la neutralidad de la red y el acceso libre a la información como principios fundamentales para el desarrollo de nuestra nación.

2. Expresamos nuestro desacuerdo con la creación del Centro Estratégico de Seguridad y Protección de la Patria (CESPPA), fundamentado en los siguientes puntos:
2.1. Viola nuestro ordenamiento constitucional, nuestros derechos humanos y por tanto constituye un abuso de poder.
2.2 Está en contra de los ideales y principios que defendemos como parte de los movimientos de Software y Conocimiento Libre, puesto que CESPPA se configura en un ente de censura previa a partir de criterios de seguridad y defensa de la nación, contraviniendo normas constitucionales establecidas en el art. 57 ejusdem.
2.3. Es un acto irresponsable de nuestra parte como ciudadanos, usuarios y especialistas en tecnologías; no hacer de conocimiento publico nuestra opinión al respecto.

3. Expresamos nuestro desacuerdo con las acciones por parte de cualquier empresa o institución nacional y/o extranjera que puedan representar restricciones al acceso a la información.

4. Consideramos evidente la necesidad de motivar la concientización de los ciudadanos sobre las ventajas y riesgos del uso de Internet, así como el desarrollo de habilidades que les permitan tener un desenvolvimiento activo en el mismo.

5. Reconocemos la existencia de un instrumento legal en la Ley Especial Contra los Delitos Informáticos, para la protección, prevención y sanción de delitos cometidos contra sistemas que utilicen tecnologías de información, la cual sanciona el espionaje electrónico como delito contra la privacidad de las personas en sus artículos 20, 21 y 22. Consideramos que cualquier acción ejecutada por cualquier entidad en aras de protegerse o prevenir ataques informáticos debe estar enmarcada en los preceptos establecidos en esta Ley.

6. Reconocemos las potencialidades del sistema educativo, así como el crecimiento de la Fundación Infocentro, que ha hecho posible el acceso de millones de venezolanos a recursos de computación e Internet de manera libre y gratuita. Consideramos que el uso eficiente de estas herramientas pueden garantizarle a los ciudadanos el desarrollo de habilidades necesarias para un uso libre, sano y positivo de Internet y de las herramientas informáticas.

7. Consideramos que la privacidad de los ciudadanos no se puede garantizar sin hacer uso de Software libre y estándares abiertos, por lo que hacemos énfasis en la necesidad de promover el cumplimiento de la Ley de Infogobierno promulgada en Gaceta Oficial N° 40.274, que establece que todo programa informático que se desarrolle, adquiera o implemente en el Poder Público deberá ser Software Libre, con estándares abiertos, transparente y comunitario, salvo las excepciones expresamente establecidas en la Ley y previa autorización del ente competente.

Suscriben

Manuel Lucena Pérez, UNPLUG

PS1: Sólo aparece mi firma acá, porque es mi blog y sólo yo puedo hacerme responsable de las cosas que acá publico. En la petición [Ver abajo] se encuentran las firmas de todos quienes suscribieron el comunicado.

PS2: Puedes suscribir el comunicado firmando La petición en change.org

Parche para corregir shellshock en bash

Es por todos conocido -o, al menos, eso quisiera creer- el bug Shellshock [EN] que afecta las versiones de bash… bueno, básicamente, todas las versiones de bash hasta la 4.3.25.

Ahora, ¿En qué consiste la falla? Pues, que se pueden bypassear variables y ejecutar código arbitrariamente. Es decir, que cualquiera podría inyectar código en tu shell y hacer cosas muy, muy malas.

Un ejemplo del bug corriendo.

root@orchid:/home/manuel# env x='() { :;}; echo ola qe ase' bash -c "echo shellshock o qe ase"
ola qe ase
shellshock o qe ase

Este ejemplo inocente y sencillo constituye una prueba de concepto. Es decir, en ese momento mi versión de bash era vulnerable.

Es innecesario mencionar lo peligroso de este bug, y de las terribles implicaciones de éste. Me atrevería a decir que es más relevante y peligroso que Heartbleed [EN], aquel conocido bug de OpenSSL que hizo correr a más de un sysadmin.

Pues bien… revisando posibles arreglos a la situación, doy con este hilo de superuser [EN] donde proponen una solución. Puedo decir que a mí me funcionó en ElementaryOS (basado en ubuntu 12).

Y, para llevarlo al punto de la ironía, lo haremos con un bash script:

#!/bin/bash
mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
for i in $(seq -f "%03g" 0 25); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz
cd bash-4.3
for i in $(seq -f "%03g" 0 25);do patch -p0 < ../bash43-$i; done ./configure --prefix=/ && make && make install cd .. cd .. rm -r src

¿Qué hace este script? Descarga la versión 4.3 de bash, aplica parches y actualiza la versión. Nada realmente complicado.

Una vez aplicado el parche, volvemos a intentar ejecutar el código de prueba

root@orchid:/home/manuel# env x='() { :;}; echo ola qe ase' bash -c "echo shellshock o qe ase"
bash: aviso: x: ignoring function definition attempt
bash: error al importar la definición de la función para `x'
shellshock o qe ase

¿Y eso qué quiere decir? Pues, esas dos primeras líneas de la salida significan que no se puede importar una variable. Como lo otro es un simple echo, éste se muestra sin problemas.

Happy patching and hacking.

Usando SSH para actualizar WordPress

En estos días me ha tocado atender un nuevo cliente, la gente de 4lochas.com, un portal de música y variedades que tiene rato hosteado con nosotros, pero que cambió recientemente de administración. Luego de una buena cantidad de setbacks (menores y mayores), pusimos a andar el sitio. Y, si bien es cierto que hay un par de caídas de vez en cuando, el sitio está operativo la mayor parte del tiempo. Esas cosas se van a ir corrigiendo a medida que se van afinando los detalles.

Entre las cosas que me solicitaba, estaban las de actualizar plugins y temas y esas cosas. Obviamente, lo primero que se hace con un cliente nuevo es darle sus credenciales de usuario. Pero, en el caso de mis servidores, hay una configuración estándar de ssh, en la que PasswordAuthentication está desactivado, y sólo puedes loguearte si tu llave pública está añadida en el authorized_keys correspondiente. Por lo que el cliente debe generar llaves ssh para poder añadirlas a su archivos de llaves autorizadas. Desafortunadamente, putty no es particularmente sencillo en su uso de llaves. Al menos, no para mí que sólo lo he usado un par de ocasiones, y nunca desde mis equipos.

En fin, revisando por el internés alguna forma de automatizar el proceso de autenticación vía llaves ssh en wordpress, conseguí este artículo en el que explican paso a paso lo que debe hacerse. La cosa es que está hecho para distribuciones basadas en RedHat.

No voy a ahondar mucho en cómo se instala ssh, cómo creas llaves públicas, cómo accedes a ellas y cómo las llevas al servidor. De esos hay muchísimos artículos por toda la internet que está a un googleo de distancia. Lo que sí voy a decirles es qué necesitan desde ese punto en adelante para tener el wordpress andando en [una distro basada en] debian.

Lo primero, instalar libssh2-php

apt-get install libssh2-php

Luego, añadir esto en su wp-config.php. Les sugiero que las añadan luego de los salt strings.


define('FTP_PUBKEY','/home/tu_usuario/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/tu_usuario/.ssh/id_rsa');
define('FTP_USER','tu_usuario');
define('FTP_PASS','hackme');
define('FTP_HOST','127.0.0.1:22');

Donde:
FTP_PUBKEY: Es la llave pública. Usualmente se aloja en ~/.ssh
FTP_PRIVKEY: Es la llave privada. Usualmente se aloja en ~/.ssh
FTP_USER: Obviamente, tu usuario
FTP_PASS: El password.
FTP_HOST: En este caso, 127.0.0.1, porque se supone que estás descargando local en tu servidor. Puedes usar un TLD o incluso un subdominio.

Ya con eso no deberías requerir configurar nada más para actualizar o instalar cualquier cosa en WordPress. De hecho, lo probé actualizando a WP4, añadiendo un nuevo tema e instalando plugins y actualizaciones requeridas sin ningún inconveniente.

Barquisimeto Chicken Wings

En una de esas típicas salidas de las madres, un buen día llega la mía con 1Kg de Alas de Pollo y me dice:
– “Aja… ¿Qué es lo que dijiste tú que ibas a hacer?”
– “Bufallo Wings, mamá”
– “Ahí están las alas de pollo”
– “Perfecto… ¿Tienes salsa picante, paprika, pimienta de Cayena…?”
– :poker face:

En cualquier otra circunstancia, habría preparado esas alas de pollo para dárselas de comer a mi perro, que, como eventualmente comentaré, también es Gourmet. Pero, en este caso (y básicamente para evitar “picarle la lengua” a la señora) dije que iba a improvisar.

Al final, la receta que llamé “Barquisimeto Chicken Wings”, quedó así:

INGREDIENTES:
1Kg de alas de pollo
3 Cucharadas de margarina, derretida.
1 Cucharada de comino.
1/2 cucharadita de sal
1/2 cucharadita de pimienta negra
una pizca de tomillo

PREPARACIÓN:
Cortar las alas de pollo por la articulación
Mezclar en bowl aparte los ingredientes del marinado.
Meter las alas de pollo y 3/4 partes del marinado en bolsa plástica, cerrar, esperar media hora
Precalentar el horno a 180º
Descartar el exceso de la marinada en la bolsa y poner el pollo en una bandeja
Hornear hasta dorar
Poner el resto de la marinada apenas sacado el pollo del horno.

Antena amplificadora de wifi casera para ayudar al reporterismo ciudadano

Una queja recurrente de los amigos que han estado haciendo reporterismo ciudadano de las jornadas de protesta alrededor del país es que la señal de datos en dichas concentraciones suele ser bastante mala e incluso inexistente.

Se ha pedido insistentemente que los vecinos de las áreas aledañas a las zonas de concentración liberen las señales wifi de sus casas u oficinas a modo de aporte a la protesta. Para nadie es un secreto que los ISPs de Venezuela están bloqueando contenidos al mejor estilo chino[1], que los medios de comunicación social están [auto]censurados, cuando de plano no tienen material para salir a la calle[2], y la represión policial en algunos sitios es brutal[3]. Entonces, se hace necesario el uso de las herramientas sociales en la red, el reporterismo ciudadano y el cyberactivismo[4] para poder difundir el mensaje que se quiere transmitir, sea éste el que fuere.

Si no sabes liberar tu wifi (i.e.: quitarle la contraseña), pídele a un vecino o a tu “pringao”[5] de confianza que lo haga por ti.

En esa tónica, y como parte de ese aporte a la libertad de información, expresión, y, sobre todo, de conocimiento, procedo a dejar este pequeño how-to para hacer una antena casera para amplificar la señal de tu wifi para poder ayudar a quienes documentan las marchas, protestas, concentraciones, etc.

Parte I, el mise en place:
Vas a necesitar
-Latas de aluminio.
-Un cuchillo, navaja, exacto, machete, hacha… Cualquier cosa que corte y pueda hacer un agujero en la lata.
-Tijeras.
-Una regla.
-Un marcador.
-Cinta adhesiva.

Vacía la lata (DUH!!!) y lávala. Ten a mano un trapo para secar.

Parte II, la preparación:
-Quítale la pestaña a la lata
-Haz una línea que atraviese diametralmente la lata por la parte de arriba, de preferencia longitudinalmente al gancho que queda al retirar la pestaña.

-Usa de guía esa línea, para hacer otra que atraviese el alto de la lata

-Guíate de nuevo con la regla para ubicarte exactamente a 180º de la línea trazada, haz una marca y mide 1cm de ambos lados, así:

-Con el instrumento para cortar, haz agujeros a ambos lados de la línea trazada a lo alto de la lata, en el extremo de la misma. Ver imagen.

-Procede a cortarla, en el extremo opuesto a donde se abre, córtala completamente. Del otro lado, hasta las marcas hechas a 1cm de la marca del opuesto al inicio del corte. Debería quedar así:

-Abre las pestañas que acabas de hacer y estíralas para que haga la forma más parecida a una parábola. Debería quedar más o menos así:

-Pon un poco de cinta en la parte de abajo del extremo que no cortaste completamente, así:

-Por último, coloca la “parabólica” introduciendo la antena de tu enrutador por el agujero de la lata y asegúrala presionando la cinta doble faz.

A modo de comentario: Este tipo de antenas, en mi experiencia, pueden duplicar -y a veces hasta triplicar- la intensidad de la señal. Al final, no sólo será un aporte a aquellos que quieren documentar las protestas, sino que redundará en su beneficio, al disponer de una mejor señal wifi en su casa u oficina. Y sin hacer inversiones en amplificadores de marca que hacen el mismo trabajo.

[1]: http://ghostbar.co/2014/02/15/si-nos-bloquearon/
[2]: http://elimpulso.com/articulo/el-impulso-seguimos-en-la-lucha-para-solucionar-la-situacion-del-papel-comunicado#.UwN3WXl5vVM
[3]: http://www.youtube.com/watch?v=pHZJOYHVc8U
[4]: http://es.wikipedia.org/wiki/Ciberactivismo
[5]: http://www.frikipedia.es/friki/Pringao (El tono cómico del post)

Proxy transparente en Debian: The revolution is here!!

Con todo este rollo de los blackouts informativos que se están generando en Venezuela, no sería de extrañar que oficialicen lo que ya han venido haciendo por partes los ISPs: Bloquear los dominios que les son incómodos.

Entonces, para evitarme presentes y futuros dolores de cabeza por esa causa, me decidí a instalar un proxy transparente para usarlo como pasarela. De este modo, mi salida es desde un servidor fuera del país y paso “colado” los bloqueos.

Parte I: El Mise en Place
Necesitamos:
-Un VPS, hay varias opciones. Googleando un poco puedes conseguir unas a precios bastante accesibles. El problema es que se pagan en dólares. Entonces, hay opciones como host1free que te dan un vps muy reducido de forma gratuita. Lo malo de esto es que debes esperar un tiempo (que puede extenderse a un par de meses, como en mi caso) a que lo activen.
-Squid, del lado del servidor
-BIND (Opcional), para poder tener resoluciones reversas y poder saltarse algunos proxy scanners que consigas por allí.
-El cliente donde vas a configurar la navegación anónima

En este caso, uso un vps con debian estable, y configuro tanto firefox como chrome/chromium

Parte II: La preparación
A) Del lado del server
-Instala squid con

# apt-get install squid3 squid3-common -y

-Busca el archivo de autenticación de squid con

# dpkg -L squid3 | grep -w ncsa_auth

Debería regresar algo como esto:

/usr/lib/squid3/ncsa_auth

Toma nota de ese path, porque debes modificar el squid.conf con él

-Respalda squid.conf y edítalo

cp /etc/squid3/squid.conf /etc/squid3/squid.conf.bak
nano /etc/squid3/squid.conf

Pastea lo siguiente:

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
auth_param basic children 5
auth_param basic realm please login to the squid server?
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access allow localhost
http_access deny all
http_port 2222
coredump_dir /var/cache/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

icp_access allow localnet
icp_access deny all
acl ip1 myip XXX.XX.XX.XXX
tcp_outgoing_address XXX.XX.XX.XXX ip1
cache_mgr example@example.net
cache_mem 64 MB
visible_hostname example.com
maximum_object_size 10 MB

forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all

shutdown_lifetime 3 seconds

Cambia al path que conseguiste anteriormente. Debe quedar así:

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd

Cambia XX.XXX.XXX.XX a tu ip. Puedes usar whatsmyip.org para descubrir cuál es.

-Crea una clave para acceder al proxy

# htpasswd -c /etc/squid3/passwd tu_usuario

-Reinicia Squid

# service squid3 restart

B) Del lado del cliente:
Si usas Firefox, en las preferencias está la posibilidad de cambiar el proxy.

Si usas Chrome/Chromium, hay dos posibilidades:
-Tu sistema operativo permite configurar via GUI. O sea, usas windows, macos, o algún entorno de escritorio en Linux como xfce4, gnome o kde. En ese caso, úsalos.
-Usas openbox, lxde o algún otro entorno en linux. En ese caso, modifica /usr/share/applications/[chrome/chromium].desktop. Y modificas la línea de exec a:

Exec=/usr/bin/chromium --proxy-server="servidor:puerto"

Donde servidor es el ip de tu servidor y el puerto es el 2222

Happy proxying.

Fuentes:

Install and configure private anonymous proxy server using Squid in Debian 6


http://blog.desdelinux.net/usar-proxy-en-chromium-chrome/

Publicada en SL

Swap de 4GB en un Galaxy Spica. Te lo tengo

En realidad, es bastante sencillo. Tomé la referencia de este post de samdroid, y funcionó básicamente a la primera.

El escenario es el siguiente: Un Samsung Galaxy Spica rooteado, y con CyanogenMod 7.9 (usando este tutorial), con Kernel 3.0.55, corriendo Gingerbread. Desde que se realizó la actualización, el equipo presenta problemas serios de funcionamiento, debido a la poca memoria RAM que posee. En un primer lugar, se aplicó una forma de usar la SD como partición swap, pero sólo logró incrementar en 512mb la misma, lo que en realidad hacía un flaco servicio, a pesar de ser bastante configurable.

Al poseer tan poca memoria, correr aplicaciones que consuman bastante RAM, como la cámara o el navegador, se hacía una verdadera pesadilla. Al punto de no poder usar el botón de cámara, la galería de CM7 y otros. Al principio, no presentaba demasiado problema, porque siempre puedes usar aplicaciones más ligeras o prescindir de algunos servicios por no ser vitales. La cosa cambia cuando quieres usar whatsapp, o line o el mismo reluciente hangouts, lo que me llevó a googlear un poco y dar con esta solución sencilla:

Necesitas:
1. Tener el teléfono rooteado (paso previo para poder instalar algún mod)
2. Algún cliente de terminal (si tienes CM7, lo más probable es que ya tengas uno instalado)
3. Una SD con suficiente espacio.
4. Un respaldo general (puedes googlear para averiguar cómo se hace), en caso de que rompas algo.
5. Conocimientos generales de comandos CLI. Recuerda que Android es una especie de Linux.
6. Alguna aplicación para correr comandos automáticamente al [re]iniciar el dispositivo. Recomiendo Autostart
7. Root explorer. Lo consigues en el play store.
8. Algún cliente para mover archivos de la pc al teléfono o algún editor de texto plano.

Mise en place:
1. Haz el respaldo general.
2. Particiona tu sd (Paso opcional, pero altamente recomendable)
3. Instala Autostart y todas las demás apps que necesites.
4. Crea un archivo (Y los directorios, si hace falta) /sdcard/data/opt/autostart.sh. Puedes hacerlo en la pc y usar algún app para moverlo al teléfono, o usar un editor de texto plano.
5. Darle permisos 777 a /mnt/sdcard/data/opt/autostart.sh.

Proceso:
1. En el terminal, te logueas como root. (O sea, tecleas “su”, sin las comillas). Eso hará que aparezca un popup preguntándote si realmente quieres darle acceso de superusuario a esa aplicación. Dile que sí.
2. Luego de logueado como root, escribirás en el terminal: dd if=/dev/zero of=/sdcard/swapfile bs=1024 count=xyz, donde:
xyz = Cualquier número múltiplo de 1024: 2048, 3072, 4096… O, si lo hacemos como dice el tutorial, Cualquier número cuyo módulo de 1024 sea igual a cero (xyz % 1024 == 0).
Ahora bien, ¿qué hace este comando? Crea un archivo llamado /sdcard/swapfile, que es básicamente la ubicación de tu nuevo swap. bs es el tamaño del bloque (en este caso 1024 bytes) y count es la cantidad de bloques que quieres crear.
3. En el mismo terminal, ahora ejecutas swapon /sdcard/swapfile. Es decir, activas la swap.
4. Ejecuta free. Debe aparecer una pantalla así:
Nota el 4227064, es decir, 4GB.
5. Ahora, pones en el terminal echo 'swapon /sdcard/swapfile' > /sdcard/data/opt/autostart.sh Para añadir el comando de activar el swap en el script de inicio. O, puedes abrir de nuevo tu editor de texto y pones swapon /sdcard/swapfile
6. Reinicia el teléfono, abres el terminal y ejecutas “free” de nuevo. Debería haber funcionado.

Mise en Place para SysAdmins

Uno de los mayores aportes de los franceses a la humanidad ha sido su gastronomía. Y, dentro de ese amplísimo aporte, está la metodología para el manejo profesional de una cocina. Una de esas metodologías (¿O debería llamarle más bien “procedimiento”?) es el “Mise en place”, que no es otra cosa que -como dice su traducción- la puesta en sitio de los implementos, ingredientes y materiales que requieres en el servicio, así como todo el proceso de preparación previa.

Hay gente que considera el Mise en place como una religión (Hello, Mr. Bourdain), por lo vital que es dentro de una cocina. ¿Cuántas veces no les ha pasado que vienen con un plato en mente, y cuando llegan a casa, no hay un ingrediente vital para la preparación? O, peor: empezar a cocinar y darte cuenta que ese ingrediente falta. Sin una preparación previa, e incluso sin un estudio situacional de tu área de trabajo, los resultados son, en la franca mayoría de las ocasiones, un completo desastre en el que la improvisación termina siendo el pan del día y las soluciones dejan de ser tales para ser “pañitos de agua caliente”.

Una de las áreas en las que eso se nota con mayor énfasis es en la de Administración de Sistemas (O servidores), en donde una práctica descuidada puede traer consecuencias realmente graves. Y aquí habla mi experiencia personal: Las veces que no se hace un estudio previo, se toman en cuenta todas las posibles situaciones y se realizan planes de acción acordes a ellos, se suele terminar dando carreras de última hora tratando de solventar esa situación que no se preveyó en su momento y que, en el mejor de los casos, sólo te quita tiempo. Pero, la verdad sea dicha, suele quitarte también dinero y un poquito de orgullo.

Entonces, ¿qué tiene que ver los procedimientos de cocina francesa con el System Administration? Pues, precisamente el Mise en place, como podrán haber notado. Casi en cualquier carrera, puedes hacer una variante de la puesta a punto para poder trabajar lo menos estresado posible. Ahora bien, ¿Qué cosas en concreto se pueden hacer?

1. Documentarse, siempre documentarse: El viejo refrán dice “El saber no ocupa espacio”. Antes de realizar una implementación, o de saltar a decir “TE LO TENGO” sin siquiera saber de qué diantres hablan, es mejor usar un par de horas (o de días, depende de la magnitud del requerimiento y nuestro sempiterno nivel de ignorancia) para hojear y luego leer en profundidad aquellas literaturas relacionadas con el tema que ocupa. Admitir desconocimiento es bueno. Es mejor decir “No domino el tema, pero si me das un par de días, te puedo dar una respuesta e incluso hacerte un presupuesto” que luego llegar con la pata de palo y el loro en el hombro.

2. Estudiar la situación: Sí, claro… me presionan y quiero salir de ese rollo rápido. Pero, como les dije anteriormente, es preferible perder un par de horas analizando cada posible detalle y planteándose cada mínimo escenario para, de ese modo, no tener que llevarse sorpresas -mayormente desagradables- en el camino de la implementación. No hay preguntas tontas, sino tontos que no preguntan. El realizar todas las preguntas que aclaren todas las dudas, y dejar que tu contraparte haga todas las preguntas, detalle todos los requerimientos y sea absolutamente claro con la forma en la que espera que las cosas salgan. Ese período en el que la comunicación fluye y las diferencias de opinión surgen debe ser aprovechado, para de ese modo saber exactamente qué toca hacer.

3. Tener siempre a mano un servidor de pruebas: Con la posibilidad de crear máquinas virtuales en equipos con cada vez mayores y mejores prestaciones de hardware, es prácticamente un pecado no tener entornos en los que se pueda probar y, -más frecuentemente de lo que se quisiera admitir- romper. Allí, en ese espacio confinado y cerrado como un laboratorio, podrás hacer todas las pruebas, con un enfoque más o menos metodológico, dependiendo de tus capacidades o de la naturaleza de las pruebas. A través del ensayo y error, y error, y error, y error, y error…

4. Preparar los ingredientes: En el caso particular del System Administration, implementar un servicio en particular, o realizar alguna labor de respaldo o recuperación, requiere de cierta cantidad de software e incluso de configuración en mitad de la implementación. Entonces, a medida que vayas necesitando una librería, un paquete de desarrollo, un addon, un plugin o todo un paquete, asegúrate de tomarlo en cuenta mientras estés en tu entorno de pruebas. De ese modo, al pasar a producción, podemos aplicar esas correcciones o preparaciones de una manera más o menos automática.

5. Crear tu libro de recetas: Complementando los dos puntos anteriores, una vez que ya perfeccionaste la técnica, que manejas y respetas los ingredientes, que tienes una idea clara de qué tiempos manejar y cómo preparar todo, puedes pasar a hacer tu receta para la implementación. Eso logra dos cosas: 1- Regular el proceso, logrando de esa manera un estándar (que puede o no haber sido ya definido), y 2- Permitirte crear scripts de shell que hagan el trabajo por ti. Pueden creerme cuando les digo que llega un momento en el que instalar y configurar BIND9+Apache2+PHP5+MySQL+Postgres+RVM+Ruby 1.9.3+Rails 3.0+Git+Capistrano+Perolitos de seguridad diversos llega a ser fastidioso.

6. Cocinar (o administrar) como un rockstar: Y, no… No me refiero a consumiendo drogas, en un camerino con groupies o en medio de una gira. Me refiero a hacerlo con confianza, a hacerlo incluso con un poco de arrogancia. Si todo tu Mise en place fue bien hecho, vas a disfrutar la experiencia de [cocinar/implementar un servidor] sin ningún contratiempo ni sobresalto. Es decir, las cosas saldrán fluidas porque te encargaste de que el proceso estuviese libre de stress. Total, el stress ya lo pasaste en los cinco pasos previos.

Estoy confiado en que disfrutaron la lectura, aunque no hayan sido más que respuestas obvias. Pero, si Paulo Coelho hace tanto dinero haciendo exactamente lo mismo, ¿Por qué yo no puedo escribir sandeces? ¡¡Hasta otra!!

Unleashing the beast

In an unexpected and surprizing way, I saw Astrid yesterday. In case you’re not familiar with Josephine’s history, Astrid is Phil’s sister and our first lead singer. I love this little girl (Well… not that little anymore, she’s 23 now) and I always rejoice myself when I talk to her, even though we’re kinda busy every single time we do.

Anyways, in our short talk, we’ve decided to bring the monster back to life, officialy. I mean, we’ve talked before in a sort of informal way to bring the band back (Now that she graduated from college) but never too seriously. I promised her to talk about that on sunday, and I have never let her down with a promise I’ve made to her, so I’m willing to deliver.

As usual, I’m exultant, hopeful and extremely happy with start making music again. And I’m really looking forward to get together and start doing the thing we love the most when we’re hanging out: Bringing a guitar, turn the keyboard on and set some samples on the computer. I suppose that Josephine’s new direction will be a total opposite from styles we have tried before, since we’re a bit older and our experiences are way different four years from now.

We are a family back again, and you have no idea how happy the simple tought makes me be. I assure you all that you will hear things from us from now on. Maybe I’ll post a song next time I write.

Deepest Respects.

Manuel.

Update: We decided to wait for Phil to finish his School duties, supposedly on the first week of May. Which means we will start working on the new material on June or so… Anyways, I just can hardly wait. I’m really happy for this.