Este 15 de septiembre estaremos celebrando el Día de la Libertad del Software (en ingles, Software Freedom Day) sede Caracas, en las instalaciones del MPPEE (Antigua sede de la Electricidad de Caracas), desde las 9:00 am hasta las 4:00 pm
Tendremos diversas actividades durante el evento entre las cuales habrán: charlas, demostraciones, exhibiciones, instalaciones y venta de productos alusivos al SL por parte del K!0$C0 FRIKI.
Para la información completa pueden revisar la wiki aquí
Si estas interesado en participar escribenos a consulta_friki@kioscofriki.com.ve los siguientes datos:

  • Nombre y apellido 
  • Cédula 
  • Lugar de Procedencia 
  • Correo electrónico 
  • Nick de Twitter (si lo tienes)
Te esperamos!!

Saludos.

En este post les presento una lectura sobre las experiencias de dos chicas “Eva y Fong”, y el como se inician en el desarrollo.  Aclaro que esta en ingles, pero para nosotros los latinos es otro de los skills que debemos agregar si nos interesa cualquier área tecnológica, lógicamente los mejores manuales o guías las conseguiremos en este idioma.

Me pareció muy didáctico porque desde hace meses me he desempeñado como programador (Python/OpenERP específicamente) y el cambio de administrador de servidores a tal se me ha hecho algo complejo por no tener las bases y correctos procedimientos de análisis y ejecución, pero bueno, allí voy avanzando.

Que lo disfruten!

…Ir al enlace…

Luego de las euforia de dos eventos bastante buenos en los que participamos recientemente con nuestros productos del K!0$C0 FRIKI, los cuales son el 8vo CNSL y el FUDCon Latam, calugos y yo hemos decidido organizar el Día de la Libertad del Software en la ciudad de Caracas este 15 de Septiembre. Para ademas compartir parte de nuestros conocimientos en el área no solo de Software Libre sino también de Hardware Libre. Para información completa de lo que estamos planeando para ese día haz clic aquí y mantente informado de los avances para el evento.
Si te encuentras en la ciudad de Caracas no dejes de asistir.

Y bueno, hace unos quince meses ya (en mayo del año pasado) tuve el placer de recorrer Centroamérica en bus acompañado de un bello grupo, fue un proyecto muy bonito del que pude ser parte. Libre Bus, un bus que recorrió desde Costa Rica hasta Guatemala durante quince días.

Este año el proyecto vuelve de nuevo, pero esta vez será en el cono sur, lamentablemente no seré parte de la travesía, pero estoy seguro de que será una experiencia parecida o mejor. Durante el viaje se hablará sobre Cultura Libre, Software Libre, Libertad de Expresión, Libertad para compartir y Educación Abierta, manejando dos ejes transversales: Biodiversidad y medio ambiente y Género.

Esto arrancará el 28 de agosto en la ciudad de Valdivia en Chile y tiene programado terminar en La Plata, Argentina, serán 30 días increíbles y 8,000 kilómetros en un bus recorriendo Chile, Argentina, Uruguay y Paraguay, donde se compartirá mucho conocimiento y experiencia, así que si estás en alguno de los cuatros países que mencioné antes, revisá la agenda para que podás llegar y participar en los eventos (de paso me saludan a Teresa, Renata y Jaime con quienes estuve el año pasado 🙂

Una vez que inicie, vas a poder ir viendo fotos en flickr que el grupo de librenautas irá subiendo.

Se que a muchos les da curiosidad ver que sucede cuando intentamos eliminar de forma recursiva todos los archivos y directorios del directorio raíz de nuestro sistema así que aproveche de hacer un video precisamente ejecutando rm -Rf /* como root. Aquí pueden ver el video:

Como ven las consecuencias son visibles tan pronto empezamos a ejecutar este comando y si se fijaron hay directorios que no son eliminados.

Estos directorios como es el caso de /proc residen en memoria y no pueden ser eliminados mientras que otros como /var contienen directorios que a su vez residen en memoria con es el caso de /var/tmp en mi instalación de Fedora.



Post-análisis luego del rm -Rf /

En vista de que me han preguntado varias veces y muchos han especulado sin realmente tener pruebas me decidi a averiguar en que estado quedaba el sistema operativo. ¿Que archivos y directorios sobrevivieron?

Para responder esto simplemente monte el disco duro viejo en otra instalación de linux y ejecute find /mnt/oldhdd -type lo que arrojo como resultado:

/mnt/oldhdd/
/mnt/oldhdd/sys
/mnt/oldhdd/dev
/mnt/oldhdd/var
/mnt/oldhdd/var/tmp
/mnt/oldhdd/run
/mnt/oldhdd/run/libgpod
/mnt/oldhdd/run/faillock
/mnt/oldhdd/run/setroubleshoot
/mnt/oldhdd/run/openvpn
/mnt/oldhdd/run/plymouth
/mnt/oldhdd/run/wpa_supplicant
/mnt/oldhdd/run/netreport
/mnt/oldhdd/run/mdadm
/mnt/oldhdd/run/cups
/mnt/oldhdd/run/cups/certs
/mnt/oldhdd/run/spice-vdagentd
/mnt/oldhdd/run/sepermit
/mnt/oldhdd/run/abrt
/mnt/oldhdd/run/console
/mnt/oldhdd/run/vpnc
/mnt/oldhdd/run/ppp
/mnt/oldhdd/run/blkid
/mnt/oldhdd/run/setrans
/mnt/oldhdd/run/utmp
/mnt/oldhdd/run/net-snmp
/mnt/oldhdd/run/lock
/mnt/oldhdd/run/lock/dmraid
/mnt/oldhdd/run/lock/lockdev
/mnt/oldhdd/run/lock/ppp
/mnt/oldhdd/run/NetworkManager
/mnt/oldhdd/run/saslauthd
/mnt/oldhdd/run/gdm
/mnt/oldhdd/run/gdm/greeter
/mnt/oldhdd/run/pptp
/mnt/oldhdd/proc
/mnt/oldhdd/boot
/mnt/oldhdd/media
/mnt/oldhdd/tmp

Como ven a excepción de /mnt/oldhdd/run/utmp todos son directorios.

El fin de semana pasado tuve la oportunidad de entrevistar al líder del proyecto Turpial, Wil Alvarez. Las preguntas variaron entre personales y especificas sobre el popular cliente para identi.ca y Twitter.

Me pareció apropiado hacerle seguimiento a algunas reacciones que obtuve de compartir el vídeo tutorial de Turpial que hice hace poco. En su mayoría fueron positivas pero algunas mostraron cierto descontento con detalles del proyecto. Cuando hice énfasis en que es software Venezolano, la respuesta fue "El único venezolano allí es Wil" y la que mas se repitió era algo así como "Si fuese venezolano, su pagina estaría en castellano".

Esta primera serie de preguntas y respuestas son especificamente de Turpial como tal.



¿Hace cuanto que fue creado Turpial o de donde viene Turpial?

Turpial nace aproximadamente en noviembre de 2008. En octubre, por recomendación de Eleazar Meza (@elshaka), abrí mi cuenta de Twitter y estuve usando varios clientes para Linux de la época. Probé Mutter, Gwibber, DestroyTwitter y otros, pero ninguno cubría mis expectativas.

Para ese entonces Gwibber y Mutter carecían de muchas funcionalidades o de una interfaz simple y si bien DestroyTwitter era una de las mejores opciones, no era libre y eso me generaba cierta incomodidad. Decidí entonces desarrollar un cliente de Twitter para mi uso personal con los conocimientos de Python y Gtk que tenía actualmente. Así fue como nació el proyecto.



La gente se queja de que hay mas material en ingles que en español, entiendo que es para usar un idioma "universal". ¿Que le dirías a esa gente que se queja y como pueden colaborar a traducir?

Azrael (@AzraelCcs) redactó un artículo genial sobre este tema (en inglés) con una explicación muy acertada y varios puntos que valen la pena resaltar, así que tomaré la idea principal de su texto para responder a tu pregunta.

Turpial cada día crece más y para nosotros es importante ayudarlo a seguir creciendo y conquistando nuevos horizontes. Les guste o no, el inglés es un idioma común, tanto en ámbitos de programación como para la interacción de muchos pueblos. No podemos tener una mente tan cerrada como para pensar que el único idioma que se habla es el español ni mucho menos pretender imponer el idioma español como base para la aplicación porque, repito: les guste o no, el inglés es el idioma más hablado fuera de nuestras fronteras.

Gracias a la decisión que tomamos de pasar toda la plataforma a inglés logramos captar a nuestro gran amigo Andrea Stagi (@4ndreaSt4gi) que ha estado trabajando fuertemente con nosotros en el código de Turpial y muchas otras colaboraciones, donaciones e incluso noticias y artículos en blogs de todo el mundo.

Podemos asegurarle a la comunidad lo siguiente:

  • No nos estamos vendiendo a una corporación maligna del imperio que usará Turpial como herramienta para subyugar a los pueblos oprimidos.
  • No estamos dejando de dar soporte en español.
  • Vamos a seguir mejorando Turpial en español, inglés, portugués, chino, alemán y en todos los idiomas que podamos (con la ayuda de la comunidad).

Pueden revisar el Timeline de Turpial y se darán cuenta que respondemos preguntas en ambos idiomas pero nuestra plataforma está y seguirá estando en inglés porque en este momento somos pocas personas aportando al código de Turpial y humanamente el tiempo no nos alcanza para también traducir y mantener la plataforma.

Estamos completamente abiertos a recibir colaboraciones para traducir la plataforma, en ningún momento nos hemos cerrado a esa posibilidad, simplemente no nos alcanza el tiempo. Nuestra amiga Nathalie Colina (@Art3mis4) estuvo con ganas de aportar en esto de las traducciones, si están interesados pueden contactarla y tratar de coordinar para que empiecen cuando quieran.



Veremos Turpial en otras plataformas como moviles incluso en otros sistemas operativos? y de ser así, seguirá siendo libre?

Por supuesto. Estamos trabajando para que la versión 2 esté disponible para Windows y para Mac. Luego tenemos planes de portar Turpial 3 para Android, iPhone e incluso Chrome (y Firefox, ¿por qué no?).

Turpial es y seguirá siendo libre. Esa es nuestra consigna y es parte del Zen de Turpial.



¿Se extenderá Turpial a otras redes sociales como el chat de Facebook, IRC o algo de ese estilo?

Por los momentos el único soporte oficial que tenemos es para Twitter e Identi.ca. Sin embargo, estuvimos en conversaciones con César Cotiz para incluir soporte oficial a Plaxed y estamos analizando el soporte para Status.net. Estas dos redes muy probablemente estarán en versiones futuras.

Para el resto de redes sociales estaremos intentando habilitar un sistema de plugins que permita extender la aplicación, pero por nuestra parte no tenemos intenciones de agrandar más el core de Turpial.



¿Cual es la funcionalidades de Turpial que la gente menosprecia mas o que la mayoría desconoce?

La característica que la gente más denigra es la interfaz gráfica, sobre todo la imposibilidad de hacer clic directamente en los enlaces, hashtags o perfiles. Lamentablemente Gtk tiene sus limitaciones y tuvimos que ajustarnos a ellas, es por eso que Turpial 2.0 fue pensado con base en Webkit y así hemos venido trabajando. El cambio en apariencia es simplemente enorme.


¿Cuantas personas trabajan en este proyecto, esas que tu considerarias "Core contributors"?

Actualmente tres: Carlos Guerrero (@guerrerocarlos), Andrea Stagi (@4ndreaSt4gi) y yo (@satanas82).


¿Como pudieran identi.ca y twitter colaborar con Turpial?

Es una pregunta bastante difícil, creo que la mejor forma de colaborar con Turpial (y con cualquier cliente de terceras partes) es tratando de mantener una API estable a lo largo del tiempo y minimizando los controles o reglas que establecen para los terceros.



Aprovechando un la oportunidad aproveche de hacerle unas preguntas un poco mas personales y ya dejando a Turpial de lado, aquí les dejo esta segunda parte de la entrevista a Wil Alvarez.

¿A que edad y como aprendiste a programar?

Empecé a los 18 años. Mi sueño siempre fue hacer juegos de computadoras y por eso aprendí. En una época desarrollé unos cuantos juegos usando Pygame pero aún no siento mi sueño realizado.


¿Que es lo que mas te consume tiempo de Turpial, esas tareas que quisieras delegar?

Principalmente las que yo llamo "tareas administrativas o de relaciones públicas". Todo lo que es responder correos, atender consultas, escribir noticias, artículos de la wiki; son cosas que me gusta hacerla, sobre todo responder correos, pero el tiempo no me da para todas. Me gusta responder a los usuarios porque de esa forma se rompe un poco esa barrera entre el usuario y el programador, le demuestro a la gente que estamos a la distancia de un correo, que los escuchamos y que realmente nos interesa y nos nutren sus opiniones.


¿Trabajas en otros proyectos que nos puedas comentar un poco?

En estos momentos mi empleo me está consumiendo gran parte del tiempo así que no he podido dedicarme a otras cosas. Tengo pendientes un par de proyectos y algunos juegos (sobre todo cosas tipo frameworks) para generar aplicaciones pero todo eso está en stand-by.

¿identi.ca o Twitter?

Twitter.


¿Entiendo que actualmente estas en Argentina, como ves la movida del software libre y la comunidad por alla?

Bueno, estuve en Argentina hasta hace una semana (ahora estoy en Chile) pero la movida del SL es muy interesante, la comunidad de Python de Argentina es una de las más activas que he podido conocer y tiene un montón de desarrolladores de gran nivel (o "grosos", como dirían allá). También tienen una comunidad de Mozilla bastante activa y pues, el SL se mueve un montón allá.

En estos días me toco recuperar mi VPS vía consola remota, al revisar el /var/log/messages me di cuenta de el Out of Memory Killer (OOM Killer) había hecho de las suyas al quedarse sin memoria. Luego de analizar detenidamente los logs y me di cuenta que fue una combinación de factores, Google, Yahoo y Yandex me estaban indexando tanto este blog como unos foros de autos que alojo en este servidor al mismo tiempo.

El script para descargar torrents estaba corriendo al igual que el torrent tracker y alguien me estaba haciendo flood vía IRC en freenode puede había dejado irssi conectado.

El OOM Killer tiene un algoritmo que decide que procesos son los mejores para aniquilar sin embargo es posible manipular estos valores y dejarle saber al OOM Killer que procesos prefieres que mate primero. Para automatizar esta tarea hice un script que nos ayudara con esta tarea:

for programas in SCREEN irssi top
  do for pid_of_oomk_candidate in `pidof -x $programas`
    do echo 10 > /proc/$pid_of_oomk_candidate/oom_adj
    done
 done

Como ven el script anterior agrega 10 al OOMK score a los procesos que menos me interesan permanezcan vivos cuando me quede sin memoria mientras que el siguiente hará exactamente lo contrario, mantendrá vivo un poco mas estos procesos:

for programas in mysqld portsentry iptables
  do for pid_of_oomk_candidate in `pidof -x $programas`
    do echo -5 > /proc/$pid_of_oomk_candidate/oom_adj
  done
done

echo -17 > /proc/`pidof -s sshd`/oom_adj

En este ultimo mysql portsentry y iptables tendrán cinco puntos de ventaja en relación con el resto de los candidatos y si se fijan en la ultima linea estamos asegurándonos que sshd no sea candidato bajo ninguna circunstancia.


Automatizar el ajuste del score para el OOM Killer

Ahora unifiquemos estos dos scripts y demosle un poco mas de flexibilidad, estoy seguro que hay gente que prefiere asignarle a irssi un valor distinto de screen. Lo primero que necesitaremos es un script de configuración, vamos crearlo en /etc/candidatos_oomk.conf y el contenido se debería de ver algo así:

# Programas que queremos sacrificar, entre mas alto el valor
# mas peso tienen en la lista de candidatos.
irssi 4
SCREEN 3
smtpd 2
apache2 1

# Programas que queremos salvar, estos tendrán valores negativos
portsentry -2
mysqld -5
sshd -17

El script al que le puse de nombre oomk_adj_candidatos.sh se veria algo asi:

#!/bin/bash
CONFIGURACION="/etc/candidatos_oomk.conf"
while read programas
  do  proceso=`echo $programas |grep -v \# | grep [0-9]$| awk '{print $1}'`
  ajuste=`echo $programas |grep -v \# | grep [0-9]$| awk '{print $2}'`
  if [ -z "$proceso" ] then
    continue
  else
    echo $proceso
    for pids_proceso in `/bin/pidof $proceso`
      do echo "    echo $ajuste > /proc/$pids_proceso/oom_adj"
    done
  fi done < $CONFIGURACION

El script es simple, leemos el archivo de configuracion linea por linea separamos el nombre del proceso del ajuste que le vamos a hacer guardando cada valor en las variables $proceso y $ajuste. Evaluamos si la variable $proceso esta vacía, y de ser así seguimos con la próxima linea, de lo contrario continuamos procesando esa misma linea. Obtenemos el PID del proceso usando pidof y para cada PID vamos escribir el valor de $ajuste en su archivo oom_adj dentro de /proc.

Pueden colocar este script en su /etc/rc.local o en un cronjob y recuerden que si quieren consultar la lista de candidatos y ver como están sus scrores o saber un poco mas del tema, pueden consultar este articulo: El OOM Killer y manipulación de candidatos.

Desde hace algunos años la tecnología de virtualización cada vez toma más auge. Muchas personas contratan servicios de VPS porque pueden tener todas las ventajas de administración de un root por un precio muy bajo. No todo es bueno, ya que con la tecnología de virtualización se pierden recursos, ya que estos están limitados (Memoria, CPU, Disco), ya que el servidor físico puede ser compartido por innumerables servidores virtuales (y compiten recursos de la misma, como es el caso de OpenVZ).

La configuración que viene por defecto del MySQL en la mayoría de las distribuciones de GNU/Linux trae parámetros por defecto para servidores físicos, al instalarse en un VPS, el mismo, si no se le hace una buena afinación podría colapsar. Me sucedió recientemente que el MySQL que trae por defecto Debian Wheezy si se generan varias instancias cuelga a un VPS de 512 MB de RAM. Para poder generar los ajustes, conseguí una herramienta que aliaza el rendimiento llamada Tuning-Primer , de Matthew Montgomery, un pequeño script en bash que te da consejos para establecer algunas variables de la configuración, basándose en los parametros que proporciona el servidor.

Su instalación es sumamente sencillo, solo requiere que tengamos un usuario/password en la base de datos y el programa bc instalado:

# wget http://www.day32.com/MySQL/tuning-primer.sh
# chmod u+x tuning-primer.sh
# ./tuning-primer.sh

Un ejemplo del reporte de esta herramienta es la siguiente:

— MYSQL PERFORMANCE TUNING PRIMER —
– By: Matthew Montgomery –

MySQL Version 5.5.24-4 x86_64

Uptime = 0 days 12 hrs 17 min 4 sec
Avg. qps = 0
Total Questions = 22445
Threads Connected = 1

Warning: Server has not been running for at least 48hrs.
It may not be safe to use these recommendations

To find out more information on how each of these
runtime variables effects performance visit:
http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html
Visit http://www.mysql.com/products/enterprise/advisors.html
for info about MySQL’s Enterprise Monitoring and Advisory Service

SLOW QUERIES
The slow query log is NOT enabled.
Current long_query_time = 10.000000 sec.
You have 0 out of 22466 that take longer than 10.000000 sec. to complete
Your long_query_time seems to be fine

BINARY UPDATE LOG
The binary update log is NOT enabled.
You will not be able to do point in time recovery
See http://dev.mysql.com/doc/refman/5.5/en/point-in-time-recovery.html

WORKER THREADS
Current thread_cache_size = 8
Current threads_cached = 1
Current threads_per_sec = 0
Historic threads_per_sec = 0
Your thread_cache_size is fine

MAX CONNECTIONS
Current max_connections = 128
Current threads_connected = 1
Historic max_used_connections = 2
The number of used connections is 1% of the configured maximum.
You are using less than 10% of your configured max_connections.
Lowering max_connections could help to avoid an over-allocation of memory
See “MEMORY USAGE” section to make sure you are not over-allocating

INNODB STATUS
Current InnoDB index space = 0 bytes
Current InnoDB data space = 0 bytes
Current InnoDB buffer pool free = 98 %
Current innodb_buffer_pool_size = 128 M
Depending on how much space your innodb indexes take up it may be safe
to increase this value to up to 2 / 3 of total system memory

MEMORY USAGE
Max Memory Ever Allocated : 173 M
Configured Max Per-thread Buffers : 344 M
Configured Max Global Buffers : 168 M
Configured Max Memory Limit : 512 M
Physical Memory : 496 M

Max memory limit exceeds 90% of physical memory

KEY BUFFER
Current MyISAM index space = 9 M
Current key_buffer_size = 16 M
Key cache miss rate is 1 : 158
Key buffer free ratio = 67 %
Your key_buffer_size seems to be fine

QUERY CACHE
Query cache is enabled
Current query_cache_size = 8 M
Current query_cache_used = 3 M
Current query_cache_limit = 1 M
Current Query cache Memory fill ratio = 48.41 %
Current query_cache_min_res_unit = 4 K
MySQL won’t cache query results that are larger than query_cache_limit in size

SORT OPERATIONS
Current sort_buffer_size = 2 M
Current read_rnd_buffer_size = 256 K
Sort buffer seems to be fine

JOINS
Current join_buffer_size = 132.00 K
You have had 0 queries where a join could not use an index properly
Your joins seem to be using indexes properly

OPEN FILES LIMIT
Current open_files_limit = 65562 files
The open_files_limit should typically be set to at least 2x-3x
that of table_cache if you have heavy MyISAM usage.
Your open_files_limit value seems to be fine

TABLE CACHE
Current table_open_cache = 32712 tables
Current table_definition_cache = 400 tables
You have a total of 101 tables
You have 101 open tables.
The table_cache value seems to be fine

TEMP TABLES
Current max_heap_table_size = 16 M
Current tmp_table_size = 32 M
Of 1117 temp tables, 30% were created on disk
Effective in-memory tmp_table_size is limited to max_heap_table_size.
Perhaps you should increase your tmp_table_size and/or max_heap_table_size
to reduce the number of disk-based temporary tables
Note! BLOB and TEXT columns are not allow in memory tables.
If you are using these columns raising these values might not impact your
ratio of on disk temp tables.

TABLE SCANS
Current read_buffer_size = 128 K
Current table scan ratio = 17 : 1
read_buffer_size seems to be fine

TABLE LOCKING
Current Lock Wait ratio = 0 : 22724
Your table locking seems to be fine

Por ejemplo, yo para un VPS con 512 de RAM (que corre únicamente MySQL) usé la siguiente configuración en el /etc/mysql/my.cnf

max_connections=128
wait_timeout=30
thread_cache_size=8
table_cache=32712
key_buffer_size=16M
query-cache-type=1
query_cache_size=8M
tmp_table_size=32M

Esta herramienta es más efectiva si se correo luego de tener más de 48 horas prestando servicio. Si se logra optimizar el MySQL en un VPS se puede lograr aprovechar el máximo de los recursos sin temer que en algún momento pueda dejar de prestar servicios.

Mas de una vez he intenten ejecutar sl cuando intentan ejecutar ls para listar archivos y directorios, es un error que todos cometemos pero ¿que pasaria si sl en realidad fuese un comando?. Afortunadamente para nuestro entretenimiento hay una aplicación de nombre sl y consiste en un tren ascii que sale en el terminal cada vez al momento de ejecutar sl. Perfecto para una broma practica, instalarlo en un servidor que muchas personas usan y esperar a escuchar los cuentos.

Aquí les dejo un video que muestra como instalarlo y como se ve al momento de ejecutarlo.


En caso de que no puedas ver el video, puedes instalar esta aplicación ejecutando:

su - yum install -y sl

Como ven es inofensivo, o por lo menos menos inofensivo que un ualias a rm -Rf /*, de hecho un compañero de trabajo fue el que me comento sobre esta broma practica. La aplicación sl esta disponible para OSX a través del manejador de paquetes brew.