«Me siento muy orgulloso de que Tricky, Massive Attack o Chemical Brothers hayan permitido que sus discos se hayan estrenado mundialmente en Siglo XXI antes que en ningún rincón del mundo. También es verdad que todos estos artistas encontraban asombroso que hubiera una emisora que a las once de la mañana y en difusión nacional pusiera sus canciones.»
— Tomás Fernando Flores.
Los enamorados de Radio 3 de Radio Nacional de España somos unos sufridores. Nos hemos acostumbrado ya a vivir permanentemente con una corazonada agorera. Cada vez que el gobierno del país cambia de signo, cada vez que hay un nombramiento en RTVE… nos ponemos en lo peor. «Ya está», nos decimos. «Ahora sí; esto se acaba».
En estos días el corazón se nos estruja un poquito otra vez. Hablan los papeles de cambios gordos que se avecinan en Radio 3, cambios de personas y cambios de ideas, y a ninguno nos sorprende.
Parece que no se habla de cerrar la emisora, cierto. Pero, ¿qué diferencia hay entre cerrarla y mantenerla abierta con el mismo nombre pero cambiando completamente los contenidos? Manel Fuentes no tiene ningún sentido en Radio 3. No es una cuestión de calidad —el señor Fuentes es muy competente haciendo lo suyo— sino de oportunidad. Es como si Ramón García empezase a escribir guiones para las historietas de El Jueves.
Estas son las 3 razones por las que RTVE y el gobierno deberían conservar Radio 3 con el mismo espíritu que tiene desde hace 30 años:
- No existe una alternativa a Radio 3.
Sencillamente, en España no hay otra programación a nivel nacional siquiera parecida a la de Radio 3. Desde el punto de vista de la variedad, hacerla desaparecer sería más desastroso que hacer desaparecer La Ser, La Cope, Cadena Dial o incluso Radio 1 de RNE, puesto que al menos los tipos de contenidos de estas cadenas se pueden encontrar en otras emisoras, en casi todos los casos. Radio 3 es el único estandarte convincente en contra de las radiofórmulas, los patrocinios encubiertos, las listas de ventas, las modas de quince minutos, el conservadurismo cultural, el conservadurismo a secas, el papanatismo musical y los envoltorios histriónicos de los medios de masas.
- Radio 3 es prácticamente el único valor que algunos recibimos a cambio de nuestra contribución a RTVE. Y aún así Radio 3 es extremadamente barata.
¿Que Radio 3 no es viable económicamente? Vamos a ver eso. En «El Ente» llevan años rasgándose las vestiduras por la baja audiencia de los programas de Radio 3 en comparación con programas mainstream de otras de sus cadenas. Parece evidente que Cuando los Elefantes Sueñan con la Música siempre va a tener menos audiencia que el magacín de la mañana de Radio 1. Pero, ¿cuáles son los costes de producción de uno y otro? Dado que en RNE no hay apenas hay publicidad, el único criterio económico de viabilidad debería ser el coste relativo, en oyentes/€. Pero en cualquier caso, y dado que RTVE es un «servicio público» en teoría ajeno a intereses comerciales, el económico no debería ser nunca el único criterio a aplicar. Por otro lado, el propio carácter selectivo de los oyentes de Radio 3 hace que estos apenas consuman muchos otros productos de RTVE que están dirigidos a un público mucho más amplio.
- La cultura y la música en España sufrirían si Radio 3 desapareciese.
Muchos aspectos de la cultura y muchas tendencias musicales tienen en Radio 3 su único eco con cierto alcance. La música indie no quiere que Radio 3 cambie. Las contracorrientes tampoco; la vanguardia musical, las artes plásticas, la tecnología, los músicos que terminan su primera maqueta, los performers, los pequeños festivales, también los festivales grandes, las músicas del mundo, la poesía, el country, el silencio, la música brasileña, el jazz… incluso la UNED confía en Radio 3.
On Sunday, two videos that struck me recently.
One video for the left hemisphere of your brain. Mathematics, Japan and genius. Part of a documentary about the amazing Daniel Tammet.

The second video is aimed at your right hemisphere. So much beauty and so many ways to invoke it. Imogen Heap knows a few of them.

The other day I wanted to have an overview of the size of a software project I’m working on. The project is relatively big and involves quite a few languages and technologies spread among different tiers. Because I just joined the team there are tons of lines of code already written that I have not even seen. So I felt the need to have at least a grasp of the size of the codebase for each language and learn how programming languages compare among them within the project.
I came up with this very simple Bash script, getSizeStats.sh. It expects one or more directories as parameters. It finds all regular files contained in the trees that hang from those directories. It then adds up LOC for all files, grouping by the extension of the filenames. The script assumes that the arguments are, or might be, local copies of Subversion repos (that’s why it excludes .svn directories). While running, the output line shows a counter for the number of files as they are processed. Once finished, a list of LOC for each language (i.e. file extension) sorted by LOC is created in /tmp/getSizeStats.sh.out.
#!/bin/sh
TMP_DIR=/tmp/`basename $0`
TMP_OUTPUT_FILENAME=/tmp/`basename $0`.tmp
OUTPUT_FILENAME=/tmp/`basename $0`.out
if [ -d $TMP_DIR ]; then
rm $TMP_DIR/* 2> /dev/null
else
mkdir $TMP_DIR
fi
COUNTER=0
find "$@" -name "*.*" | grep -v \.svn | while read j; do
if [ -f "$j" ]; then
cat "$j" >> $TMP_DIR/`echo $j | rev | cut -s -d "." -f 1 | cut -d "/" -f 1 | rev`
COUNTER=$((COUNTER + 1))
echo -en "\r$COUNTER files "
fi
done
if [ -f $TMP_OUTPUT_FILENAME ]; then
rm $TMP_OUTPUT_FILENAME
fi
for i in `ls $TMP_DIR`; do
echo -e "`wc -l $TMP_DIR/$i | cut -d " " -f 1` $i\t`wc -l $TMP_DIR/$i | cut -d " " -f 1`" >> $TMP_OUTPUT_FILENAME
done
sort -nr $TMP_OUTPUT_FILENAME | cut -d " " -f 2- > $OUTPUT_FILENAME
rm $TMP_OUTPUT_FILENAME
echo processed -- see $OUTPUT_FILENAME
# EOF
(I think that for some versions of echo you’ll have to remove the option -e or it won’t work properly).
The only serious problem I found were filenames containing blanks and other characters that usually need to be escaped (bad naming, I know — it wasn’t my idea). I played with different types of quoting and tried to find a workaround for that. Real-time help about that from @enlavin and @nauj27 was much appreciated. I tried that find -print0 | xargs -0 … thing but couldn’t make it work as I needed. Eventually the while read j; do … approach worked. (I confess that I still get confused easily by the subtle differences between quoting variants and how variables get expanded in each case. I ought to find some time to learn that well, once and for all).
Now there are so many things to improve here. First of all, the script does not tell binary files from text files, i.e. you will also get counts of “lines of code” for all binary assets within your project, such as object files and images. It should also discard all text files that are not source code, e.g. a CHANGELOG. It should be robust to case variations, i.e. group .java and .JAVA files together. It should rely on something more sophisticated than filename extensions to tell programming languages, because you probably want to count your .cpp and .c++ files as a whole.
I was planning to better it adding those fixes/improvements and others. Then Golan told me of sloccount, a command that does just what I need. But proper.
Here you have an example of how getSizeStats.sh works. After re-inventing the wheel, I couldn’t but run my own script… against the source code of sloccount itself.
$ svn co https://sloccount.svn.sourceforge.net/svnroot/sloccount sloccount-src > /dev/null
$ ./getSizeStats.sh sloccount-src/
38 files processed -- see /tmp/getSizeStats.sh.out
$ cat /tmp/getSizeStats.sh.out
c 4493
orig 3899
html 3032
1 235
dat 197
l 171
rb 152
lhs 59
spec 56
h 50
CBL 31
php 27
inc 23
pas 21
hs 19
gz 10
f 10
cs 8
f90 7
cbl 4
tar 1
Teorema Del Ánimo Inducido:
«Para cualquier grado de cansancio acumulado c, hora intempestiva h y tarea importante e inaplazable t existe al menos un par {e, v} con e estilo de música y v volumen que hace t soportable.»
Conjetura Del Masoquista (no demostrada):
«Además, siempre existe al menos un par {e, v} que hace t placentera.»
Teorema De Friquismo No-Anulable:
«No importa cuan grandes sean c y h, siempre es posible encontrar al menos una parida p que necesite ser blogueada antes de acometer t.»