viernes, 29 de agosto de 2008

Y luego llegas tu

Estaba en el salon de clase, contestando preguntas.
Estaba en el recreo, platicando con mis amigos.
Recorde a Daisy, una perrita que perdimos.
y pensé en lo bonito de tener mascotas,
un perro, un pez o una tortuga.

Un murcielago? je! no lo creo..

Sali un rato para ir al super
y vi a un viejo que dice
El trabajo Es la vida.

Bueno, solo compre galletas.

Fui a tokio a comprar una guitarra.
Llovia, mi garganta dolia.

Cantaba algo de la costa este,
de un adios y de un como estas.
Que ha sido de ti?

Luego escucho el zumbido del ventilador.

Empieza una cancion.

Y luego llegas tu, solamente tu.
Y te ves tan transparente,
Fuera de lo normal, casi irreal.

Espectacular.

lunes, 18 de agosto de 2008

Cuando presiono el boton de play.. Part Une

Me gusta la música y me gusta trabajar escuchándola, me gusta la música ochentera, noventera y actual, y no es precisamente un cumplido para los de kissfm, una radiofusora por Internet española (www.kissfm.es) solo que no tengo un género musical preferido, es complicado, simplemente una canción me gusta y ya está.

Cuando llego por las mañanas al taller donde trabajo, si es que voy en la mañana, lo primero que hago cuando prendo la computadora es poner música, si no es que ande muy ocupado. Por lo general solía escribir la dirección del archivo asf de ésta radiofusora como argumento del mplayer, hubo un tiempo en que me lo supe de memoria. Pero los tiempos cambian, la gente cambia y escribir una dirección http de más de una línea en la terminal no es muy cómodo que digamos. Fue cuando decidí hacer un script de bash. El script contenía algo como esto:

#!/bin/bash
mplayer -cache 40 http://win80il.audiovideoweb.com/ny60winlive7001

Lo guardé como kissfm y le di permiso de ejecución:

# chmod a+x kissfm

Entonces, cada vez que quería escuchar esa estación hacía:

$ ./kissfm

Y las bocinas empezaban a sonar con la transmisión placentera de ésta radiofusora española, que igual y una vez escuché al lado de U2 con It's a beautiful day, y de Bob Marley con Redemption song, una canción de los Apson.

Por aquél entonces, había diseñado un prototipo que hacía de interfaz entre una PC y una pequeña placa electrónica con 16 salidas con opción de salida de potencia y un teclado matricial de 4x3 que me daba 12 entradas digitales mediante push-buttons. También había destripado una vieja casetera de esas donde antes veíamos las películas en cartuchos VHS, y le había puesto una tarjeta madre Via con procesador integrado C3-Samuel. No corría tan rápido y en realidad ni siquiera podía decodificar avis o divxs decentemente. Eso si, el audio nunca me fallaba. Le instalé un Debian mínimo, con kernel 2.6.18-5, el xfce, apache, postgresql y trabajaba en él escribiendo pequeños artículos, pequeños programas en c y escuchando música. Era mi estación de trabajo.

Un par de años atrás había hecho un proyecto parecido, solo que esa vez metí una tarjeta madre de servidor, que MQTC (mola que te cagas), je!.. Eran buenos tiempos.

La vídeo casetera, como cualquier otra de su tiempo, de su buen tiempo, contaba con un panel frontal de 12 botones mas el botón de encendido, que era mecánico. Me las agencié para adaptarle el botón de encendido de la tarjeta madre al panel de la vídeo casetera, y para aislar y soldar los siete cables que manejaban a los 12 push-buttons. Los conecté al puerto paralelo de la tarjeta madre mediante un cable de impresora, que planee durante mucho tiempo sustituir por uno IDE, pero nunca conseguí un conector DB25 (sic) y me dispuse a escribir un programa.

El programa final imprimía el botón presionado de la forma x,y en la terminal virtual. Entonces se me ocurrió que al presionar el botón de play, sintonizara la estación de kissfm. Y así lo hice:

system("/home/tio/kissfm");

Y funcionó. Cuando yo presionaba el botón de play, se escuchaba alguna canción de Scorpions o de Jarabe de palo por las bocinas, servidas desde algún lugar remoto del globo, generadas desde alguna cabina de radiofusión en España.

Todo estaba bien, excepto que para poder usar el botón play, había que ejecutar el programa primero, luego presionar el botón, y al final mi terminal virtual quedaba ocupada por la salida del mplayer. Tenía que hacer algo para no tener que iniciar cada vez el programa de los botones.. Que tal un demonio? Si. Lo colgaría de algún nivel del init y cada que quisiera escuchar la radio, solo presionaría el botón, sin necesidad de ejecutar ningún comando.

Me dispuse a programar el demonio. Primero el fork, luego terminar el proceso padre, el setsid, umask, chdir, cerrar el stdin, el stdout, el stderr y crear la función que controla los botones presionados del panel y obra en consecuencia. Compilé y ejecuté. Todo bien. Presioné Play y oh sorpresa, de las bocinas no salía más que la voz del silencio, y como sabrán, no habla mucho que digamos.

Entonces me acordé de la salida del mplayer. Obviamente éste programa utiliza stdout, y si yo lo cerré, mplayer no puede hacer mucho. Así que hice una prueba, abrí el código con nano:

$ nano 12lind.c

Y comenté la línea que cierra el stdout:

/* close(STDOUT_FILENO); */

Guardé, compilé y ejecuté:

$ gcc -o 12lind 12lind.c
$ su
# ./12lind

Las bocinas cantaban algo que me sonaba a shampoo, y mi terminal aún estaba ocupada por la salida del mplayer. Hasta aquí, cerrar el stdout no era opción, y mantenerlo abierto, tampoco, entonces, la solución era un punto intermedio, dejar el stdout abierto, pero no utilizarlo. Weird.

Cómo lograrlo? Aquí me puse a escudriñar en el manual del mplayer:

$ man mplayer

Me encontré con los controles de teclado, lástima que ya he cerrado el stdin. Encontré un argumento, que hace que la salida no sea tan explícita, es decir, no muestra el tiempo transcurrido, los frames decodificados ni el estado del buffer, perfecto hasta aquí. Me puse a editar el script que sintoniza la radio hasta que quedó algo parecido a esto:

#!/bin/bash
mplayer -quiet -cache 40 http://win80il.audiovideoweb.com/ny60winlive7001

Luego maté el demonio que estaba corriendo y lo inicié de nuevo:

# ps aux | grep 12lind
# kill 2245

Y 12lind murió. Volví a ejecutarlo:

# ./12lind

Presioné Play en el panel de la vídeo casetera y la salida del mplayer fue idéntica a excepción del monitor del buffer, el tiempo transcurrido y algunas otras cosas. Un par de enters y mi terminal quedó usable otra vez. Ahora lo que quería hacer desde el principio. Cómo hacer que al presionar el botón Play encienda la radio sin necesidad de ejecutar ningún programa, ni siquiera iniciar sesión? Simple.

En cualquier Debian, en /etc/init.d hay un archivo que se llama skeleton. Es perfectamente modificable y permite hacer el script de inicio para algún servicio que necesitemos en nuestra computadora, como en mi caso, que necesito un servicio que maneje un teclado matricial mediante el puerto paralelo para poder escuchar mi radio feliz y contento. Sólo se necesitan configurar un par de cosas, el nombre del ejecutable y una pequeña descripción, claro aparte del path donde se encuentra el ejecutable. Copié skeleton a 12lind, lo edité, y le di permiso de ejecución:

# cp /etc/init.d/skeleton /etc/init.d/12lind
# nano 12lind
# chmod a+x 12lind

Copié 12lind a /sbin y colgué el script 12lind del nivel 2 del init:

# cp 12lind /sbin
# ln -s /etc/init.d/12lind /etc/rc2.d/S91lind

12lind se ejecuta al final de todo. No muestra errores y simplemente muere si falla. Sólo puedo saber si está vivo mediante ps aux o ps -ef y se inicia cuando entro en el runlevel 2, que es el default en mi máquina:

# init 2

Cada vez que llego a mi taller, enciendo mi computadora, mientras reviso si hay algún trabajo pendiente, presiono el botón Play del panel de la vídeo casetera que tengo por computadora, y un par de segundos después, me deleito con Sweet child of mine de Guns and Roses, o alguna canción de Queen, Luego escucho el reporte de tráfico de alguna carretera un tanto lejana y las recomendaciones de presidencia para regresar con bien en éstas vacaciones de navidad o semana santa.

martes, 12 de agosto de 2008

Porque

por callar lo que pienso, y gritar lo que no debo,
por entender lo que pocos, por ignorar lo que nadie..
por estar donde nadie, por desconocer lugares comunes..
por no haber sentido lo que la mayoria, por sentir como nadie..
por estar como ahora, por no estar, como siempre..

por ser tan diferente, por ser tan poco comun..
por reconocer lo que pocos se atreven,
por recordar tan poco, por soñar tanto y recordar el futuro..
por soñar tan despierto, por vivir tan dormido..
por hacer tan poco, por pensar tanto..

por estar ahi, y no estar cuando es necesario..
por no hablar, y por hablar de mas..
por pensar y no hacer, por hacer y no pensar..
por dejar, por vivir..
por vivir, por sufrir, proteger y dormir..

por.. que?

Mariana H

Mariana H.

Y entonces la escuche. Con su indiferencia,
sarcasmo y todo lo demas. Haciendo gala de
Imagine, interpretada no por el Beatle de
lentes redondos, sino por Avril Lavigne.

Y Yo enmedio de aquel empedrado, recordando
sabados de madrugada, aunque era domingo.

Recordando tiempos pasados en un vehiculo
evolucionado.. Con tantas rocas sobre mi
cabeza, con esas lajas y bolas que me
recordaron el cerro colorado. Se habra caido ya?

Esa carita, esa mirada soñadora, mirando..
No lo se. Hace mucho que no la leo..
Y un tanto mas que no escribo..

sábado, 9 de agosto de 2008

Cansado

Cansado de esperar.
Cansado de escuchar.
Cansado ya de ver.
Cansado de apoyar.
Cansado de ayudar.
Cansado de aspirar.

Cansado porque nunca llegas.
Cansado porque tu no me escuchas.
Cansado porque nunca me miras.
Cansado porque tu no me apoyas.
Cansado porque nunca me ayudas.
Cansado porque nunca lo logro.

miércoles, 6 de agosto de 2008

Nada que perder

Y fue como el final de una pelicula,
de las que me gustan, ironicas,
camine hacia la salida y me encontre
como al principio.. solo.

y senti eso en el estomago,
senti qe habia perdido,
que otra vez no gane.

y porque el miedo?
y porque el temor?

porque se fue, porque no le vere..
porqe otra vez,
estoy como al principio.

Sin nada que perder..
.. y todo que ganar.

martes, 5 de agosto de 2008

Hello world!!

Con este post inicia

Lo que piensas cuando haces lo que nunca dices..

Agosto 5 de 2008