«La ingeniería de las flautas», en el Cuaderno de Cultura Científica

A lo largo de esta semana, el Cuaderno de Cultura Científica ha estado publicando en cinco entregas un artículo en el que, casi desde primeros principios, explico el funcionamiento de uno de los instrumentos de viento claves en la orquesta moderna, así como en música de cámara, jazz o incluso rock: la flauta travesera. Aquí tenéis recopilados los enlaces a las cinco partes.

¡Espero que lo disfrutéis!

Bola extra: si os ha interesado el tema del funcionamiento de la flauta, no dejéis de ver este documental de la serie «How It’s Made» sobre la fabricación de una flauta moderna. ¡Fascinante!

 

Balance. Punto y seguido

He sufrido una pequeña pausa involuntaria en mis actividades debido a una irrupción inesperada de la vida real en forma de neumonía. Algo que antes llamaban “pulmonía” y de lo que la gente se moría más frecuentemente que no. Yo tengo suerte de vivir en un país donde todavía tengo derecho a una atención sanitaria decente, donde un médico de urgencias pudo indagar en mi aparente ausencia de síntomas (ni siquiera una tos, sólo fiebre como para hacer overflow en el micro del termómetro digital), hacerme unas radiografías y dejar la cosa en una noche en blanco con paracetamol, nolotil y levofloxacino en vena. Ahora me empastillo a las horas convenidas, bebo agua en cantidad y descubro la existencia real de la flema inglesa. Es decir, ya estoy mejor.

En una situación así hay tiempo para plantearse asuntos sin resolver. Uno de ellos, la existencia y continuidad de este blog. ¿Por qué no? Después de todo, tenía pesadillas increíbles cada vez que cerraba los ojos. ¿Por qué abrí este blog, por qué sigo escribiendo? Con las nieblas de la fiebre todo estaba curiosamente más claro que ahora. Brucknerite existe por dos motivos: autodocumentación y vanidad. Documentar mis pensamientos, ocurrencias y proyectos me sigue pareciendo ahora tan interesante como antes; en todo el tiempo que llevo haciéndolo ya he tenido ocasión de volver sobre mis pasos para consultar mi propio blog en varias ocasiones valiosas. Desafortunadamente, no resulta tan útil como había esperado en un principio: escribir sobre temas que me inquietan hace mucho por fijar las cuestiones relevantes en mi mente, y muchas veces recuerdo el dato crucial o el argumento epatante al mismo tiempo que el hecho de haberlo hecho constar aquí.

Así, apuntemos un fracaso parcial en ese campo. ¿Y en el otro? La vanidad, claro. Porque una cosa es escribir, y otra es publicar. Es obvio que no publico para autodocumentarme, sino para que otros (¿tú?) leáis y penséis: “vaya, alguien con algo que decir”. ¿He conseguido algo en este aspecto?

Poca cosa. Es cierto que no publico estadísticas, ni siquiera un triste contador, porque tengo cierto pudor y un curioso sentido de la elegancia. Revelaré, eso sí, que esta bitácora recibe las apreciadas visitas de un círculo muy reducido de lectores. Si decidiera implantar una campaña de AdWords aquí, probablemente conseguiría mis primeros cien euros para mayo de 2060; voluntariamente, no me visita ni mi mujer (y doy fe de que nuestra relación pasa por un momento extraordinario que dura ya ¿tanto? Vaya.) Ni siquiera tengo un troll residente, a pesar de un ateísmo recalcitrante que —eso sí— me ha ganado algunos comentarios divertidos. Después de todo, no hablar (casi nunca) de actualidad, (nunca) de fútbol o (jamás de los jamases) de Fórmula 1 puede tener su precio. Para remachar el clavo, no soy capaz de describir competentemente la temática de este sitio. ¿De qué hablo? Más vale dejarlo estar, y apuntar un fracaso completo en la casilla de “convertirse en líder de opinión”.

Fracaso y medio, y el veredicto es unánime. Brucknerite seguirá tanto tiempo como me divierta. ¿No llego a portada de Menéame? Pues vale. ¿Me visitan menos de veinte personas al día? Pues bueno. ¿De esos, se quedan y leen algo un 40%? ¡Eso es mucho! Suficiente para mí. Os dejo con un resumen de los momentos más (patéticamente) destacados de Brucknerite (capítulo recopilatorio, como los de las huelgas de guionistas).

  • Muy al principio y por accidente, mi pequeño blog me permitió descubrir en carnes propias el concepto de zeitgeist a cuenta de uno de los primeros artículos publicados, Las mejores torrijas del mundo (abril de 2007). Desde entonces hay una punta de visitas cada Semana Santa, sin fallar un año. Sin embargo, no hay acción tan inocente que no tenga su castigo, en este caso en forma de queja materna. Y es que las mejores torrijas del mundo son… las de mi suegra.
  • Los artículos sobre coches, aunque el tema me deja bastante frío, han sido bastante exitosos por aquí. La serie de Todos ecológicos (2, 3, 4 y 5) de octubre a noviembre de 2007, fue más comentada que de costumbre, aunque los artículos sobre el Toyota Prius (aquí el último) siguen estando en la lista de los más visitados.
  • En el hit-parade de Brucknerite no puede faltar este gris artículo: Netbeans 6 en español. ¿Por qué? Salvo meneos, suele ser el artículo más visitado desde Google, donde sale cuarto en la query netbeans 6 español. Lo triste de la cuestión es que el artículo explica que Netbeans no tenía traducción al castellano en aquel momento de 2008 (enero), así que no aclara nada a los visitantes, que rebotan como vacas locas buscando pastos más verdes.
  • La serie de artículos (1, 2, 3 y 4) en la que me dediqué a martillear con la almohada de plumas de mi ironía el concepto de “educación bilingüe” de la Consejería de Educación de la Comunidad de Madrid ha tenido bastante éxito, medible por el grado de animadversión personal que la dirección del colegio de mi hijo (y pronto de mi hija) creen que tengo con ellos. Nada más lejos de la realidad; aunque ¿quién soy yo para hacerme responsable de que otras personas se culpabilicen por una situación de la que son víctimas, no causantes? Nadie, nadie.
  • En un momento indeterminado de 2009, Daniel Marín, de Eureka, decidió que era buena idea enlazarme desde su blog, mi referencia principal de noticias y documentación en profundidad sobre cualquier cosa que vuele por encima de los 100 kilómetros de altura. Un gesto que me hace feliz y no deja, a la vez, de sorprenderme. (Nota: aprecio todos los enlaces, pero éste es el primero que recibí de un alpha-blogger que, además, se merece el calificativo.)
  • En julio de 2009 refuté, usando fuentes autorizadas y dando aviso previo, un artículo de la famosa bitácora La Aldea Irreductible en el que se hacían una serie de afirmaciones cuando menos peregrinas —hay quien diría magufas— acerca de la misión de la sonda soviética Luna 15 y su supuesta interferencia con el Apolo 11. El artículo de La Aldea… llegó a portada de Menéame con parabienes; el mío, pese a representar con exactitud los hechos tal y como ocurrieron, no tuvo trascendencia alguna y no mereció rectificación, refutación, simple debate o siquiera un acuse de recibo. De este lance aprendí que no es importante lo que escribas, sino quién seas, para que otros te escuchen.
  • En noviembre de 2009 mi amigo @jlbriones y yo rompimos el sistema de comentarios Disqus de este blog mediante un intercambio inacabable de respuestas y contra-respuestas a cuenta de un artículo sobre el agua en la Luna. Él defendía la teoría conspiranoica lunar, aunque sospecho que sólo para fastidiarme. Ojalá y los comentarios de por aquí siempre fueran tan divertidos.

Una enseñanza final:

Si lo construyes, puede que no vengan. Más vale que te diviertas mientras tanto.

Mis disculpas para Campo de sueños (de todas formas tampoco soporto la peli).

IntenseDebate vs. Disqus

Yes, today is one of those days —I awoke this morning with the itch. So I’m telling. Why did I install IntenseDebate on my blog and then, just 24 hours later, replaced it with Disqus? If the thought of externalizing comments on your blog has ever crossed your mind, you will surely have weighed these two particular options. You know they are roughly equivalent, feature-wise. I knew. I simply didn’t realize I’d have to take the drastic road and subject my fistful of readers to such instability due to a single un-feature of IntenseDebate.

IntenseDebate is a 7-bit ASCII service. Got it. I’m out.

Feature equivalence notwithstanding, I decided to go the IntenseDebate road due to two interesting factoids:

  1. It’s arguably prettier than Disqus. More so on the administrative side.
  2. A very high profile site, Change.gov (the temporary Internet home of none other than Barack Obama) used IntenseDebate to power blog post comments.

You may argue the first one, but the Obama one is difficult to ignore. I know, and all. No authority should be able to bend your perception of reality. But the fact remains that, having no prior experience with comment providers, there was no reality for me to bend. Change.gov designers might have considered all issues better than myself would ever do and thus have performed the right choice for me. Trouble was, they didn’t.

Although Change.gov has some non-English content for Spanish speakers, it remains mainly an English-centric site. I knew of IntenseDebate’s lack of support for internationalization (as an aside, it feels mildly funny to think on I18N from the perspective of a foreigner, which I am —sort of; for me, text always had those strange marks and squiggles). I did not realize that it was not just the UI that was English-only, and therefore would have to blend into my mainly Spanish-written blog: there is no support for extended characters. Wait, it’s worse still. There is partial support for extended characters. As in ‘they sometimes work, and sometimes don’t’. When commenting from the web form, all is fine and well; my (few) readers can express themselves with the full gamut of Spanish diacritics and honest-to-goodness correction. Reply-by-mail, largely the most useful feature of external commenting systems as I see it, is totally broken with unreadable thingies where ás, ós or even ñs would go. So no España on comments when replying by mail. Sorry, that’s a fail on my book. At least Disqus knew they would have to compete in an (again) international environment, where those tiny un-features can make or break a deal.

Mine’s broken. Hello, Disqus.

Aviso de servicio

Warning!
Warning!
Foto de badjonni

Este fin de semana he estado cambiando algunos detalles del blog. Hay para todos: nueva maquetación, limpieza de código, eliminación de componentes poco útiles… El cambio fundamental, desde vuestro punto de vista, es que he integrado un sistema externo de comentarios denominado IntenseDebate. Espero que funcione correctamente y que sus ventajas superen cualquier inconveniente que pueda aparecer. En cualquier caso, esperad cierta inestabilidad al principio.

Muchas gracias por vuestra paciencia.

Actualización: IntenseDebate me ha durado exactamente un día. Ahora estoy probando Disqus. Veremos si hay más suerte.

Ya es primavera en la blogosfera

Gracias a Ana, una redescubierta compañera de mi remoto pasado (bueno, del 2000, pero parece que ha pasado una eternidad, ¿verdad?) llegó a mi atención Tumblr, un scrapbook o cuaderno de notas en línea realmente fácil de usar. Permite anotar contenidos, enlaces a páginas completas, pequeñas citas, conversaciones, fotos y otros cachivaches desde cualquier lugar donde haya una conexión, y devuelve un feed RSS fácilmente integrable en lectores o bitácoras. Creo que puede enriquecer la experiencia de este blog, así que estoy probándolo en una nueva sección, tentativamente llamada “Cortes y recortes”.

Aprovecho también para probar un nuevo formato de tres columnas. Según mis análisis de tráfico, tan sólo un 5,16% de mis visitas corresponden a navegadores con una resolución de pantalla inferior a 1024 puntos en horizontal, así que por lo menos espero no hacer ilegible la página. Pese a todo, las maquetaciones a tres columnas siempre me han parecido excesivamente pobladas y complejas. Puede que observéis cambios mientras decido el formato final; como de costumbre, si algo no funciona, no dudéis en decírmelo.

De reformas

Una de las mejores formas de conseguir que se implemente una característica en cualquier sistema informático en el que estemos interesados es, simplemente, arremangarse y codificarla. Quizá sea este el motivo fundamental por el que prefiero que el código que pase por mis manos sea abierto: dado interés y (más importante) tiempo suficiente, puede conseguirse cualquier cosa.

Filosofía de altos vuelos con un fin un tanto trivial. El widget de lista de etiquetas de Blogger es un tanto pobre. Si no se mantiene una bitácora monotemática, o si simplemente se es tan disperso como yo, se acaba enseguida con una lista interminable; y toda lista con más de veinte elementos es peor que nada. Veamos cómo modificar de forma simple la plantilla de Blogger para obtener algo mejor.

Advertencia: haz una copia de seguridad de tu plantilla antes de editarla. Si no lo haces, vendrá el hombre del saco y se llevará tu blog.

Asumo que en el blog a retocar hay un widget de lista de etiquetas estándar de Blogger en algún sitio (si no, inserta uno). Después, accede a la pestaña de edición de HTML de la plantilla y selecciona la caja correspondiente para expandir el código de los widgets. Busca el widget de la lista de etiquetas: normalmente, se llamará Label1 o algo similar. Tendrá este aspecto:

<b:widget id='Label1' locked='false' title='Etiquetas' type='Label'>
<b:includable id='main'>
  <b:if cond='data:title'>
    <h2><data:title/></h2>
  </b:if>
  <div class='widget-content'>
    <ul>
    <b:loop values='data:labels' var='label'>
      <li>
        <b:if cond='data:blog.url == data:label.url'>
          <data:label.name/>
        <b:else/>
          <a expr:href='data:label.url'><data:label.name/></a>
        </b:if>
        (<data:label.count/>)
      </li>
    </b:loop>
    </ul>

    <b:include name='quickedit'/>
  </div>
</b:includable>
</b:widget>

Observamos varias cosas:

  1. Parece XML estándar. Hay HTML, marcas con un espacio de nombres llamado b, y otras marcas de otro espacio llamado data.
  2. En el espacio de nombres b, vemos marcas “de programa”:
    • widget: delimitador de widgets. Claro…
    • includable: es una subdivisión interna del widget, direccionable desde fuera. Tiene que haber una al menos. No la vamos a tocar.
    • include: sirve para incluir un includable, que se distinguirá por nombre (id).
    • if: todos sabemos programar, ¿no? La condición va en el parámetro cond.
    • else: la otra rama del if.
    • loop: lo mismo de antes. El parámetro values especifica la colección por la que se iterará (es como un foreach de Perl o uno de los bucles nuevos de Java 5). El parámetro var da el nombre de la variable que tomará, en cada vuelta, el valor de uno de los elementos de la colección.

    Más información sobre las marcas de widgets aquí..

  3. El espacio de nombres data sirve para denotar elementos de la página. Algunas marcas están disponibles para toda la plantilla, mientras que otras sólo lo están dentro de widgets específicos. Más información sobre las marcas de datos, aquí.

Ya estamos preparados para retocar el widget de lista de etiquetas. Introduciremos un límite de frecuencia para mostrar la lista (por ejemplo, un mínimo de 5 ocurrencias), y relegaremos el resto a un combo. Será sencillo.

<b:widget id='Label1' locked='false' title='Etiquetas' type='Label'>
<b:includable id='main'>
  <b:if cond='data:title'>
    <h2><data:title/></h2>
  </b:if>
  <div class='widget-content'>
    <ul>
    <b:loop values='data:labels' var='label'>
      <b:if cond='data:label.count >= 5'>
      <li>
        <b:if cond='data:blog.url == data:label.url'>
          <data:label.name/>
        <b:else/>
          <a expr:href='data:label.url'><data:label.name/></a>
        </b:if>
        (<data:label.count/>)
      </li>
      </b:if>
    </b:loop>
    </ul>
    <br/>Otras: <select onchange='location.href=this.options[this.selectedIndex].value'>
    <b:loop values='data:labels' var='label'>
      <b:if cond='data:label.count < 5'>
        <b:if cond='data:blog.url == data:label.url'>
          <option value=''><data:label.name/> (<data:label.count/>)</option>
        <b:else/>
          <option expr:value='data:label.url'><data:label.name/> (<data:label.count/>)</option>
        </b:if>
      </b:if>
    </b:loop></select>
    <b:include name='quickedit'/>
  </div>
</b:includable>
</b:widget>

Básicamente, hemos cambiado la condición del if para no mostrar las etiquetas con frecuencia de aparición (data:label.count) inferior a 5. Incluimos otro bucle loop que excluye a las etiquetas procesadas anteriormente mediante una condición opuesta. Las etiquetas menos frecuentes se insertan en un combo de HTML con el código Javascript mínimo para navegar hacia ellas (dentro del evento onchange de la marca <select>).

Como mejora, tiene varios fallos. En particular, no cubre bien el caso de que haya pocos artículos. Controlar la frecuencia de aparición de las etiquetas puede llevar a mostrar una lista interminable con el tiempo, por lo que habría que tocar la plantilla de vez en cuando para aumentar la condición de corte entre la lista y el combo. Sería mejor controlar el número total de etiquetas. Y ya puestos, una interfaz moderna, tipo Web 2.0, con una caja de texto y lista dinámica de etiquetas coincidentes con lo tecleado sería ya para nota. Pero habrá que ver si hay tiempo, algún día.