- Upgrade to one year of premium service for $20 for unlimited feeds and the ability to trigger new deliveries from your Kindle.

Feed delivery for mrc2407

08/05/11 09:12 AM Eastern Standard Time

- Upgrade to one year of premium service for $20 for unlimited feeds and the ability to trigger new deliveries from your Kindle.

Feed delivery for mrc2407

08/05/11 09:12 AM Eastern Standard Time

El Tamiz

Jul 28, 4707 words

Los peligros ocultos del microondas

Hace un tiempo, en este comentario, Alberto me pidió que analizara un artículo titulado Los peligros ocultos de cocinar con microondas y le diera mi opinión sobre él. El artículo en cuestión, por cierto, es una traducción del inglés y la versión en esa lengua existe en una multitud de páginas web, y no es responsabilidad de los propietarios de la página a la que enlazo arriba.

El caso es que me puse a leerlo para tratar de diseccionar lo que allí se decía para contestar a Alberto, y el relato de mis impresiones me ha llevado tanto tiempo, y ocupado tanto espacio, que creo que merece su propia entrada. De este modo, además, llegará a más gente, y tal vez sea más fácil encontrarlo a través de la red y contrarrestar informaciones de otra tela sobre el asunto.

Ni qué decir tiene, estimado lector, que esto es simplemente mi opinión personal, que puedo estar perfectamente equivocado y que lo mejor que puedes hacer al respecto es leer unas cosas y otras y formarte tu propia opinión: esto es únicamente la respuesta a la petición de Alberto y cada uno debe extraer sus propias conclusiones del artículo en cuestión.

Dicho esto, vamos con el artículo, que recomiendo que tengas abierto en otra pestaña o ventana para poder ir leyéndolo juntos; aunque intentaré poner las citas más relevantes aquí, el contexto es importante y si tergiverso las cosas por el contexto –consciente o inconscientemente–, podrás verlo inmediatamente. Digo esto porque no voy a comentar todos los párrafos del artículo, sino los que me han llamado la atención de alguna manera para tratar de determinar si se trata de algo sólido, coherente y honesto, o un ejemplo de pseudociencia (si no quieres leerte todo este ladrillo puedes simplemente ir hasta el final para ver la conclusión, ¡so vago!).

El artículo, como se desprende del título, expresa la opinión de que existen peligros ocultos al cocinar con un microondas: afirma que la comida cocinada en un microondas puede ser peligrosa para la salud. A lo largo del texto, por lo tanto, se dan argumentos para demostrar ese peligro.

El subtítulo contiene ya una afirmación que no tiene referencia alguna y sospecho que es falsa, aunque no lo sé:

¿Por qué la Unión Soviética prohibió el uso del horno microondas en 1976?

No he encontrado referencias a esta supuesta prohibición que que no sean las múltiples copias, en distintos idiomas, de este mismo artículo. No existe referencia alguna en ITAR-TASS y tengo bastante certeza de que esa supuesta prohibición es falsa.

En la exposición general de las premisas del texto aparece también algo que me chirría, y me hace sospechar que no soy el público al que va destinado:

El propósito de este informe es dar prueba, demostrar que cocinar con microondas no es natural ni sano [...]

La contraposición de “natural” con “no natural”, junto con la sugerencia (implícita o explícita) de que lo primero es mejor que lo segundo no se lleva bien con un texto que pretende tener cierto rigor científico. Es algo que ya me hace desconfiar de la objetividad del autor del texto y su comprensión de la ciencia, ya que es un hábito común en textos pseudocientíficos.

A continuación viene “Cómo funciona un microondas”, donde se explica el funcionamiento del aparato. Hay aquí también afirmaciones que demuestran, o bien ignorancia científica, o bien deshonestidad –sospecho la primera–:

Esta forma inusual de calentar también causa daños sustanciales a las moléculas circundantes, muchas veces rompiéndolas o deformándolas.

Cualquier forma de calentar altera o rompe moléculas. De hecho, podríamos decir que “cocinar” significa “alterar y romper moléculas”. A eso se debe la coagulación de la clara del huevo, el cambio de color de la carne o el pescado, etc. ¿Qué forma “no inusual” de calentar cocina los alimentos sin hacer eso?

Un horno microondas produce longitudes de onda de energía puntiagudas, con todo el poder entrando en una sola frecuencia estrecha del espectro de energía. La energía del sol opera en una frecuencia amplia del espectro.

La primera frase no tiene sentido. No hay “longitudes de onda de energía” y la longitud de onda es una magnitud numérica, no una forma. Lo del “poder” sospecho que es porque se trata de una traducción no muy buena del inglés, y debería ser “potencia” –de hecho, llegado a este punto he seguido leyendo el artículo en inglés para evitar confusiones de este tipo, aunque seguiré citando el texto en castellano–.

En varios lugares, como aquí, se contraponen las microondas de un horno a la radiación solar:

La energía del sol opera en una frecuencia amplia del espectro.

No entiendo qué tiene que ver el Sol con todo esto, pero sospecho que pretende hacer hincapié en lo “natural” del Sol y lo “no natural” de las microondas, con la implicación de que las segundas son por ello malas. El propio hecho de que no haya ahí un argumento explícito al respecto es ya un síntoma de los males del artículo: me parece que pretende, en el lector, generar una sensación, más que razonar una conclusión. Lo irónico de esto es, además, que la radiación “natural” del Sol produce, de manera absolutamente “natural”, cáncer de piel. En fin.

Posteriormente se explica cómo los estudios de la FDA (la Food and Drug Administration estadounidense) no muestran posibles peligros en la comida cocinada en microondas, pero en los años 60 se decía que los huevos eran malos y ahora dicen que son buenos. No tengo mucho que decir, porque sigo esperando argumentos científicos y razonados sobre los peligros del microondas, y no sé a qué viene esto aquí más que para tratar de desacreditar, supongo, la opinión de la FDA.

El siguiente epígrafe es “Los instintos maternos son correctos”, y en él tampoco se da un solo argumento científico que sugiera peligro en los microondas, pero sí unos cuantos comentarios como éste:

Tengo que darle la razón y no puedo discutir ni una cosa ni la otra. Su propio sentido común y sus instintos le decían que cocinar en microondas no podía ser natural ni podía hacer que los alimentos tuvieran el sabor que se suponía debían tener.

El artículo utiliza el instinto materno y el sentido común como argumentos… no tengo palabras. ¡Ay, si tantas madres que dicen que dormir en un dormitorio con plantas no es bueno levantaran la cabeza!

El siguiente par de epígrafes van por otro camino: el de poner ejemplos de uso incorrecto y peligroso del microondas como ejemplos, no de eso, sino de que los hornos microondas son malos en general. El primero se titula, por un error de traducción en el género, imagino, “Los microondas no son seguras [sic] para la leche de los niños”, y explica por qué no es conveniente utilizar un horno microondas para calentar la leche de un biberón.

La primera parte de esta sección, esta vez sí, es perfectamente coherente: un microondas, por la naturaleza de su funcionamiento, no es un modo preciso de calentar alimentos de una manera uniforme. Salvo que se mezcle bien la leche o se espere un tiempo para comprobar la temperatura y dejar que se uniformice, me parece una idea pésima utilizarlos para calentar biberones. De hecho, cualquier cosa que no sea poner el biberón en agua templada seguramente es una idea horrible si no se tiene cuidado.

Sin embargo, aunque esta extrapolación de un uso incorrecto como peligro generalizado de los microondas no me parezca demasiado bien, la guinda del pastel es la segunda parte del epígrafe, que empieza con:

La Dra. Lita Lee de Hawaii publicó en Lancet, el 9 de diciembre de 1989:

El resto del epígrafe bajo esta frase tiene una pinta espantosa. Hace referencias al carácter neurotóxico de isómeros producidos al exponer alimentos a microondas. He hecho las búsquedas en inglés, para intentar encontrar las fuentes auténticas. Al buscar “l-proline d-isomer neurotoxic” en la red, las únicas referencias que encuentro sobre esa neurotoxicidad son las de este mismo artículo, copiado en diversos sitios web. No he encontrado nada más, aunque tal vez no haya buscado bien –se aceptan sugerencias–.

La otra búsqueda es la de la Dra. Lita Lee, para determinar su credibilidad como experimentadora médica: “dr. lita lee of hawaii” lleva, una vez más, al mismo artículo y derivados, y nada de literatura científica realizada por la Dra. Lee en las bases de datos habituales, como Pubmed. Sí he podido encontrar su página web, en la que vende productos nutricionales y enzimas digestivas, pero ningún estudio publicado en revisión por pares.

Es relativamente común, en textos pseudocientíficos, citar a científicos que defienden las ideas que postula el texto; sin embargo, hasta ahora nunca me ha fallado el buscar el nombre de ese científico junto con los estudios o afirmaciones que se supone que realiza, y suelen pasar una de dos cosas — o bien el citado científico no tiene material en publicaciones rigurosas y sólo aparece en conjunción con el mismo artículo, o bien se han malinterpretado sus palabras; parece que aquí estamos en el primer caso, tanto con este estudio como el siguiente.

El epígrafe siguiente es del mismo estilo que éste de la leche: uso incorrecto que causa un peligro o perjuicio y que hubiese sucedido con cualquier otra forma “menos inusual” (en términos del artículo, se entiende) como razón del peligro de las microondas. En este caso se trata de calentar sangre para una transfusión en un microondas:

“La sangre calentada en un microondas mata a un paciente”

Tremendo epígrafe; en este caso ya no me quedan dudas de que no se trata únicamente de ignorancia científica, sino de mala fe, ya que la manipulación de los hechos es flagrante. Al parecer, el caso realmente existe, y es un ejemplo terrible de negligencia médica: una enfermera calentó sangre en un microondas y, al inyectarla a una paciente, ella murió. Esto me recuerda a lo de la leche, pero es aún más estúpido: ¿cómo es posible que alguien caliente un fluido que va a introducirse en el cuerpo de una persona con un aparato que cocina las cosas en un tiempo muy breve? No lo puedo comprender, sobre todo siendo enfermera. En fin.

El autor saca siniestras conclusiones: “Esta tragedia destaca que hay mucho más en calentar con microondas que lo que nos han dado a creer. “ No. Esta tragedia destaca que los hospitales tienen modos seguros de calentar sangre refrigerada que no la cocinan.

Si la conclusión de los autores fuese “un microondas sirve para calentar comida, no fluidos intravenosos”, no tendría pegas, pero el autor extrapola un caso de negligencia médica que nada tiene que ver con la comida para concluir que los microondas son peligrosos en general. Pero la cosa sigue:

En el caso de la Sra. Levitt, las microondas alteraron la sangre y eso la mató.

Efectivamente. Pero el autor, y aquí estoy bastante seguro de que es por malicia, se abstiene de llamar “alteración” por su nombre, y lo deja así, en vaga pero siniestra sugerencia, cuando las microondas calentaron demasiado la sangre y la cocinaron. Comer sangre cocinada puede ser más o menos agradable, pero que te la inyecten en tu torrente sanguíneo, no tanto.

Esta idea se repite en el siguiente párrafo: “Resulta obvio que esta forma de calentamiento por radiación de microondas hace algo a las sustancias que calienta.”. Sí, demonios: lo mismo que cocer en una olla “hace algo” a las sustancias que calienta. Sin embargo, se siguen sugiriendo cosas siniestras sin decir nada concreto –porque si fuera concreto se podría rebatir, claro–.

El párrafo sigue sin desperdicio: “También es bastante evidente que las personas que procesan comida en un microondas también están ingiriendo estos ‘algos desconocidos’. “ ¿El qué es desconocido? El efecto de cocinar los alimentos, con microondas o sin él, es la modificación química de sus componentes debido al aumento de temperatura… no es desconocido en absoluto.

A continuación llegamos, por fin, a un epígrafe titulado “Hechos y evidencias científicas”, que empieza ya con un estudio con título concreto y autores, algo que puede cotejarse con facilidad. Éste y el siguiente apartado están, de hecho, ambos dedicados a un estudio concreto realizado por el Dr. Hans Hertel y el Dr. Bernard Blanc.

Me sorprende una terrible, terrible frase del estudio que aparece como cita:

Una hipótesis básica de la medicina natural establece que la introducción en el cuerpo humano de moléculas y energías, a las que no está acostumbrado es mucho más probable que causen daño que beneficio.

Sí, este estudio habla de la introducción en el cuerpo de energías a las que no está acostumbrado. Se me ponen los pelos como escarpias, lo mismo que la frase “La producción de moléculas antinaturales es inevitable”. Pero ¿dónde ha sido publicado esto?

La descripción de las conclusiones de Hertel y Blanc parece haber aparecido en el número 19 del Journal Franz Weber (en este artículo se lo denomina “Journal Franz Web”, pero supongo que es un error tipográfico), de la Fundación Franz Weber, dedicada –por lo que he podido ver en la web– a la defensa de la naturaleza. No es, desde luego, un journal de revisión por pares ni nada parecido, sino una revista normal y corriente, y el redactor –que no los autores del estudio– hace afirmaciones terribles que citaré luego y que llevaron a Hertel a los tribunales

Esta falta de revisión pr pares puede parecer una tontería, pero la cantidad de estupideces que reciben las revistas de revisión por pares (lo digo porque conozco gente que filtra artículos en alguna) es tremenda, y el grado de estupidez a veces sorprendente. De ahí la importancia de la revisión por pares y la publicación en revistas de prestigio, ya que la gente que filtra los artículos es muy quisquillosa, afortunadamente.

Desde luego, estimado lector, esto tiene una segunda lectura: si piensas que la comunidad científica establecida censura los estudios contra los peligros de las microondas en connivencia con la industria, ignora este párrafo, ya que no es un argumento que pueda convencerte. Eso sí, tras leer la descripción del estudio y las conclusiones publicadas, estoy bastante convencido de que nunca hubiera sido publicado en una revista médica de verdad, conspiración o no.

El estudio se centra en encontrar diferencias en la sangre de individuos que comieron alimentos cocinados en microondas frente a otros cocinados tradicionalmente y, efectivamente, encuentra diferencias sustanciales y peligrosas entre ambos. ¿El tamaño de la muestra estadística? Ojo al dato (énfasis mío):

Un estudio de corta duración encontró cambios significativos y preocupantes en la sangre de individuos que consumían vegetales y leche cocidos o calentados en microondas. Ocho voluntarios tomaron varias combinaciones de los mismos alimentos cocinados de formas diferentes.

Ocho voluntarios. Ocho. Voluntarios. Una muestra de ese tamaño es tan significativa como el hecho de que mi tía abuela bebía un vaso de tubo de whisky diario y vivió 103 años –hecho real, por cierto–. Tras este dato, las conclusiones que pueda extraer el estudio me parecen absolutamente irrelevantes. Pero no es lo único que chirría aquí; para muestra, un botón, sobre el modo de detectar los cambios en la sangre (énfasis mío):

Se emplearon bacterias luminosas (que emiten luz) para detectar los cambios energéticos en la sangre.

Me sorprende que alguien con una supuesta preparación científica, como el Dr. Hertel –no he conseguido averiguar en qué es doctor, pero imagino que no en medicina–, utilice expresiones así, pero la siguiente es demoledora:

No es con la química, sino la energía con lo que prosperamos. No son las moléculas de proteínas o azúcares, por ejemplo, lo que nuestros cuerpos necesitan, sino la energía en la que consisten, que se manifiesta en las estructuras de estas moléculas. Vivimos a partir de la energía que ha construido esas estructuras químicas. Entendidas químicamente, por ejemplo, la vitamina C natural y artificial son idénticas. Sin embargo, mientras que la vitamina C natural se manifiesta en bellas estructuras cristalinas, la vitamina C producida farmacéuticamente tiende a formar grumos amorfos.

El otro miembro del estudio, por cierto, parece haberse desmarcado de él posteriormente, pero Hertel no. La publicación de las conclusiones del estudio de Hertel en el Journal Franz Weber contenía frases tremendas –no escritas por el propio Hertel, sino por el redactor de la revista–, del corte de ésta:

[...] los hornos microondas son más dañinos que las cámaras de gas de Dachau [...]

… o esta otra:

[...] es seguro que morirá usted de cáncer [...]

La portada de ese número de la revista, de hecho, muestra a la Muerte con un microondas en la mano. Al parecer, la asociación suiza que agrupa a fabricantes de electrodomésticos demandó a Hertel y trató de prohibirle publicar afirmaciones en las que dijese que la comida cocinada en un microondas es cancerígena. Desafortunadamente, el equivalente al Tribunal de la Competencia suizo aceptó la demanda, ya que las afirmaciones del Franz Weber eran infundadas y tendenciosas, y al parecer Hertel no se desmarcó de ellas.

¡Grave error! Una cosa es demandar a la revista por los daños económicos que el artículo, sensacionalista y pseudocientífico, pueda haber ocasionado, y obligar a publicar una rectificación, pero prohibir a Hertel publicar resultados de sus estudios es, creo, una estupidez, además de una inmoralidad. Afortunadamente, como dice el artículo que estamos analizando, el Tribunal Europeo de Derechos Humanos rectificó la decisión en 1998 ya que vulneraba el derecho a la libre expresión. Muy bien hecho.

Eso sí, la lectura del artículo de todo este episodio me parece terriblemente tendenciosa. Pinta la situación como la de un científico que muestra la terrible verdad y que es aplastado y censurado por el establishment, pero cómo luego, finalmente, el Tribunal de Derechos Humanos revierte la sentencia y la libre expresión triunfa… como si eso significara que Hertel decía la verdad.

Lo que no dice el artículo, claro, es que el tribunal no revierte la sentencia anterior porque las afirmaciones de Hertel fueran correctas, sino porque debe permitírsele hacerlas a pesar de no tener validez científica. Al leer el epígrafe, da la impresión de que la sentencia del Tribunal valida la opinión de Hertel, y no su derecho a decir cosas que no han sido demostradas. Sin embargo, el título del epígrafe es “Las acciones de la industria van dirigidas a ocultar la verdad”. En fin.

El siguiente apartado del artículo se titula Carcinógenos en los alimentos expuestos a microondas, y empieza con otros documentos de la Dra. Lita Lee, como artículos en la revista Earthletter y un libro de la propia Lee, es decir, libro propio, revista sin revisión por pares y falta de descripción de estudios que la lleven a sus conclusiones…. ni me detengo en ese párrafo.

El siguiente, aún dentro del mismo epígrafe, no es mejor. Hace básicamente lo mismo: cita “investigaciones”, en este caso “investigaciones rusas”, sin más calificación del estudio, y el lugar de publicación es el “Atlantis Rising Educational Center” de Portland, Oregón, y el resumen de los peligros que se muestran en el estudio es escalofriante y no me haría comer alimentos cocinados en un microondas ni harto de vino.

Pero ¿qué es el “Atlantis Rising Educacional Center”? He sido incapaz de encontrar mucha información sobre el sitio, desde luego ninguna vinculación con publicaciones científicas. Sí aparece en la asociación de comerciantes de Portland como negocio asociado, pero sus categorías son “Food and dining” y “Produce Retailers” (algo así como “Comida y restauración” y “Vendedores de productos agrícolas”).

Pero el artículo, claro, no dice esto, sino que suelta el nombre rimbombante y ya está. Una vez más, no pierdo tiempo en este punto, ni en el siguiente epígrafe, que sigue basado en las mismas “investigaciones rusas” de las que nuestra única referencia es el negocio de restauración de Portland.

El siguiente epígrafe es “Se descubre la Enfermedad del Microondas” Aquí creo que es el traductor quien mete la pata o es malicioso, ya que debería ser “la Enfermedad de las Microondas”, como resulta obvio al seguir leyendo el epígrafe, pues se refiere a las ondas, no a los hornos.

Aquí, por fin, se menciona un libro publicado por un médico bien formado. El libro citado es “The Body Electric”, de Robert Becker. El Dr. Becker tiene muchos artículos publicados en Pubmed, y parece que, por fin, nos encontramos ant alguien fiable con una formación científica sólida. He conseguido el libro y, lo creas o no, me he leído todas las referencias a microondas en él, que son un buen puñado.

¿Cuántas referencias hay en el libro de Becker a peligros debidos a comer alimentos cocinados en un microondas?

Cero.

Las secciones del libro dedicadas a las microondas se centran en el efecto biológico de las ondas sobre los seres vivos, y nunca, jamás, se hace mención alguna de alimentos cocinados en microondas. Ni siquiera voy a entrar a valorar la validez de los argumentos de Becker porque, insisto, nada hay ahí sobre la comida cocinada en uno de estos hornos, y se trata una vez más de un libro de librería, no de la publicación de un estudio clínico realizado por el autor y enviado a los lugares apropiados… es lo de menos.

En el libro no hay tampoco mención alguna de una “enfermedad del microondas”, a pesar de que esta traducción incorrecta y tendenciosa aparece dos veces en el epígrafe, además del título –debería ser “de las microondas”–. Malamente hubieran llamado los investigadores soviéticos “enfermedad del microondas” a los síntomas que detectaron en seres vivos expuestos a determinadas dosis de microondas porque estos hornos no se popularizaron hasta finales de los 60, y eso en EE. UU. Este error o manipulación, sin embargo, no es del artículo original en inglés, sino de su traducción al español.

Traducción aparte, no tendría problema con la mención del libro de Becker (aunque no tenga que ver con la comida cocinada en microondas), pero aquí se sigue la segunda práctica común en artículos pseudocientíficos que he mencionado antes: mencionar estudios o publicaciones escritos por personas fiables, pero o bien interpretar erróneamente lo que allí se dice o, como aquí, mezclarlo con afirmaciones que sugieren que la fuente trata de cosas de las que no trata.

¿A qué me refiero con esto? El libro no hace mención alguna de alimentos cocinados en microondas pero continúa, inmediatamente después de citarlo y en el mismo epígrafe:

Según la Dra. Lee, los cambios se observan en la química de la sangre y en el índice de ciertas enfermedades entre los consumidores de alimentos expuestos a microondas.

Si estás al loro, claro, no te confundes, pero una lectura no cuidadosa probablemente induce a pensar que Becker y Lee están hablando de lo mismo, cuando no es así en absoluto.

Llegamos a “Conclusiones de las investigaciones sobre microondas”, donde se mencionan estudios realziados en Alemania en los años 40 y en la U.R.S.S. desde 1957. No he encontrado mención alguna de ambos estudios que no sea en este mismo artículo y sus múltiples copias en la red, con lo que no puedo contrastar lo que aquí se dice. Como siempre, se aceptan pistas y sugerencias.

En el artículo se afirma que los primeros apartados del informe no son legibles en su copia, de modo que supongo que es en papel. El lector depende, en este caso, de la palabra del autor sobre el contenido del informe. Yo, dado lo que llevo leído hasta ahora, no me creo nada hasta ver esos informes, claro.

Las conclusiones de estos estudios muestran consecuencias terroríficas del consumo de alimentos cocinados en un horno microondas. Este párrafo, sin embargo, me ha hecho una vez más erizar los pelos cual gato ante mastín (énfasis mío):

Una desintegración del campo de energía vital humana en aquellos que fueron expuestos a hornos microondas durante la investigación, con efectos secundarios sobre el campo energético humano de creciente y más larga duración.

No sé si el estudio existe y quien lo hizo pensaba que existe un campo de energía vital humana, o bien el estudio no existe y el autor de este artículo no se lo ha sabido inventar bien. En cualquiera de los dos casos, la creencia en un campo de energía vital humana y su posible desintegración es algo muy respetable como creencia, pero que no tiene lugar en un texto científico… hacer pasar una creencia por ciencia es un elemento clásico de la pseudociencia, por cierto.

El siguiente apartado se titula “Conclusiones de la investigación forense”, y cita un texto de William K. Kopp pero, una vez más, no he encontrado referencia alguna a Kopp que no sea en este mismo artículo y sus copias, con lo que no puedo confirmar la veracidad de nada.

El texto de Kopp no es un estudio, sino que –por lo que se cita– parece ser un informe sobre estudios soviéticos anteriores y sus conclusiones… con lo que haría falta no sólo verificar la existencia del texto original de Kopp, sino una vez hecho eso, verificar sus fuentes, cómo se hicieron los estudios, dónde se publicaron, etc., antes de darle la menor credibilidad a lo que ahí se dice.

Eso sí, lo que ahí se dice se desautoriza a sí mismo, ya que afirma cosas como (énfasis mío):

[...] que puede causar un campo de energía psicológica subliminal involuntaria en consonancia con aparatos de microondas en funcionamiento.

Toma castaña.

Es en este texto citado en el que se afirma que el gobierno soviético prohibió los hornos microondas en 1976, como se decía en el subtítulo, pero no hay más información que antes. He vuelto a buscar información al respecto pero no he conseguido encontrar nada, con lo que dependo de la credibilidad que quiera darle a Kopp, que no sé quién es, ni dónde ha publicado, ni nada… es decir, ninguna.

En el texto de Kopp –si existe– se menciona una publicación de “Luria y Perov”, pero no he logrado encontrarla fuera, una vez más, de este artículo y sus clones, de modo que no puedo opinar.

El artículo termina con conclusiones extraídas a partir de todos esos estudios y textos citados; conclusiones, por supuesto, contrarias al consumo de alimentos cocinados en microondas por los efectos que hacer eso tiene, de acuerdo con los autores, sobre la salud humana.

De modo que, llegado aquí, al final de todo…

¿Cuántos estudios publicados en una revista médica revisada por pares se han citado en el artículo?

Ninguno.

Aunque no estén revisados por científicos, ¿cuántos estudios mencionados contienen el suficiente detalle como para que hay podido verificar que realmente existieron y cuáles fueron los detalles?

Uno, el de Hertel, realizado con ocho personas y que habla de cambios energéticos en la sangre y de la introducción en el cuerpo de energías a las que no está acostumbrado.

¡Pues sí que estamos buenos, después de tres páginas enteras!

Claro está, hay mención de varios estudios más, pero dado que no tenemos manera de leerlos porque no están publicados en ningún sitio accesible –o no he podido encontrarlos–, su credibilidad depende únicamente de la que le demos a los autores del artículo, con lo que he intentado verificar de dónde ha salido.

Afortunadamente, el artículo termina dando la fuente, que es un post en un foro de la Ecclesiastic Commonwealth Community. Allí el artículo en inglés se puede descargar como PDF, pero no he logrado descubrir si es la fuente última o no, con lo que ahí me he quedado. Si ésta es la fuente última, un foro de título “God’s Word” (Palabra de Dios), apaga y vámonos.

Mi conclusión, por lo tanto, es que el artículo no tiene la menor base científica creíble y que contiene las suficientes incorrecciones o manipulaciones para que, además, desconfíe de cualquier otro texto escrito por los mismos autores si me lo encuentro en el futuro. Tiene varias características de texto pseudocientífico y así lo calificaría yo.

¡Puf! Menuda paliza. Si has llegado hasta aquí, gracias por la paciencia y espero que haya servido de algo.

Jul 25, 1038 words

Desde la mazmorra – ¿Merece la pena escribir sobre pseudociencias?

Hace tanto que no tengo tiempo de escribir un editorial que casi se me había olvidado la sensación… ¡con lo que me gusta soltar diatribas sin sentido, oye! La de hoy no es más que la puesta por escrito de una conversación que he tenido en mi cabeza los últimos días, según escribía el análisis sobre Los peligros ocultos de cocinar con microondas, un texto pseudocientífico que se encuentra en múltiples lugares de la red (el análisis, por cierto, se publicará en un par de días).

¿Debería hacerlo en un artículo? ¿Tiene alguna utilidad? ¿Hace más mal que bien? ¿Merece la pena dedicar tiempo y espacio a estas cosas?

Pues sí, merece la pena. No hablo únicamente de este caso, sino de escribir sobre pseudociencia en general y tratar de desmontar cosas a costa, tal vez, de generar atención sobre ellas. El artículo en cuestión ha sido simplemente el que ha generado la duda, de modo que el resto de este editorial no habla sobre él, sino sobre el asunto general.

La conversación en mi cabeza ha sido más o menos así:

¿Es bueno poner enlaces y mostrar atención a textos pseudocientíficos? ¿No es mejor simplemente ignorarlos en vez de darles importancia?

Depende. Si se trata de un texto aislado, con una sola aparición en la red y que no lee casi nadie, probablemente llamar la atención sobre él hace más mal que bien, porque le da una importancia que no tiene. Sin embargo, cuando se trata de algo muy extendido, con múltiples copias y versiones en la red y que ha leído –y seguirá leyendo– mucha gente, creo que hace más daño ignorarlo que hablar sobre ello, pues la atención ya la tiene, aunque tal vez no desde un punto de vista científico.

Dicho de otro modo: alguien que fuese a encontrar el texto pseudocientífico de todos modos no va a encontrarlo más fácilmente por que hablemos, desde la perspectiva científica, de él. La única atención extra que va a recibir va a ser a través de nosotros mismos, pero nuestro público es gente que suele no creerse la pseudociencia de todos modos, con lo que no van a acabar engañados por nuestra culpa.

¿Qué sentido tiene entonces hablar de ello en una página de ciencia, si el público que la lee no se cree argumentos pseudocientíficos? ¿No es predicar a los convertidos?

No, creo que no, y hay varias razones para ello.

En primer lugar, hay textos y textos. Los más burdos se descalifican a sí mismos muy rápido y es fácil detectarlos, pero otros son mucho más sutiles. Ninguno sabemos muchísimo de todo, de modo que cualquiera, lea paǵinas de ciencia o no, puede ser engañado o al menos tener dudas. Debemos ayudarnos unos a otros.

En segundo lugar, como verás si lees el análisis del artículo que mencionaba al principio, desmontar un texto pseudocientífico requiere una cantidad de tiempo enorme buscando referencias y fuentes, contrastando nombres, etc. Es muy útil “tener el trabajo hecho” cuando necesitemos explicar a alguien que determinada página no es científica o sus fuentes no son fiables, no porque haga falta convencernos a nosotros.

En tercer lugar, poner la información ahí fuera la hace disponible no sólo al público habitual, sino a todo el mundo en general gracias a los motores de búsqueda. No es lo mismo buscar sobre un asunto concreto que te han contado, o que has visto por la red, y toparte con veinte resultados en Google todos ellos copias o versiones de lo mismo, que tener intercalados algunos sitios que den una perspectiva científica del asunto y desmonten las patrañas que allí se cuenten, si es que las hay.

Pero ¿sirve para algo cuando lo lee alguien que se plantea creerse textos pseudocientíficos? ¿No es inútil razonar con argumentos contra cosas como energías vitales y vibraciones cuánticas?

Creo que sí, sirve para algo. El problema es que muchas veces, desde la ciencia, tendemos a agrupar a todo el mundo que preste la menor atención a textos que hablen de “energías vitales” o cosas así como parte de otra tribu con la que no merece la pena hablar porque son personas irracionales, aunque sea sólo por tener dudas al respecto.

El problema con esa visión es que es mentira. Hay mucha gente que se topa con un texto que afirma cosas algo sorprendentes, y no están seguros de si lo que se dice tiene sentido o no. Es gente que puede ser perfectamente razonable pero que tiene dudas, y ¿dónde puede acudir si en páginas como ésta no hablamos del asunto?

Evidentemente, al crédulo que lee un texto en la red y se lo cree con los ojos cerrados no es posible dar argumentos razonados…. pero es que ni siquiera va a encontrarnos, porque se va a creer lo que ha leído y punto, no va a buscar contraargumentos en ninguna parte.

No, la utilidad es para el que duda, de modo que disponga de varios puntos de vista y pueda decidir por sí mismo qué le inspira más confianza y qué argumentos son más sólidos; cosas que, si nadie disecciona esos textos desde una perspectiva empirista, no puede encontrar.

Vale, tal vez hacerlo tenga una utilidad relativa, pero ¿no sería más útil emplear el tiempo en cosas más agradables y creativas?

Ahí sí, ahí le has dado… es cansado, es aburrido y a veces acabas enfadado o frustrado. Además, suelen caerte collejas por todas partes (ya he comentado alguna vez que me han acusado de ser esbirro de la NASA, de la industria maderera, de Coca-Cola y de unas cuantas cosas más, y a aquellos de vosotros que hacéis estas cosas más a menudo os habrán llamado cosas aún peores).

De hecho, hay sitios que le dedican muchísimo más tiempo y esfuerzo que yo a estas cosas, pero si todos ponemos nuestro granito de arena de vez en cuando, sin quemarnos demasiado, ahí queda la cosa para la posteridad.

En fin, así ha sido más o menos la discusión mental. Por cierto, no sé qué es peor: tener discusiones acaloradas contigo mismo en la cabeza, o leer las de otros. Supongo que tu salud mental y la mía deben estar ahí ahí, por los mismos derroteros…

Jul 21, 97 words

Modo vacacional = ON

Pues eso: que nos vamos al otro lado del charco a pasar un rato con la familia de Geli. Creo que, salvo por unos diez días al final, debería estar conectado sin problemas y mi intención es seguir escribiendo, de modo que no debería notarse diferencia. Pero nunca se sabe, se me puede comer un oso, así que quería dejar esto aquí para que sepáis la razón si no contesto a comentarios a tiempo o no se publican entradas al ritmo que deben. Si pasa cualquiera de esas cosas, no lo dudéis — ha sido un oso.

Jul 20, 5058 words

El Sistema Solar – Las lunas exteriores de Júpiter

Se me hace difícil creerlo, pero hace ya año y medio que iniciamos nuestra exploración del sistema joviano formado por el gigante Júpiter y su cohorte de anillos y satélites, dentro de la serie sobre el Sistema Solar. Tras conocer al Leviatán, nos dedicamos a visitar el resto del sistema: conocimos sus anillos y las lunas interiores embebidas en ellos; como recordarás, estas lunas interiores reciben el nombre de grupo de Amaltea por una de las cuatro (Metis, Adrastea, Amaltea y Tebe). Después dedicamos un artículo a cada una de las cuatro grandes lunas galileanas — Ío, Europa, Ganímedes y Calisto, y recientemente hicimos un paréntesis para hablar de propulsión interplanetaria y los distintos modos en los que podríamos tratar de llegar al sistema joviano relativamente pronto.

Hoy nos alejamos un poco más de Marduk –aunque aún seguimos inmersos en su poderosísimo tirón gravitatorio– para conocer otros satélites bastante desconocidos, más aún que el grupo de Amaltea: los satélites exteriores de Júpiter. Se tratará de un artículo con imágenes bastante más sosas que otros de la serie, puesto que no disponemos de buenas fotografías de estas minúsculas lunas, y no será una entrada extensa porque tampoco disponemos de gran cantidad de información sobre ellas. Por otro lado, estos satélites son de esas cosas que no se suelen estudiar en la escuela, y además muchos han sido descubiertos tan recientemente que sólo los más jóvenes estábais en el colegio cuando ya se conocían. De modo que, ¿preparado para seguir viajando? Pues vamos con ello.

Si recuerdas el artículo sobre el primer grupo de satélites jovianos, las lunas interiores, se trataba de cuatro satélites condenados: en órbitas demasiado profundas, describiendo lentas espirales que acabarán en su destrucción y sufriendo la abrasión constante de la multitud de pequeños objetos en lugares tan próximos al Monstruo. Los satélites pertenecientes al segundo grupo, las cuatro lunas galileanas, tenían a su vez órbitas elípticas estables (tres de ellas, Ío, Europa y Ganímedes, en una resonancia de Laplace). Más lejos que Calisto, sin embargo, hay una auténtica nube de pequeños satélites atados a Júpiter por cadenas gravitatorias más tenues pero suficientes para mantenerlos allí, como una nube de moscas alrededor de un gran buey.

image:Lunas exteriores de Júpiter
Lunas exteriores de Júpiter (pantallazo de Celestia).

Se trata de docenas de cuerpos minúsculos, tan pequeños que a veces descubrimos uno y luego lo perdemos durante unos cuantos años, hasta que logramos vislumbrarlo de nuevo. Son rocas de forma irregular, por supuesto, mucho más pequeñas que lo necesario para que su propia gravedad les proporcione una forma redondeada, y han llegado al sistema joviano hace relativamente poco –algo evidente por razones que veremos en un momento–. Se trata de algo así como un “cinturón de asteroides en miniatura” que orbita alrededor de Júpiter de una manera bastante anárquica e irregular.

Actualmente tenemos identificados casi sesenta de estos pequeños cuerpos, que sumados a los cuatro satélites galileanos las cuatro lunas interiores elevan el total de satélites de Júpiter a 64… pero tal vez cuando leas esto, sobre todo si es unos meses o años después de la publicación del artículo, este número ya no sea correcto, ¡así de cambiante es la cosa! Para que te hagas una idea, de esta nube de pequeños satélites exteriores, la inmensa mayoría han sido descubiertos en el siglo XXI: sólo los más grandes eran conocidos antes. Y, como te puedes imaginar, descubrimos otros nuevos todo el tiempo, según nuestros instrumentos se hacen más sensibles y con cada sonda que pasa cerca de Júpiter. Sin embargo, lo importante no es tanto saber exactamente cuántos hay ni nada parecido, sino comprender qué características fundamentales comparten todos ellos y cómo se comportan.

Para empezar, todos ellos están muy lejos de Júpiter. Vimos que la órbita de Calisto, la luna galileana más exterior, tenía un radio medio de unos 1,9 millones de kilómetros. Sin embargo, la más interior de todas las lunas exteriores, Temisto –de la que hablaremos más en detalle en un momento–, tiene un radio orbital medio de unos 7,4 millones de kilómetros, con lo que hay un buen trecho de espacio vacío entre las lunas galileanas y esta “nube de moscas”: es como si los pequeños satélites se mantuvieran a una distancia prudencial del monstruo, asustados de acercarse más.

En segundo lugar, todos ellos tienen órbitas muy elípticas, es decir, muy “estiradas”. Por seguir comparando Calisto y Temisto, el satélite galileano se movía entre una distancia mínima a Júpiter de 1,869 millones de km y una distancia máxima de 1,897 millones de kilómetros: prácticamente un círculo. Dicho de un modo algo más técnico, la excentricidad de la órbita de Calisto –un concepto del que ya hemos hablado antes en la serie, y que mide lo “estirado” de una órbita planetaria– es de 0,007. Sin embargo, la pequeña Temisto tiene un viaje mucho más variable: se mueve entre 5,909 y 8,874 millones de kilómetros de distancia, una diferencia tremenda que se corresponde con una excentricidad de 0,2, casi treinta veces más que la de Calisto.

En tercer lugar, hay tal número de estas lunas y la atracción joviana es tan débil que las órbitas son muy irregulares, es decir, cambian constantemente, a diferencia de las órbitas estables de los satélites interiores. A esta distancia, las interacciones entre la multitud de cuerpos que orbitan el gigante, además de los tirones realizados por las lunas interiores, pueden desestabilizar órbitas en un abrir y cerrar de ojos. Por esta razón a las lunas que estudiaremos hoy se las denomina también satélites irregulares de Júpiter.

En cuarto lugar, como hemos dicho al principio, se trata de lunas muy, muy pequeñas comparadas con las galileanas. Calisto tenía una masa de unos 1,1·1023 kg, mientras que la más grande de todas las lunas exteriores, Himalia –un auténtico elefante entre ellas– tiene una masa de unos 5·1018 kg, es decir, 22 000 veces menor que la de Calisto. Si cogiésemos todas y cada una de estas pequeñas moscas y las juntásemos, y después añadiésemos la masa total a la de Calisto, ni siquiera notaríamos la diferencia.

image:Masa comparada de las lunas jovianas
Masa comparada de las lunas jovianas: las cuatro gigantes copan todo el pastel, y harían falta 50 aumentos para que las pequeñas fueran visibles incluso en grupo.

Otra diferencia esencial es que las lunas galileanas tenían órbitas con una inclinación muy pequeña. Esto significa que todas ellas giran alrededor de Júpiter más o menos en el plano en el que gira el propio gigante; ya que hemos puesto a Calisto de ejemplo hasta ahora, sigamos con ella: la órbita de Calisto está inclinada 0,2° respecto al plano de rotación de Júpiter, es decir, prácticamente sobre él. Esto es algo que sucede muy comúnmente con los satélites formados más o menos a la vez que un planeta, ya que son pedazos que salen despedidos por la propia rotación del planeta en formación y terminan girando a su alrededor en el mismo plano, más o menos, que el de la propia rotación del planeta. Es lo mismo que sucede con los planetas del Sistema Solar y el Sol: casi todos giran alrededor del Astro Rey más o menos en su propio plano de rotación como estrella.

Pero, ¡ay! eso no sucede con las lunas exteriores, que tienen inclinaciones casi arbitrarias. Las dos que hemos conocido hasta ahora, aunque sea sólo por nombre, lo ponen de manifiesto: la órbita de Himalia tiene una inclinación de unos 30° respecto al ecuador joviano, que ya está bien… ¡pero es que la de Temisto tiene una inclinación de 47°! Exagerando un poco, es como si las lunas galileanas, lunas “legítimas”, orbitasen Júpiter ordenadas, cerca del plano ecuatorial, como Dios manda, mientras que esta “nube de moscas” (no la he llamado así por cualquier cosa) lo hace sin orden ni concierto ni relación alguna con la propia rotación del planeta.

Esto nos hace pensar que las lunas exteriores no son otra cosa que asteroides que pasaron demasiado cerca del planeta y fueron atrapados por su intenso campo gravitatorio, incluso a esta distancia. Desde luego, muchos son capturados muy ligeramente y sólo modifican su órbita un poco y siguen su camino por el Sistema Solar, vagando sin destino, y otros tienen trayectorias y velocidades que los llevan a terminar estrellándose contra el monstruo, pero estas lunas exteriores están en un punto medio en el que, al menos durante un tiempo, logran orbitar alrededor de Júpiter sin perderse en el espacio ni caer hacia él. Desde luego, como hemos visto otras veces en esta serie, cualquier perturbación puede desencadenar grandes cambios, y estamos seguros de que los miembros que constituyen estas lunas exteriores como grupo no son los mismos que hace cierto tiempo, ni serán los mismos más adelante, ya que alguna acabará estrellándose o perdiéndose, y otras nuevas llegarán: se trata de un equilibrio precario.

Es más: algunos de estos asteroides atrapados ya se han pegado alguna castaña. Cuando se observan estas lunas exteriores, a pesar de lo caótico y arbitrario de sus características orbitales, se ven patrones comunes de comportamiento: si recuerdas los artículos sobre el Cinturón de Asteroides, algo parecido sucedía allí. Esto significa que es posible dividir las lunas exteriores en familias que hacen órbitas muy similares, y que nos hacen pensar que, lo mismo que algunas de ellas siguen siendo asteroides atrapados, otras ni siquiera son eso, sino que son fragmentos de asteroides que han colisionado ya con algún otro objeto y que ahora siguen su camino más o menos juntos como los perdigones de una escopeta.

En la siguiente imagen puedes ver las diferentes familias y lunas solitarias. El eje horizontal representa distancias: cuanto más a la derecha, más lejos de Júpiter. Cada luna ha sido situada en su distancia media al planeta, y el segmento amarillo da una idea de cuánto varía la distancia a Júpiter a lo largo de una órbita (un segmento corto indica poca variación y uno largo una órbita muy elíptica). La vertical representa inclinaciones: muy cerca del eje indica una inclinación pequeña respecto a la eclíptica, y cuanto más arriba o abajo respecto a ella, más inclinación respecto a la eclíptica. Simplemente mirando la imagen ya puedes ver cómo muchas de estas “moscas” revolotean agrupadas alrededor del planeta:

image:Familias de lunas exteriores de Júpiter
Familias de satélites exteriores de Júpiter (Eurocommuter/Creative Commons Attribution-Sharealike License).

Recorramos, pues, este diagrama de izquierda a derecha, desde la luna exterior más cercana hacia fuera. Como ves, hay lunas representadas por encima del eje horizontal y otras por debajo; ésta es la primera distinción entre todos estos minisatélites, más amplia incluso que las familias: algunas de ellas orbitan Júpiter girando en el mismo sentido que el planeta rota sobre sí mismo, y otras lo hacen justo al contrario que el giro del planeta. En el diagrama se representa el primer grupo de satélites –los que giran como Júpiter– por encima del eje horizontal, y el segundo grupo –los que giran al revés– por debajo. Puedes observar que los grupos más cercanos a Júpiter lo hacen en el sentido de rotación del planeta y los más alejados al revés. Cualquier satélite –no sólo en Júpiter– que orbita en el mismo sentido de giro que su planeta se denomina progrado, y cualquiera que lo hace al contrario se denomina retrógrado, de modo que empezaremos explorando los satélites progrados para luego hacerlo con los retrógrados.

Como dijimos al principio, el más cercano de todos estos pequeños cuerpos es Temisto, que es además especial porque no forma parte de ninguna familia, lo que significa que probablemente no se ha pegado ningun porrazo, de modo que todavía está entero. Esta luna fue descubierta en 1975 y denominada, según la nomenclatura estándar, S/1975 J 1. Se descubren tantos pequeños cuerpos cada año que muchos no tienen “nombre propio”, de modo que la S significa que es un satélite, 1975 el año en el que fue descubierto, J indica que es un satélite de Júpiter y el 1 significa que fue el primero descubierto ese año. Sin embargo, luego se le perdió la pista y nadie fue capaz de encontrarlo de nuevo durante varios lustros.

En el año 2000, sin embargo, se descubrió un nuevo satélite de Júpiter, que recibió el romántico nombre de S 2000/J 1. El caso es que, cuando los astrónomos lo observaron durante un tiempo para determinar su órbita, se dieron cuenta de que era la misma que la del perdido S/1975 J 1, es decir, se trataba del mismo satélite redescubierto. De modo que recuperamos un satélite perdido y, en un par de años, incluso le dimos su propio nombre: Temisto, por una de las nereidas –amante de Zeus, claro, como casi cualquier fémina que se le pusiera por delante–. A pesar de que sea un nombre propio, sigue teniendo significado “sistemático”: las lunas exteriores de Júpiter suelen terminar en “-o” cuando tienen una gran inclinación, en “-a” si no es así y son progradas y en “-e” si son retrógradas. De modo que la “-o” de Temisto indica que, como vimos antes, su órbita está muy inclinada, algo que puedes ver en el diagrama de arriba (Temisto está muy arriba, casi tanto como Carpo).

image:Temisto, satélite de Júpiter, visión artística
Visión artística de Temisto (Damien Perrotin/Creative Commons Atrribution Sharealike 3.0 License).

Se trata de una luna muy pequeña y de forma irregular: tiene unos 8 km de largo y una masa minúscula de unos setecientos billones de kilos. Aunque no tenemos imágenes decentes de ella, estimamos por la cantidad de luz que refleja que es muy oscura, con un albedo de 0,04. En resumen, que tiene toda la pinta de ser un asteroide capturado por la gravedad joviana y condenado a realizar órbitas muy inclinadas de unos 130 días terrestres de duración alrededor del gigante… y la pobre ni siquiera tiene una familia de otros objetos para acompañarla en su revoloteo.

Tras Temisto viene, ahora sí, una familia de lunas cuyas órbitas tienen distancias medias de entre 11 y 12 millones de kilómetros, es decir, bastante más alejadas de Júpiter que la solitaria Temisto. Se trata del grupo de Himalia, compuesto por cuatro lunas: Leda, Himalia, Lisitea y Elara. Todas ellas tienen inclinaciones muy parecidas, de 26-28°, y excentricidades de entre 0,11 y 0,25. Todas ellas tienen una superficie razonablemente similar, y muy parecida a la de los asteroides carbonáceos del Cinturón de Asteroides. Por lo tanto, tiene toda la pinta que este grupo fue originalmente un asteroide que llegó hasta aquí desde el Cinturón y fue atrapado por la gravedad joviana para luego romperse en pedazos contra algo.

Ese “algo” fue tal vez una de las lunas retrógradas; como puedes imaginar, tener una nube de lunas girando caóticamente alrededor del planeta de modo que unas lo hacen en un sentido y otras en el contrario es una invitación a los choques. El sistema es tan caótico que nos es difícil predecir con exactitud lo que va a suceder en un futuro más o menos lejano, pero nuestros modelos sugieren una alta probabilidad de impactos entre algunas lunas de esta familia con varios de los satélites retrógrados. Por lo tanto, parece factible que esto mismo haya sucedido en el pasado y que, originalmente, esta familia era un solo objeto mayor.

Si es así, tiene que haber sido bastante más grande que las demás lunas exteriores, ya que el satélite que da nombre al grupo, Himalia, es muy grande –para ser una “mosca”, se entiende–. Se trata de Himalia, que tiene nada más y nada menos que 170 kilómetros de lado a lado. Es tan grande que fue descubierta en 1904, aunque por un tiempo se la llamó simplemente Júpiter VI, y luego recibió el nombre de Hestia durante un par de décadas hasta recibir el nombre actual –de una ninfa, sí, sí, amante de Zeus– en 1975. Es la luna no galileana más grande de todas, aunque la diferencia es abismal, claro: tiene tan sólo unos 5·1018 kg, un 5% de la masa de Europa, aunque es miles de veces mayor que Temisto, claro.

image:Himalia, satélite de Júpiter
Himalia, vista por la Cassini-Huygens en 2000 (NASA).

Dado que Himalia orbita alrededor de Júpiter bastante más lejos que Temisto, unos 11,5 millones de kilómetros, también tarda más tiempo en completar una órbita alrededor del planeta: unos 251 días terrestres. Al igual que Temisto y también que el resto de la familia que lleva su nombre, Himalia es muy oscura y tiene características muy similares a los asteroides carbonáceos, con lo que probablemente sea el fragmento más grande que ha quedado después de la captura de uno de ellos por Júpiter y el subsiguiente impacto (o impactos). Esta roca espacial da una vuelta sobre sí misma cada 7,8 horas, y la aceleración de la gravedad sobre su superficie es, naturalmente, minúscula: unas 0,006 veces la gravedad terrestre. Una mera velocidad de 100 m/s permite escapar de su tirón gravitatorio. ¡Y recuerda que estamos hablando del “gigante” entre estas lunas exteriores!

Desgraciadamente, no sabemos mucho más de esta luna, ya que lo más cerca que hemos estado ha sido a unos 4,4 millones de kilómetros de ella, cuando la sonda Cassini pasó por el sistema joviano de camino a Saturno. La mejor foto que tenemos la puedes ver a más arriba y fue tomada precisamente por la Cassini… en fin, menos da una piedra.

Las otras tres hermanas de Himalia en esta familia, Elara, Lisitea y Leda, son bastante más pequeñas. Elara tiene unos 86 km de diámetro medio, Lisitea 36 km y Leda 20 km. Elara fue descubierta un año después de Himalia, en 1905, mientras que Lisitea lo fue en 1938 y Leda en 1974. Si de Himalia no tenemos buenas imágenes, puedes suponer de lo que disponemos de los tres miembros menores de la familia, las esquirlas del asteroide original del que Himalia es el resto principal.

Aunque originalmente formasen parte de un mismo cuerpo, dado que el tiempo que se tarda en dar una vuelta en una órbita depende de la distancia al cuerpo alrededor del cual se orbita –en este caso, Júpiter–, la pequeña separación inicial entre ellas ha hecho que ahora no viajen juntas aunque sus órbitas tengan trayectorias bastante parecidas, ya que las que quedaron un poquito más cerca de Júpiter se mueven un poquito más deprisa y tardan un poco menos en dar una vuelta, mientras que las que fueron despedidas un poco más lejos hacen lo contrario. Como consecuencia, Leda tarda sólo 241 días en completar una vuelta, Himalia 251, Lisitea 259 y Leda 260 días. Eso sí, recorren todas la misma región del espacio, como puede verse en el diagrama de las familias.

Más allá del grupo de Himalia, orbitando sola a unos 17 millones de kilómetros de distancia de Júpiter, se encuentra Carpo, la última luna prograda de Júpiter según nos alejamos del gigante. Como vimos antes, la terminación del nombre indica que se trata de un satélite con una órbita muy inclinada –puedes verlo en el diagrama de las familias de arriba–, nada menos que 56° respecto a la eclíptica. Carpo es casi una mota de polvo, astronómicamente hablando: tiene tan sólo unos 3 km de lado a lado, y ni siquiera estamos seguros del dato por lo difícil de ver que es. Fue descubierta, como un montón de estas lunas menores que veremos luego, por un equipo de la Universidad de Hawaii en 2003, y su nombre original fue S/2003 J 20. ¡Sí, sí, 20! Eso te da una idea del auténtico boom de lunas jovianas descubiertas en 2003, casi todas por el mismo observatorio.

Posteriormente, la pobre S/2003 J 20 obtuvo un nombre propio, el de Carpo –una de las Horas e hija de Zeus–. Carpo tarda más de un año terrestre en completar una órbita alrededor de su padre: 458 días. Se trata, como Temisto, de una luna solitaria sin familia que comparta su órbita, y es un satélite de extremos: el progrado más lejano a Júpiter y el satélite más inclinado del sistema joviano. Pero, aparte de eso… pues sí, una simple roca espacial, y pequeña incluso para eso.

Tras las lunas progradas –Temisto, las de Himalia y Carpo– se encuentran lunas aún más lejanas, las retrógradas. No sé por qué razón existe esta tendencia, pero sospecho que puede tener que ver con la probabilidad de impactos. Si alguien tiene más información sobre este asunto, que lo diga en comentarios y actualizo el artículo.

La luna retrógrada más cercana a Júpiter es una solitaria sin nombre propio, S/2003 J 12, de la que no voy a decir más que tiene un tercio del tamaño de Carpo. Tras ella existen tres familias de lunas retrógradas, todas ellas con nombres acabados en -e, por supuesto, debido precisamente a su sentido de giro.

El grupo de Ananké está formado por algo más de una docena de lunas –aunque el número varía todo el tiempo– que orbitan Júpiter a distancias de entre 19 y 23 millones de kilómetros. Todas ellas tienen inclinaciones similares, de unos 25-35°, y casi todas tienen un color grisáceo muy parecido, con lo que –como en todas las otras familias– pensamos que provienen de un asteroide capturado y luego roto por un impacto.

La mayor luna del grupo, y la que le da nombre, es Ananké, así nombrada por una amante de Zeus, para variar; entre 1955 y 1975 recibió el nombre de Adrastea, que ahora tiene una de las lunas interiores que ya vimos… cómo lian las cosas los astrónomos a veces, la verdad. El caso es que fue descubierta en 1951 y tiene un diámetro medio de unos 28 km, es decir, es muy pequeña. Tarda unos 610 días en dar una vuelta al monstruo, como casi todas sus hermanas, claro.

El resto de la familia son progresivamente más pequeñas: Praxídice tiene unos 7 km de diámetro, Yocasta de 5 km, Harpálice, Hermipé, Heliké y Tione de 4 km… y la cosa sigue, pero tampoco tiene sentido dar una lista que cambia todo el tiempo y contiene objetos minúsculos y casi idénticos. Prácticamente todas han sido descubiertas este siglo, claro, sobre todo las más pequeñas, y seguro que seguimos descubriendo más.

El grupo de Carmé ya orbita alrededor de Júpiter a unos 23-24 millones de kilómetros de distancia. No sé si te haces una idea de la brutalidad de esa cifra para un satélite: el radio orbital medio de la Tierra alrededor del Sol es de 150 millones de kilómetros, que es mayor, pero no estamos hablando de una distancia despreciable respecto a la nuestra, como sucede por ejemplo con la órbita de nuestra propia Luna. Cuando decíamos, al empezar a explorar Júpiter, que se trata casi de un sistema estelar propio, no estábamos exagerando demasiado.

Toda la familia de Carmé tiene características similares además de su radio orbital medio, claro (si no lo has hecho aún, echa un ojo al diagrama de familias, que repito aquí abajo para que no tengas que volver a subir y bajar):

image:Familias de lunas exteriores de Júpiter
Familias de satélites exteriores de Júpiter (Eurocommuter/Creative Commons Attribution-Sharealike License).

Todas ellas tienen inclinaciones orbitales de unos 15° –en el diagrama aparecen como 165° por el carácter retrógrado, pero significa lo mismo–, es decir, no demasiado inclinadas. La excentricidad de sus órbitas es de 0,23-0,27, con lo que se trata de órbitas muy alargadas, y todas tardan alrededor de dos años terrestres en dar una vuelta al planeta. No es difícil llegar a la conclusión de que se trata de fragmentos de un mismo objeto: sus órbitas están todas en una franja de unos 700 000 km y sus inclinaciones se diferencian en menos de un grado, y además tienen todas casi la misma coloración superficial de un tono rojizo muy parecido a una familia vieja conocida nuestra, las Hildas del Cinturón de Asteroides. Sospechamos que se trata precisamente de un asteroide de esa familia, o tal vez de un Troyano (ya llegaremos a ellos tras abandonar Júpiter), que fue capturado y ¡sí, lo adivinaste! impactó contra algo más y se rompió en pedazos.

Mejor dicho que romperse en pedazos sería “saltaron esquirlas”, porque los trozos no son iguales ni mucho menos. La luna que da nombre al grupo, Carmé, contiene el 99% de la masa de toda la familia. Se trata de una roca de unos 45 km de lado a lado, que fue descubierta en 1938 –aunque el nombre de Carmé es de 1975, ya que antes recibió otros–. Las otras lunas de la familia son alrededor de una docena, muy pequeñas, y no todas tienen nombre propio. Ni siquiera voy a darte una lista, porque no tiene demasiado sentido — son meras limaduras de Carmé, que ya es pequeña.

Finalmente nos encontramos, también a 23-24 millones de kilómetros de Júpiter, al último grupo de lunas retrógradas, el grupo de Pasífae. Aquí voy a darte una sorpresa morrocotuda: no todo el mundo está de acuerdo en que el origen de este grupo sea un asteroide capturado y luego roto por un impacto. Sí, sí, tómate unos minutos para recuperarte del susto y luego sigues.

La razón de este escándalo es simplemente el hecho de que las lunas que componen esta familia tienen inclinaciones un poquito más variadas que otros, y además el color de algunos satélites no coincide con el de otros. Eso sí, tampoco tiremos las campanas al vuelo: muchos astrónomos sí piensan que se trata del mismo origen que las demás familias, pero que se ha colado, por casualidad, algún “polizón” dentro del grupo que parece no encajar con el resto.

La luna principal es la que da nombre al grupo, Pasífae. Aquí tengo que darte otra noticia que puede herir tu sensibilidad: el nombre de la luna no tiene nada que ver con Zeus. Se trata de Pasífae, esposa del Rey Minos y madre del Minotauro. Como luna exterior es bastante grande: entre 40 y 60 kilómetros de extremo a extremo –como puedes ver, no tenemos datos muy precisos– y una masa de unos 3·1017 kg. Fue descubierta en 1908, mucho antes que otros miembros menores de la familia y, como otras lunas exteriores, no recibió su nombre actual hasta 1975.

La siguiente luna en tamaño, Sinope, es el posible “polizón” del grupo. Si no tenemos en cuenta a Sinope, Pasífae contiene el 99% de la masa de la familia, y todas las lunas comparten inclinaciones orbitales y colores grisáceos muy parecidos. Sin embargo, Sinope tiene un color rojizo diferente de las demás, y su inclinación respecto a la eclíptica es bastante menor que el resto del grupo: si te fijas en el diagrama de las familias, verás lo lejos que están Pasífae y Sinope en cuanto a la inclinación. Por lo tanto, aunque la listo junto con la familia de Pasífae, es posible que no tenga nada que ver con ellas y todo sea fruto de la casualidad. Sinope fue descubierta en 1914, es decir, relativamente pronto, ya que es razonablemente grande — unos 38 km de diámetro medio.

Las demás lunas del grupo, como he dicho antes, son casi despreciables frente a Pasífae: Calírroe, Megaclite, Autónoe, Eurídome… todas tienen diámetros de menos de 10 km y masas muy pequeñas comparadas con la de su hermana mayor. Algunas de ellas, como Calírroe y Megaclite, comparten color con Sinope, de modo que también son sospechosas de haberse “acoplado” a la familia tras su formación y no provenir del mismo asteroide original.

Finalmente, aunque no tenga absolutamente nada especial salvo este hecho, no puedo dejar de mencionar al satélite de Júpiter más alejado que conocemos –salvo que se haya descubierto otro ya, claro–: S/2003 J 2, qué bello nombre. Es una luna minúscula de unos 2 km de diámetro que orbita el gigante a una distancia de unos 30 millones de kilómetros, un 20% de la distancia media Tierra-Sol. S/2003 J 2 tarda 981 días terrestres en completar su viaje alrededor del Leviatán, lo que significa que desde que lo descubrimos tan sólo ha dado unas tres vueltas alrededor del planeta.

Menciono a este solitario y minúsculo satélite para tratar de hacer evidente lo tremendo del pozo gravitatorio joviano: este gigante es capaz de mantener lunas orbitando a su alrededor a un 20% de la distancia Tierra-Sol, y nuestros cálculos indican que es capaz de llegar incluso más lejos; si en veinte años no hemos desbancado a S/2003 J 2 de su puesto como luna más lejana, me como el sombrero.

Respecto a las posibilidades de colonización o establecimiento de bases permanentes en estas lunas: la verdad es que no tiene mucho sentido. Un poco más profundamente en el pozo gravitatorio de Júpiter tenemos lugares más adecuados, como algunas de las lunas galileanas, y no hay aquí nada especial –al menos, que sepamos– que haga merecer la pena el tener una base aquí, aparte del hecho de que estar más lejos de Júpiter significa una mayor facilidad para escapar de este lugar.

Sin embargo, si nuestra prioridad es establecer bases “de paso” sobre objetos pequeños a esta distancia del Sol, tenemos una opción mucho más adecuada que las lunas exteriores: los asteroides troyanos, de los que hablaremos en el siguiente artículo, se encuentran sobre la propia órbita de Júpiter pero suficientemente alejados como para que sea más barato, energéticamente hablando, pararse allí. No, las lunas exteriores seguramente no son uno de nuestros destinos más prioritarios.

Como ha habido muchos nombres en este artículo –no todos ellos importantes–, recuerda las lunas exteriores más importantes: Temisto, la más interna, Himalia y su grupo, Carpo, la prograda más externa, y luego las retrógradas: Ananké y su grupo, Carmé y el suyo, y Pasífae y el suyo.

Con este artículo abandonamos, ahora sí, el sistema joviano, pero no la influencia de Júpiter: en la próxima entrada exploraremos los satélites troyanos de Júpiter, cuyo comportamiento al orbitar el Sol sigue estando determinado, en gran medida, por la presencia imposible de ignorar del Padre Zeus. Hasta entonces.

Para saber más (es/en cuando es posible):

- Satélites de Júpiter – Agrupaciones/Moons of Jupiter – Irregular Satellites

- The Jovian Irregular Satellites (Department of Terrestrial Magnetism at Carnegie Institution for science)

Jul 17, 176 words

Enviado el número de julio de 2011

El número de julio ya debería estar en la bandeja de entrada de quienes estáis sucritos. Como siempre, es un zip con versiones PDF para leer en pantalla e imprimir, epub, mobi, fb2 y html. Como ya dije el mes pasado, no podemos vender números antiguos en Lulu, de modo que quien quiera tener los antiguos puede ponerse en contacto con nosotros por correo.

En el número de julio:

- Desde la mazmorra – ¿Merece la pena escribir sobre pseudociencia? (aún sin publicar)

- Premios Nobel – Física 1909 (Karl Ferdinand Braun y Guglielmo Marconi)

- [Mecánica Clásica I] Aceleración

- El Sistema Solar – Las lunas exteriores de Júpiter (aún sin publicar)

- Los peligros ocultos del microondas (aún sin publicar)

Sí, esta vez hay incluso un breve editorial. Es lo que tienen las vacaciones, que tengo tiempo hasta de escribir…

Aunque sea como “efecto colateral”, porque sabemos que la mayoría lo hacéis por simple generosidad, para recibir la revista cada mes y meternos dinero en el bolsillo a nosotros, http://eltamiz.com/mecenas.

Jul 13, 4418 words

[Mecánica Clásica I] Aceleración

En el bloque Mecánica Clásica I hemos establecido ya algunas bases para describir el movimiento de los cuerpos; hemos visto cómo identificar la posición de un objeto en un sistema de referencia determinado y con unas coordenadas concretas, y también cómo conocer la rapidez con la que el objeto se mueve y en qué dirección lo hace en cada momento y en promedio. Hoy nos zambulliremos en el último de los conceptos de cinemática –el estudio del movimiento puro y duro, sin preocuparnos por sus causas– estudiando el concepto de aceleración. Pero antes, como siempre, la solución al desafío del mes pasado.

Solución al Desafío 2 – Velocidad y celeridad media

En este desafío os preguntábamos, para varios movimientos, el valor de la velocidad media –como vector, es decir, con la información de dirección además de rapidez– y la celeridad media. Vayamos con cada uno de ellos:

1. Para calcular la velocidad media, nos da exactamente igual el camino que ha recorrido la mosca, puesto que sólo queremos saber dónde empezó y dónde terminó; empezó en (0, 0, 0) y terminó en (0, 2, -2). Por lo tanto, se ha desplazado (0, 2, -2) metros y, ya que lo ha hecho en 6 segundos, su velocidad media ha sido de (0, 2/6, -2/6) metros cada segundo, es decir (0, 1/3, -1/3) m/s.

Respecto a su celeridad media, la distancia total recorrida por la mosca ha sido la suma de todos los tramos: entre (0, 0, 0) a (4, 0, 0) ha recorrido 4 metros, entre (4, 0, 0) y (4, 2, 0) ha recorrido 2 metros, entre (4, 2, 0) y (4, 2, -2) ha recorrido 2 metros y entre (4, 2, -2) y (0, 2, -2) ha recorrido 4 metros. En total, la mosca ha recorrido 4 + 2 + 2 + 4 = 12 metros. Ya que lo ha hecho en 6 segundos, su rapidez media ha sido de 12/6 metros cada segundo, es decir, 2 m/s.

2. El satélite realiza una circunferencia de 10 000 km de radio alrededor del centro de la Tierra, luego su posición final es igual a la posición inicial. Su velocidad media es, por tanto, (0, 0, 0) m/s, independientemente del tiempo que tarde.

La rapidez media, claro, es otra historia. La distancia que ha recorrido es la longitud de la circunferencia, 2πR, que en este caso es más o menos 62 832 km o, en el Sistema Internacional, 62 832 000 metros. Puesto que el satélite ha tardado 2 horas en dar la vuelta, es decir, 7 200 segundos, su celeridad media ha sido de unos 8727 m/s. (Este satélite, por cierto, tenía los motores encendidos, pero dejo para los más enterados explicar por qué lo sabemos ya que se escapa bastante de este bloque).

3. Aquí no nos dan coordenadas ni nada, de modo que nos las inventamos. Digamos que el origen de coordenadas (cartesianas) está donde empieza a moverse el ciempiés, con lo que el bicho empieza en la posición (0, 0, 0). Sube por el tronco hasta 10 metros de altura, es decir, (0, 0, 10) metros, y luego se mueve horizontalmente, pongamos que a lo largo del eje x, hasta recorrer 4 metros sobre la rama, con lo que termina en (4, 0, 10). Se ha movido, por lo tanto, de (0, 0, 0) hasta (4, 0, 10) en 5 minutos –300 segundos–. La velocidad del ciempiés ha sido entonces de (4/300, 0, 10/300) metros cada segundo, es decir, (1/75, 0, 1/30) m/s.

La distancia total recorrida por el artrópodo ha sido de 10 metros hacia arriba y luego 4 metros horizontalmente, o 14 metros, y lo ha hecho en 300 segundos, luego su rapidez media ha sido de 14/300 metros cada segundo, o lo que es lo mismo, 7/150 m/s.

Aceleración

Antes de introducir el concepto clave del artículo de hoy, permite que recordemos lo que ya sabes pero dicho de una manera especial. En primer lugar establecimos un modo sistemático de identificar dónde está un objeto a través de su posición. Era posible que esa posición no variase nunca en nuestro sistema de referencia, lo cual significaría que el objeto estaba quieto, pero también era posible que sí cambiase: si eso sucedía, era posible hablar de un concepto nuevo, el de la variación en la posición por cada unidad de tiempo, es decir, la velocidad.

También vimos cómo era posible que un cuerpo se encontrase en una situación especial en cuanto a la velocidad: era posible que la velocidad no cambiase nunca, es decir, que el cuerpo siguiera un movimiento uniforme. Sin embargo, también era posible que la velocidad sí cambiase: si eso sucede, es posible entonces hacer lo mismo que antes y establecer un concepto nuevo, el de la variación de la velocidad por cada unidad de tiempo. Este nuevo concepto es el que consumirá nuestro tiempo y neuronas hoy — la aceleración.

La aceleración de un objeto es la variación en su velocidad cada segundo.

Como puedes ver, la relación que existe entre aceleración y velocidad es casi la misma que hay entre velocidad y posición: la una es la variación en el tiempo de la otra. Sé que soy pesado con esto, pero entenderlo y asimilarlo hasta que sea evidente es fundamental para manejar estos asuntos con soltura más adelante. La mejor manera de “ver” la aceleración es con un ejemplo concreto pero, antes de eso, dejemos también definidas sus unidades, como siempre.

Velocidad, aceleración, movimiento relativo y relatividad general

A pesar de sus similitudes, en Mecánica Clásica siempre se ha considerado una diferencia entre velocidad y aceleración: la velocidad no se nota, la aceleración sí. Dicho de otro modo, si te metieran, inconsciente, dentro de una caja con paredes opacas y capaz de moverse tan suavemente que no notases la menor vibración, nunca podrías saber si la caja se mueve o no, o a qué velocidad lo hace, respecto a nada fuera de la caja. Lo mismo pasaría en un coche con ventanas opacas que se mueve por una carretera sin baches: ¿cómo saber si se mueve respecto a la carretera o no, si no puedes mirar fuera? Es imposible.

Sin embargo, la aceleración es diferente: si estás en un coche y éste acelera hacia delante, tú notas un “tirón” hacia atrás, y lo contrario si frena. Incluso si el coche tiene ventanas opacas, la pregunta “¿sufre aceleración el coche?” es posible contestarla, mientras que “¿tiene velocidad el coche (respecto a la carretera)?” no lo es. De modo que, en Mecánica Clásica, la aceleración tiene un carácter más absoluto que la velocidad, ya que cualquier observador puede saber si la sufre o no, hacia dónde y cómo de grande.

La cosa cambia cuando entra en juego la Teoría General de la Relatividad de Albert Einstein, ya que en ella incluso la aceleración adquiere un carácter relativo cuando se tiene en cuenta la gravedad. Si estás en una caja opaca como la de arriba y no notas el menor efecto de la gravedad, con lo que “flotas”, ¿tienes aceleración o no? No puedes saberlo, ya que hay dos posibilidades: o estás en el espacio exterior, lejos de cualquier planeta o estrella, con lo que no sufres la menor aceleración, o bien estás cayendo hacia el suelo a toda pastilla con una gran aceleración pero, como la caja también lo hace, no tienes manera de notar esa aceleración “contra nada” –algo de lo que hemos hablado al desmontar lo de que en el espacio no hay gravedad–. Con lo que, una vez tenido en cuenta este aspecto, se desvanece una de las diferencias entre ambas magnitudes –velocidad y aceleración–, aunque, como veremos más adelante en el bloque, sigue habiendo otras fundamentales.

Unidades de la aceleración – El metro por segundo al cuadrado

Al igual que sucedía con la velocidad, la aceleración no tiene unidades con nombre propio, sino que se emplean simplemente las derivadas del espacio y el tiempo. Al igual que la velocidad se medía en las unidades de distancia (metros) entre las de tiempo (segundos), la aceleración se mide en las unidades de velocidad (metros/segundo) entre las de tiempo (segundos), es decir, en metros partido por segundos, y eso otra vez partido por segundos o, de una manera más compacta, en metros partido por segundos al cuadrado (m/s2):

Un metro por segundo al cuadrado (m/s2) es la aceleración de un objeto que varía su velocidad en un metro por segundo cada segundo.

A veces, la gente se lía un poco con ese cuadrado y olvida lo que realmente significa esa expresión. Para que no te suceda, como decíamos antes, lo mejor es un ejemplo — si consigues visualizar en tu cabeza, como si de una película se tratase, lo que implica que la aceleración de un cuerpo tenga un valor determinado, creo que no tendrás esos problemas en el futuro.

Supongamos que un objeto se encuentra inicialmente en reposo (sí, sí, respecto a un sistema de referencia determinado, listillo). Digamos que es un coche que está parado junto a nosotros; sin embargo, en un momento determinado el conductor enciende el motor y pisa levemente el acelerador, de modo que el coche empieza a moverse cada vez más deprisa: está modificando su velocidad, es decir, tiene una aceleración. Para que este ejemplo nos sirva además para hacernos a la idea de cuánto es un metro por segundo al cuadrado, pongamos que el coche acelera precisamente a 1 m/s2. ¿Qué quiere decir eso exactamente?

En primer lugar, ya que la aceleración es 1 m/s2, es decir, no es nula, eso significa que el coche no está en un movimiento uniforme –si no entiendes esto, es mejor que vuelvas al artículo anterior antes de regresar aquí de nuevo–. Cualitativamente, su velocidad está cambiando todo el tiempo. El valor de la aceleración nos da una idea de cómo cambia la velocidad cuantitativamente: 1 m/s2 es lo mismo que 1 m/s/s, es decir, que el cambio en la velocidad es de 1 m/s cada segundo.

Dicho con otras palabras: si el coche acelera a 1 m/s2, eso significa que cada segundo su velocidad cambia en 1 m/s. Nuestro coche empieza parado; cuando ha pasado 1 segundo, ya no está parado, sino que se mueve a una velocidad de 1 m/s; cuando hayan pasado 2 segundos, se moverá a 2 m/s, a los 3 segundos irá a 3 m/s y así sucesivamente: cada vez que pasa 1 segundo, la velocidad se modifica en 1 m/s:

image:Coche, velocidad y aceleración

Si recuerdas el artículo anterior, 1 m/s equivale a 3.6 km/h, con lo que una aceleración de 1 m/s2 no es terriblemente grande: supone que la velocidad cambia 3.6 km/h cada segundo. Así, si nuestro coche acelera a 1 m/s2, tardará 10 segundos en alcanzar una velocidad de 10 m/s, es decir, de 36 km/h. Por si te ayuda a imaginar la magnitud de 1 m/s, la aceleración de la gravedad en la superficie terrestre, es decir, la aceleración de un cuerpo en caída libre, es de unos 10 m/s2, un valor bastante más grande.

Carácter vectorial de la aceleración

Lo mismo que la velocidad era algo más que un simple número, la aceleración también lo es: se trata, como en el caso de la velocidad, de un vector. Es decir, la aceleración no sólo tiene un valor numérico, que nos indica cuánto modifica su velocidad el objeto, sino que también tiene una dirección, que nos dice hacia dónde modifica su velocidad el objeto. Dicho en plata, la aceleración es una flecha cuya punta se dirige hacia donde cambia la velocidad, y cuya longitud nos dice cuánto lo hace cada segundo.

Esto puede parecer una tontería, ya que al hablar de velocidad ya hicimos énfasis en el hecho de que era un vector y no un número, pero hay tal cantidad de gente que se confunde con esto que he preferido no dedicar siquiera un cuadro rojo de advertencia, sino un epígrafe entero. La gente a veces se confunde, y dice cosas como éstas: el cuerpo está frenando, luego su aceleración es negativa, el cuerpo está cayendo, luego su aceleración es negativa, o el cuerpo va cada vez más deprisa, luego su aceleración es positiva.

Pero la aceleración no es negativa ni positiva, como tampoco lo era la velocidad: es un vector cuyas componentes dependerán del sistema de referencia y las coordenadas que hayamos elegido y que, como recordarás, son absolutamente arbitrarias. Esto significa que, en cualquier sistema físico que queramos estudiar, las componentes de la aceleración pueden ser grandes, pequeñas, positivas, negativas, pares o capicúas, y pueden ser muy distintas para varias personas que estudien el mismo sistema.

Por ejemplo, en el dibujo del coche de arriba puedes ver que el coche empieza parado y su aceleración vale 1 m/s2 hacia la derecha. Como consecuencia, al cabo de 1 segundo el coche tiene una velocidad de 1 m/s hacia la derecha, y al cabo de 2 s el coche se mueve a 2 m/s hacia la derecha. En el dibujo representamos estos “hacia la derecha” con flechas, pero también podríamos haberlo hecho con coordenadas. Supongamos que utilizamos, como en los ejemplos de artículos anteriores, las tres coordenadas cartesianas para describir el sistema, y que elegimos la coordenada x hacia la derecha.

En ese caso, la aceleración del coche es (1, 0, 0) m/s2 y su velocidad inicial, como está parado, es (0, 0, 0) m/s. Hay quien diría que es “positiva” y que por eso el coche “acelera, no frena”, pero esto no tiene sentido –luego veremos un ejemplo que lo demuestra–. El caso es que la aceleración es el cambio de la velocidad cada segundo, con lo que al cabo de 1 segundo el coche tendrá una velocidad de (0, 0, 0) + (1, 0, 0) = (1, 0, 0) m/s. Al cabo de 2 s, el coche se moverá a (1, 0, 0) + (1, 0, 0) = (2, 0, 0) m/s y así sucesivamente.

Pero también podríamos haber elegido las coordenadas de forma diferente, de modo que la coordenada x no fuera positiva hacia la derecha, sino hacia la izquierda. En ese caso, la aceleración del coche, al ir hacia la derecha, sería negativa, (-1, 0, 0) m/s2 (que, en nuestro sistema de coordenadas,significaría “1 m/s2 hacia la derecha”, exactamente lo mismo que antes), y su velocidad sería inicialmente (0, 0, 0) m/s, luego (-1, 0, 0), luego (-2, 0, 0)… como ves, todo depende del sistema que elijamos, y el signo de nada significa nada inherentemente.

Pero, si no tiene sentido decir que un objeto “acelera” si su aceleración es positiva y “frena” si es negativa, ¿cómo podemos entonces saber si sucede una cosa o la otra? Como digo, no es con el signo de la aceleración –hablar del signo de una flecha es, en sí mismo, un poco tonto–, pero hay una manera igualmente sencilla de hacerlo, y espero que bastante intuitiva. Fíjate en el dibujo del coche de arriba y en los vectores de aceleración y velocidad, y ahora haz lo mismo con este otro ejemplo, que no voy a describir antes de plantarlo aquí porque ya deberías saber lo suficiente para interpretarlo de manera correcta:

image:Coche, velocidad y aceleración 2

Sí, lo has adivinado: un objeto “acelera” cuando su aceleración se dirige a favor de la velocidad, y “frena” cuando su aceleración se dirige en contra de la velocidad. Esto es así independientemente de coordenadas y otras pamplinas, y no involucra tonterías como el “signo” de una flecha. Además, como decía antes, me parece bastante intuitivo: si te mueves hacia arriba y aceleras hacia arriba, cada vez irás más rápido; si te mueves hacia la izquierda y aceleras hacia la derecha, te moverás cada vez más despacio.

¡Ojo! Acelerar ≠ moverse más rápido o más despacio

Sé que soy más pesado que las piedras, pero no lo puedo evitar. El problema es que el lenguaje cotidiano, legítimamente, llama “acelerar” a moverse más deprisa que antes, y “frenar” a moverse más despacio. Esto está muy bien, pero el problema llega cuando utilizamos el término “aceleración” para significar algo diferente, muy concreto y técnico, y nuestra intuición, moldeada por años de empleo de la palabra “acelerar” en su sentido cotidiano, nos juega malas pasadas.

En Física, si dices que algo tiene aceleración, eso significa que su velocidad varía. Puede que se mueva más deprisa, o que se mueva más despacio, o que cambie su dirección de movimiento, o una mezcla de dos cosas, da igual. Pero hay situaciones, como la de un coche que viaja a 100 km/h pero que cambia su dirección de movimiento siempre a 100 km/h, en las que en el lenguaje cotidiano nunca diríamos “el coche está acelerando” porque siempre va igual de rápido, pero técnicamente el coche, desde luego, está acelerando.

También es posible, desde luego, decir que “un coche frena” en un contexto técnico, lo cual significa en términos de la Mecánica que su aceleración se dirige en sentido contario a la velocidad. Simplemente no olvides, porque en eso radica el problema, la diferencia entre rapidez y velocidad, ya que la aceleración modifica la segunda, pero no necesariamente la primera. Ya me callo.

Pero claro, la cosa no tiene por qué ser tan drástica en uno u otro sentido: es posible que la aceleración se dirija más o menos con la velocidad, pero no completamente como en nuestro primer ejemplo del coche, y es posible que vaya más o menos en contra pero no completamente como en el segundo ejemplo. Imaginemos que la velocidad y la aceleración de una pelota azul se dirigen en estas direcciones respectivas:

image:Velocidad y aceleración vectoriales

¿Qué le sucederá a la pelota al cabo del tiempo? Como puedes ver, se trata de un ejemplo más complejo que los del coche, ya que ahora velocidad y aceleración no tienen la misma dirección. Ésta es una buena manera de comprobar si has asimilado el artículo de hoy. Independientemente de los números, que poco importan ahora, la pelota empieza moviéndose hacia arriba a la velocidad que sea, pero con el paso del tiempo van a sucederle dos cosas –ya que, como tiene aceleración, no se trata de un movimiento uniforme–. Tan importantes son las dos cosas que las voy a poner en dos puntos separados:

1. La pelota va a moverse más deprisa. Ya que la aceleración indica el cambio de velocidad cada segundo, y puesto que la aceleración se dirige hacia la derecha y hacia arriba, la “parte hacia arriba” de la aceleración va a hacer que la velocidad aumente hacia allí.

2. La pelota va a girarse hacia la derecha. En este caso la aceleración no se dirige justo con la velocidad, sino que se escora hacia la derecha, luego la velocidad cambiará en esa dirección y la pelota, además de ir más deprisa, va a girar.

Por esta razón, dado que las direcciones relativas de velocidad y aceleración son tan importantes, es muy común “diseccionar” la aceleración, es decir, descomponerla, en dos componentes que nos indican precisamente en qué medida se producen los dos efectos que acabamos de ver. Esas componentes reciben el nombre de componentes intrínsecas de la aceleración.

Componentes intrínsecas de la aceleración

Si has comprendido el ejemplo de arriba, el quid de la cuestión es que la aceleración puede tener efectos diferentes sobre el movimiento de un objeto dependiendo de la dirección respecto a la velocidad. Por lo tanto, para visualizar lo que va a hacer un objeto mientras se mueve, es muy útil descomponer la aceleración en dos partes: por un lado, la parte que va a favor o en contra de la velocidad, es decir, la componente paralela a la velocidad y, por otro, la parte que no va ni a favor ni en contra, es decir, perpendicular a la velocidad. La manera más sencilla de verlo es sobre el ejemplo de arriba:

image:Componentes intrínsecas de la aceleración 1

Estas dos componentes de la aceleración, paralela y perpendicular, son precisamente las llamadas componentes intrínsecas. Como los físicos somos muy finos, en vez de llamarlas “paralela” y “perpendicular”, les damos nombres un poco más sofisticados:

- La componente de la aceleración que es paralela a la velocidad se denomina aceleración tangencial.

- La componente de la aceleración que es perpendicular a la velocidad se denomina aceleración normal.

Lo de “normal”, por cierto, no es “normal y corriente”, sino que toma el significado de “normal” como “perpendicular”. Una vez más, esto es simplemente un modo de diseccionar la aceleración de manera que podamos ver fácilmente si va a favor o en contra de la velocidad y en qué medida, y si producirá un giro o no, hacia dónde y en qué medida. Para comprenderlo, compara las componentes de arriba con las de este otro ejemplo:

image:Componentes intrínsecas de la aceleración 2

En este caso, la aceleración tangencial es mucho menor que antes, mientras que la normal es mucho mayor que antes. Si comprendes la diferencia entre el anterior ejemplo y éste, entiendes lo que significan las dos componentes intrínsecas. En este segundo ejemplo, la pelota va a girar bastante más bruscamente que antes, pero no va a moverse mucho más deprisa en la dirección en la que iba. Eso es precisamente lo que miden las dos componentes intrínsecas de la aceleración:

- La aceleración tangencial es como el acelerador/freno de un coche: mide el cambio en la rapidez. Si se dirige en el mismo sentido que la velocidad, la rapidez aumentará, y si se dirige en sentido contrario disminuirá.

- La aceleración normal es como el volante de un coche: mide el cambio en la dirección de movimiento. Hacia donde se dirija esta aceleración virará el movimiento del objeto.

Por lo tanto, si descomponemos la aceleración total de un objeto en estas dos componentes (incluso si no las dibujamos, sino que lo vemos en la cabeza) podemos darnos una idea de si va a girar o no, y si va a moverse más rápido o más despacio, o ninguna de las dos cosas. Naturalmente, cuanto mayor sea cada una de las dos, más intenso será el efecto correspondiente.

Si la aceleración tangencial es cero, eso significa que el objeto se moverá igual de rápido. Esto puede suceder, por ejemplo, en un coche que va siempre a 100 km/h pero gira el volante a uno y otro lado, de modo que cambia su dirección de movimiento sin modificar su celeridad. Éste es un caso en el que, a menudo, la gente piensa erróneamente que no hay aceleración porque el coche no “acelera” ni “frena” en el sentido cotidiano de las palabras, pero si has asimilado el artículo de hoy ves la diferencia — lo que sucede realmente es que la aceleración del coche es perpendicular a su velocidad, con lo que la aceleración es toda normal, no hay tangencial… pero elcoche sí sufre una aceleración, porque si no su velocidad permanecería constante y aquí no lo hace, pues cambia su dirección.

Si la aceleración normal es cero, eso significa que el objeto se moverá en la misma dirección, es decir, realizará un movimiento rectilíneo. Es lo que sucede, por ejemplo, en la salida de un Gran Premio de Fórmula 1: los coches empiezan parados pero, cuando el semáforo se pone en verde, pisan el acelerador a fondo y salen disparados. Su aceleración va justo hacia delante del coche durante la primera recta, es decir, es toda tangencial (y muy grande), mientras que la aceleración normal es cero con lo que se mueven en línea recta.

Dicho de otro modo: si observas que un cuerpo modifica su rapidez, es que su aceleración tangencial no es cero, mientras que si observas que gira, es que su aceleración normal no es cero. Desde luego, es posible que ambas existan, como nuestro ejemplo de la pelota, o que no exista ninguna, con lo que el cuerpo tenga un movimiento uniforme.

Ideas clave

Para seguir el bloque con garantías, deben haberte quedado claros los siguientes conceptos fundamentales:

- La aceleración mide la variación de la velocidad por segundo, y se mide en metros por segundo al cuadrado (m/s2).

- La aceleración no es positiva ni negativa, pues es un vector: sus efectos dependen de la dirección relativa respecto a la velocidad.

- A veces es conveniente descomponer la aceleración en sus dos componentes intrínsecas relativas a la velocidad, una paralela y otra perpendicular a ella.

- La aceleración tangencial es la componente de la aceleración paralela a la velocidad y, lo mismo que el acelerador/freno de un coche, determina el cambio en la rapidez.

- La aceleración normal es la componente de la aceleración perpendicular a la velocidad y, lo mismo que el volante de un coche, determina el cambio en la dirección del movimiento.

Hasta la próxima…

Hoy no voy a proponer un desafío numérico, ni siquiera que repase conceptos del artículo de hoy, sino que voy a intentar hacerte pensar para que estés listo para morder el próximo artículo en la nariz. Ni siquiera importa que seas capaz de razonar hasta llegar a la respuesta correcta –con los conceptos que hemos visto, hay muchas maneras de explicar con cierta corrección lo que pido–, simplemente que le dediques un tiempo al asunto.

Desafío 3 – Diferencia entre velocidad y aceleración

Como hemos visto a lo largo del artículo de hoy, existen similitudes bastante grandes entre velocidad y aceleración: ambas miden el cambio en otra cosa cada segundo, son vectores, permiten saber lo que hará el objeto en el futuro, etc. Desde luego, también hay diferencias entre ellas (si has leído el cuadro amarillo, por ejemplo, ya conoces una), pero existe una diferencia esencial para comprender el próximo artículo del bloque.

Esa diferencia radica en lo que es necesario hacer para conseguir, por un lado, que algo se mueva con cierta velocidad, y por otro, que algo se mueva con una aceleración. De manera que mi pregunta hoy es la siguiente: si un cuerpo se mueve, por ejemplo, hacia la derecha a 20 m/s, ¿qué es necesario hacer para que se mueva a la misma velocidad dentro de unos minutos, y qué es necesario hacer para que se mueva a 30 m/s al cabo de unos minutos? ¿Cuál es la diferencia esencial entonces entre velocidad y aceleración?

Jul 06, 5201 words

Premios Nobel – Física 1909 (Guglielmo Marconi y Karl Ferdinand Braun)

Pasito a pasito, en la serie sobre los Premios Nobel vamos recorriendo la historia de estos galardones, en la Física y la Química, desde sus origenes hasta la actualidad. De este modo le damos un repaso a muchos asuntos interesantes en Ciencia, pero de un modo poco habitual: desde una perspectiva histórica, tratando de recrear la maravilla de descubrir los secretos de la Naturaleza poco a poco. Llevamos ya un buen puñado de premios, desde los inicios en 1901 hasta el último, el de Química de 1908 con el que nos divertimos juntos –o eso espero– en la última entrega de la serie. La verdad es que es una de las series que más disfruto escribiendo, porque me encanta leer los textos de la época, por anticuados que suenen hoy, y vislumbrar las emociones que cosas que hoy damos por sentadas despertaban entonces. Para muestra, un botón del discurso de presentación del premio de hoy:

En 1897 era aún posible únicamente realizar una transmisión inalámbrica hasta una distancia de 14-20 km. Hoy en día, las ondas electromagnéticas se envían entre el Viejo y el Nuevo Mundo, todos los barcos de vapor transoceánicos de gran tamaño tienen su propio equipo telegráfico sin hilos a bordo, y toda Armada de importancia utiliza la telegrafía sin hilos.

¡Qué modernidad! ¡Todos los barcos de gran tamaño tienen su propio equipo telegráfico sin hilos! Las ciencias adelantan que es una barbaridad…

En fin, que me pierdo. El Premio de hoy es el Nobel de Física de 1909, otorgado al italiano Guglielmo Marconi y al alemán Karl Ferdinand Braun, en palabras de la Real Academia Sueca de las Ciencias,

En reconocimiento a sus contribuciones al desarrollo de la telegrafía sin hilos.

Hoy en día, claro está, no hablaríamos de telegrafía sin hilos sino de radio, pero ese término no empezó a utilizarse de manera extendida hasta 1920 o así y, al principio, realmente se trataba de algo tan simple como la telegrafía, no la transmisión de voz posterior.

En cualquier caso, el premio de hoy es peculiar. Desde luego, no pretendo conocer los pensamientos de los miembros de la Real Academia por entonces, pero por importantes que sean los avances logrados por Braun, Marconi y otros que no fueron recompensados con un Nobel, se trata de avances prácticos basados en un descubrimiento fundamental, el descubrimiento, que es el que debería haber recibido el Nobel.

image:Braun y Marconi
Karl Ferdinand Braun (izquierda) y Guglielmo Marconi (derecha).

El problema es que los físicos que establecieron las bases teóricas y experimentales para el nacimiento de la “telegrafía sin hilos” y con ella de las comunicaciones inalámbricas en general estaban ya muertos antes de que se otorgase el primer Premio Nobel en 1901. Esto significa que, por revolucionarios que fueran aquellos descubrimientos, sus autores nunca podrían ser galardonados por ellos… con lo que sospecho, aunque se trate de una opinión personal, que la Academia trató de reconocer a Maxwell, Faraday o Hertz a través de Braun y Marconi y la realización práctica de las ideas y experimentos de aquellos genios.

De modo que tengo que pedirte, como muchas otras veces, comprensión: no voy a hablar mucho ni de Braun ni de Marconi, –aunque desde luego que describiremos brevemente sus contribuciones a este asunto–. No, esta serie es para disfrutar, no para recorrer mecánicamente los premios, y lo que es realmente para disfrutar, científicamente hablando, es lo que pasó antes de Marconi, Tesla o Braun, de modo que a eso nos dedicaremos fundamentalmente. Es posible que algún día dediquemos una entrega de inventos ingeniosos a la radio y será allí donde abordemos los asuntos más controvertidos y escabrosos del desarrollo de ese invento, pero hoy nos recrearemos en la ciencia pura relacionada con el nacimiento de la radio.

Debemos retroceder, por lo tanto, a mediados del XIX, cuando la electricidad y el magnetismo estaban aún en pañales. Ya hablamos brevemente de este asunto en el artículo dedicado al telégrafo eléctrico, pero en 1820 el danés Hans Christian Ørsted comprueba que una corriente eléctrica es capaz de mover una aguja imantada. La importancia fundamental de este experimento, sin duda, es el descubrimiento de la conexión existente entre electricidad y magnetismo, dos fenómenos que hasta entonces se habían considerado completamente separados, pero hay una segunda lectura más relevante en lo que al artículo de hoy se refiere: la aguja imantada no tocaba el cable por el que circulaba corriente, y sin embargo era afectada por él. Dicho con otras palabras, la corriente eléctrica ejercía un efecto sobre un objeto distante a través del espacio que los separaba. La electricidad afectaba al espacio circundante, aunque no se supiera aún cómo ni por qué.

image:James Clerk Maxwell
James Clerk Maxwell (1831-1879).

Otros científicos, como Faraday y Henry, realizan avances experimentales considerables en el estudio de la electricidad y el magnetismo, demostrando y utilizando las conexiones entre ambos, pero hace falta un marco teórico que abarque ambos campos con coherencia y solidez: una auténtica teoría electromagnética. Si llevas gorra o sombrero, por favor, tengo que pedirte que te lo quites como muestra de respeto antes de seguir leyendo, ya que el responsable de crearla es un genio como ha habido pocos en la historia de la ciencia: el escocés James Clerk Maxwell. Como vimos en el artículo dedicado a Lorentz y Zeeman, Maxwell toma el conocimiento teórico anterior, los experimentos de Faraday y compañía, y elabora una teoría del electromagnetismo que explica con una elegancia pasmosa las observaciones anteriores relacionadas con la electricidad y el magnetismo. Sus cuatro ecuaciones –que eran más de cuatro y más complejas hasta que Oliver Heaviside las convirtiese en las que usamos hoy, aunque sigan llevando el nombre de Maxwell– son, sin duda, algunas de las más bellas de la Física, pero en lo que a nosotros respecta en este artículo, tienen una importancia adicional.

El caso es que, entre las diversas predicciones que Maxwell pudo obtener de sus ecuaciones, una de ellas era realmente intrigante: cualquier perturbación eléctrica o magnética no se transmitía instantáneamente por el espacio, sino que tardaba cierto tiempo en alcanzar puntos distantes. El escocés, por tanto, calculó a qué velocidad se transmitían esas perturbaciones y obtuvo un valor casi idéntico al de la velocidad de la luz –dentro de la precisión de la época, por supuesto–. Pero la cosa fue más lejos; la maravilla de las ecuaciones de Maxwell es que, aunque su propósito fuera describir fenómenos ya conocidos, de ellas se deducían conclusiones sorprendentes sobre la electricidad y el magnetismo, fenómenos nuevos y nunca identificados.

image:Ecuaciones de Maxwell
Ay, que se me saltan las lágrimas… las ecuaciones de Maxwell, a las que un día dedicaremos una mini-serie.

El más sorprendente de todos, y evidente al manipular las ecuaciones, era el hecho de que el campo magnético y el eléctrico, al variar en el tiempo y el espacio, debían ser capaces de producir ondas que se propagasen por el espacio: ondas electromagnéticas, en las que la oscilación era la propia variación del campo eléctrico y el magnético; en términos de la época, ondas eléctricas. Y la velocidad de propagación de esas ondas por el espacio era, curiosamente, la de la luz. Claro, las coincidencias pueden suceder, pero a Maxwell le pareció extremadamente sospechosa la combinación de dos factores: por un lado, la coincidencia casi exacta de la velocidad de la luz con la de sus “ondas eléctricas”, y por otro lado el hecho de que, siendo tan evidente la existencia de esas ondas a partir de sus ecuaciones, nadie nunca las hubiera visto. En palabras del propio Maxwell,

Esta coincidencia de resultados parece mostrar que la luz y el magnetismo son efectos de la misma sustancia, y que la luz es una perturbación electromagnética que se propaga a través del campo de acuerdo con las leyes del electromagnetismo.

Esa sustancia de la que habla Maxwell no era otra que el famoso éter luminífero, que traería de cabeza a los físicos durante unas cuantas décadas, pero no es eso lo que nos interesa ahora mismo. La teoría de Maxwell no sólo combinó electricidad, magnetismo y luz, sino que además –y de ahí su importancia en esta entrada– predecía la posibilidad de crear señales ondulatorias utilizando la electricidad que viajasen por el espacio y pudiesen ser detectadas en otros lugares. Desde luego, Maxwell era un teórico puro y no realizó experimentos al respecto, pero sin su base teórica no hubieran sido posibles los avances posteriores. En mi opinión, el primero de los dos genios del artículo de hoy es, sin duda, el escocés, que no recibió el Nobel porque murió bastante tiempo antes de que existieran esos premios.

Pero, como casi siempre pasa en Ciencia, las respuestas de Maxwell generaban preguntas nuevas; la más importante de todas en este caso era casi inmediata tras conocer la propuesta de Maxwell para la luz: si las perturbaciones eléctricas producen, básicamente, luz, ¿por qué no las vemos como tales? ¿Por qué al encender una corriente eléctrica, o apagarla, o modificarla, no vemos nada? ¿No será que la luz es otra cosa que no tiene nada que ver con la electricidad o el magnetismo? ¿No será que no hay ninguna “onda eléctrica” viajando por el espacio, si nadie las ha visto nunca, y que las ecuaciones de Maxwell no son más que pamplinas? Dicho de un modo más formal, la propuesta de Maxwell era una hipótesis, la hipótesis electromagnética de la luz; como toda hipótesis, hacía falta demostrarla. Y, como tantas otras veces, al genio teórico –en este caso Maxwell– le hacía falta una contrapartida, un genio experimental. Ese genio no fue otro que el alemán Heindrich Rudolf Hertz, que ya hizo su aparición en esta misma serie como mentor de Philipp Lenard.

image:Heinrich Rudolf Hertz
Heinrich Rudolf Hertz (1857-1894).

Como muchos otros, Hertz era consciente de que la luz era posiblemente sólo una parte de todas las ondas electromagnéticas; nuestros ojos eran sensibles sólo a ciertas frecuencias de oscilación, y no todas. Las “ondas eléctricas” de Maxwell, al ser generadas con variaciones de corriente eléctrica ordinarias, eran invisibles al ojo humano. Pero el problema entonces era difícil de resolver: ¿cómo demostrar que existe una onda que nadie puede ver? La solución estaba en las propias ecuaciones de Maxwell, es decir, en las relaciones entre electricidad y magnetismo. El ojo humano podía no ser sensible a muchas ondas electromagnéticas, pero debía ser posible construir algún tipo de circuito eléctrico que sí lo fuese.

Para demostrar que Maxwell tenía razón, por lo tanto, hacían falta varias cosas: era necesario producir ondas utilizando únicamente la electricidad y el magnetismo, y además detectar esas ondas de un modo reproducible en otros laboratorios. Era también necesario determinar sus propiedades, y comprobar que coincidían con las de la luz — velocidad, comportamiento ante la refracción, reflexión, etc. De modo que el objetivo de Hertz no era precisamente sencillo. El físico alemán lo logró en una serie de experimentos que marcan un antes y un después en el estudio de la electricidad y el magnetismo, a pesar de que él mismo, como veremos luego, no les dio la importancia práctica que tienen. Estos experimentos son de tal importancia que, en el propio discurso del Premio Nobel de hoy –que no fue otorgado a Hertz por las razones que hemos descrito antes– se los califica como “los más importantes en el último medio siglo”.

Es muy posible, por cierto, que leas por ahí sobre otros científicos que consiguieron transmitir ondas electromagnéticas generadas por circuitos eléctricos, algunos antes que Hertz, pero ninguno lo hizo con la claridad que el alemán, ni lo hizo de un modo sistemático que demostrase la propuesta de Maxwell, ni obtuvo tantos resultados sobre las propiedades de las “ondas eléctricas” como Hertz; como decía antes, un auténtico genio de la física experimental, tanto como Maxwell lo era de la teórica.

Hertz conocía bien, por supuesto, la teoría electromagnética. Su idea era la siguiente: producir una variación del campo electromagnético en un punto determinado, cuanto más brusca, mejor, y construir un detector lo más sensible que pudiese, de modo que si el emisor producía una perturbación electromagnética que, efectivamente, se propagase por el espacio como predecía Maxwell, el detector fuera capaz de notar su presencia. Dicho mal y pronto, la idea era pegar un buen “latigazo eléctrico” en un punto del espacio, que generase por tanto una onda electromagnética de gran amplitud a su alrededor. A su vez, esta onda debería ser capaz de meter otro “latigazo” en un lugar razonablemente alejado, y midiendo el movimiento de las cargas en el destino, debería ser posible detectar la “onda eléctrica”. No sé si suena simple, pero no lo era en absoluto; además, el experimento debía ser capaz de medir las propiedades de las ondas emitidas, como su frecuencia o amplitud, además de su velocidad, para ver si esa velocidad y esas propiedades coincidían con la de la luz.

El alemán construyó un emisor de “ondas eléctricas” que básicamente producía chispas. Para ello, unió una bobina de inducción que producía una corriente eléctrica oscilante de gran voltaje a una estructura metálica. En la estructura había dos partes, que terminaban en sendas esferitas metálicas que estaban casi en contacto pero que no se tocaban, y cada una de las dos partes estaba unida a un polo de la bobina. La idea era que, según circulaba corriente, uno de los dos lados de la estructura metálica –que hoy llamaríamos una antena– se iría cargando positivamente y el otro negativamente, hasta que la diferencia de potencial entre las dos esferitas metálicas fuera la suficiente para que saltase una chispa entre ellas (en cada lado había, además de la pequeña esfera, otra más grande que actuaba de condensador y almacenaba una buena cantidad de carga cada vez). A continuación, el sentido de la corriente procedente de la bobina cambiaba, y las dos partes de la “antena” se cargaban al revés que antes, más y más hasta que saltaba, otra vez, la chispa entre ambas bolitas, y así una y otra vez.

image:Réplica del experimento de Hertz.
Réplica del experimento de Hertz (Sparkmuseum, publicado con permiso del autor).

La chispa generada era audible, como cualquier chispa eléctrica, y también era posible verla, pero si Maxwell tenía razón, debía ser posible además detectar una “onda eléctrica” invisible procedente de este emisor. Para detectarla, Hertz construyó algo muy parecido: un pequeño circuito sin ningún tipo de fuente de alimentación, con dos esferitas metálicas muy cercanas la una a la otra. Si, una vez más, Maxwell tenía razón, la perturbación eléctrica generada en el emisor viajaría por el espacio en todas direcciones; al alcanzar este segundo circuito, induciría en él una corriente variable de la misma frecuencia de oscilación que la original, que por lo tanto sería capaz de producir pequeñas chispas entre las esferitas metálicas del detector: chispas eléctricas sin que hubiese ninguna fuente de electricidad en el detector.

Claro, las chispas en el detector no serían tan brutales como en el emisor; si se estaban emitiendo ondas allí, según esas ondas se expandían por el espacio se irían atenuando, con lo que al llegar al receptor serían más débiles, tanto más cuanto más lejos estuvieran el emisor y el receptor, pero deberían ser visibles en la oscuridad: para asegurarse de verlas, el científico metió el receptor en una caja cerrada, de modo que fuera posible mirar dentro de la caja sin ser deslumbrado por la chispa original y ver la “chispa secundaria”. Y, cuando Hertz puso en marcha el emisor, se observaron pequeñas chispas repetidas en el receptor. ¡En un receptor sin fuente de energía eléctrica! Hertz había empleado una corriente eléctrica variable para transmitir señales eléctricas por el espacio sin emplear cables. ¡Éste, éste es el experimento que merece no sólo un Nobel, sino un beso en los morros de Herr Hertz!

Desde luego, la cosa no se quedó ahí: estamos hablando de un científico de primera. El físico comprobó y documentó la variación en la intensidad al modificar la distancia entre emisor y receptor; puso diferentes medios entre uno y otro para comprobar si la onda atravesaba distintos materiales o no, y para medir posibles cambios de dirección al cambiar de medio. Hizo reflejarse la onda sobre una lámina metálica para generar una especie de “eco”, mediante el que era posible medir aún más propiedades de la onda generada, y comprobó la velocidad de las perturbaciones. Vamos, que diseccionó estas “ondas eléctricas” para comprobar todas las propiedades, cualitativas y numéricas, que era posible comprobar, y se pasó cuatro años haciendo experimentos al respecto, entre 1885 y 1889.

Los resultados fueron publicados en Annalen der Physik y luego en un libro, Untersuchungen Ueber Die Ausbreitung Der Elektrischen Kraft (Investigaciones sobre la propagación de la energía eléctrica): las ondas eléctricas de Maxwell se comportaban exactamente igual que la luz en todos los aspectos, se reflejaban como ella, se refractaban como ella, se propagaban a la misma velocidad que ella… las diferencias eran minúsculas y se debían a la diferencia entre las frecuencias de una y otra. Por ejemplo, al igual que la propagación de la luz era detenida por materiales como un trozo de madera, las “ondas eléctricas” de mucha menor frecuencia generadas por el aparato de Hertz eran capaces de atravesarla, y el ojo humano era sensible a unas sí y no a otras.

Los resultados de Hertz eran tan claros, los experimentos tan metódicos, las explicaciones tan meridianas y las coincidencias tan exactas que a prácticamente nadie le quedó ninguna duda: la hipótesis electromagnética de la luz de Maxwell era cierta. Se trata de uno de los experimentos más importantes de todo el siglo XIX, pero no sólo por su importancia teórica: Hertz había enviado una señal eléctrica entre dos puntos a través del aire. ¿Te das cuenta del potencial inmenso del experimento y sus aplicaciones prácticas?

Bueno, no sé si tú te das cuenta o no, pero puedo decirte que el propio Heinrich Hertz no se daba cuenta en absoluto. Era plenamente consciente, naturalmente, de la importancia teórica de sus experimentos –muy tonto hubiera tenido que ser para pasar cuatro años haciendo experimentos inútiles–, pero completamente ciego a la importancia práctica de lo que había logrado. ¿Cuáles eran las posibles ramificaciones y utilidades de lo que acababa de conseguir? En sus propias palabras:

No tiene utilidad alguna [...] es sólo un experimento que demuestra que el Maestro Maxwell tenía razón – simplemente tenemos estas misteriosas ondas electromagnéticas que no podemos ver a simple vista. Pero están ahí.

En otra frase digna de un autor de ciencia-ficción clarividente, el bueno de Hertz sentenció la cuestión:

No creo que las ondas que he descubierto tengan ninguna aplicación práctica.

Afortunadamente para nosotros, otros no estaban de acuerdo con él, y en poquísimos años existían ya una infinidad de aplicaciones prácticas de las “ondas inútiles” de Hertz. De hecho, como he dicho al principio, en mi humilde opinión los dos héroes de toda esta historia son Maxwell y Hertz, y los demás simplemente limaron detalles. Era inevitable, aunque Hertz no lo viera, aplicar estos conceptos a la práctica, y una auténtica jauría de científicos e ingenieros se lanzaron a la faena con voracidad.

Tal fue el número de personas que se dedicaron a este empeño tras la publicación de los resultados de Hertz, y especialmente de 1891 en adelante, que no está nada claro quién hizo qué primero, y depende de qué fuentes consultes te aparecen unos nombres u otros: Bose, Braun, Popov, Tesla, Branly, Marconi… tengo bastante claro que los dos galardonados con el Nobel de 1909 –Braun y Marconi– no merecen ser distinguidos de este modo dejando a los demás olvidados. Sí es cierto que los sistemas de Braun y especialmente Marconi, por unas razones u otras, tuvieron un éxito comercial que los hizo más famosos, pero ése no debería ser un factor determinante en la entrega de un Nobel. En fin.

image:Ferdinand Braun en Helgoland
Karl Ferdinand Braun (el del medio) en la estación de telegrafía sin hilos de Helgoland, el 24 de septiembre de 1900.

Braun se unió a la vorágine alrededor de 1897, y logró avances, como la adición de un diodo rectificador en el receptor, que se convirtieron en múltiples patentes. Las mejoras del alemán aumentaron el alcance práctico de las señales de radio en varios órdenes de magnitud, y permitieron conseguir que lo que en 1888 había sido una comunicación entre un emisor y un receptor separados unos metros pudiera convertirse en algo muchísimo más útil. Hacia 1900, el sistema de Braun se empleaba ya para comunicar, mediante la telegrafía sin hilos, la costa alemana con la isla de Helgoland; la distancia entre estaciones era de unos 60 km, lo cual no está nada mal teniendo en cuenta que sólo habían pasado doce años desde los experimentos de Hertz.

El otro galardonado, el italiano Guglielmo Marconi, empezó a trabajar en el asunto unos años antes que Braun, en 1894, como consecuencia indirecta de la muerte de Heinrich Hertz: el fallecimiento del alemán provocó un renovado interés en varias de sus publicaciones, y uno de los recién interesados entonces fue Marconi. El italiano, tras comprobar que en su tierra natal no recibía la atención y los fondos necesarios, se mudó a Gran Bretaña, y allí fue mejorando poco a poco los sistemas de transmisión sin hilos. A diferencia de Hertz o Maxwell, Marconi no era ningún genio –en mi opinión, por supuesto–, y su principal mérito fue, además del tesón, la adopción de multitud de pequeñas mejoras, algunas desarrolladas por otros (por ejemplo, por Braun o Tesla) para conseguir resultados prácticos brillantes.

image:Prototipo de Marconi
Uno de los prototipos de Marconi, 1896.

El 13 de mayo de 1897, tres años antes de que Braun lo consiguiese desde Helgoland, Marconi realizó la primera transmisión de radio sobre el mar, entre Lavernock Point y Flat Holm Island; eso sí, en ausencia todavía de las mejoras de Braun, la distancia lograda por Marconi fue sólo de unos 6 km, mucho menos impresionante que los 60 del otro. Sin embargo, Marconi obtuvo la suficiente atención y supo gestionar contactos y finanzas de modo que fue mejorando su sistema más y más, sin inventar nada revolucionario por sí mismo.

Sé que no sueno muy entusiasmado con los avances de Guglielmo, pero no puedo ocultarlo y creo que es mejor dejarte claro lo que es opinión y lo que son hechos: no me despierta demasiada simpatía. En esta serie hemos visto genios como Röntgen o los Curie, que desentrañaban los secretos del Universo por curiosidad científica y, en muchos casos, donaban al público sus descubrimientos para que todos pudieran beneficiarse de ellos. Marconi y muchos de sus compañeros de la “jauría” (que no he llamado así al azar) tenían un propósito clarísimo: obtener patentes antes que los demás, establecer empresas que reemplazasen a las de telegrafía por hilos y monopolizasen las comunicaciones a larga distancia y ganar ingentes cantidades de dinero con ello. Y todo ello, además, sin realizar avances científicos de una verdadera entidad y, en muchas ocasiones, robándose las ideas unos a otros. Tener como objetivo ganar dinero es perfectamente razonable, pero el modo en el que muchos lo hicieron no lo fue tanto.

image:Marconi en Terranova
Marconi y sus colaboradores elevando una antena sobre una cometa en Terranova, 1901.

En 1901, la empresa de Marconi anunció que había logrado una comunicación inalámbrica transoceánica: utilizando una antena montada sobre una cometa, habían enviado señales telegráficas entre Poldhu, en Cornualles, y Signal Hill, en Terranova. Sin embargo, sólo tenemos la palabra de Marconi y su empresa para probarlo, y muchos no se creen que realmente lo lograse entonces –y muchos tampoco se lo creían en 1901–. Además, el sistema empleado por Marconi utilizaba tantos diseños creados por otros que el mérito es muy relativo. Por otro lado, en años posteriores Marconi sí realizó comunicaciones transatlánticas comprobadas de forma regular. Claro, para realizar transmisiones a tan larga distancia, las estaciones emisoras debían ser de gran potencia, lo cual significaba que para construirlas hacían falta grandes inversiones… y nos alejamos, con todo esto, del espíritu de esta serie, de modo que permite que lo deje aquí.

De hecho, si algo recuerdas de este artículo en unos meses, que sean la perspicacia de James Clerk Maxwell en su predicción de la naturaleza electromagnética de la luz y la astucia experimental de Heinrich Hertz para demostrarlo, además de la ceguera del segundo respecto a las posibles aplicaciones prácticas de sus experimentos, y no tanto los avances posteriores, por más que fueran ésos los que obtuviesen el Nobel. Sin embargo, no puedo evitar dejar, como siempre, el discurso pronunciado por el Presidente de la Real Academia Sueca de las Ciencias, H. Hildebrand, el día 10 de diciembre de 1909:

Su Majestad, Sus Altezas Reales, damas y caballeros.

La investigación en la rama de la Física nos ha proporcionado muchas sorpresas. Descubrimientos que al principio parecían tener únicamente un interés teórico han llevado a menudo a inventos de la máxima importancia para el avance de la humanidad. Y si esto es cierto para la Física en general, lo es aún más en el caso de la investigación en el campo de la electricidad.

Los descubrimientos e invenciones a los que la Real Academia de las Ciencias ha decidido otorgar el Premio Nobel de Física de este año tienen también su origen en trabajos y estudios puramente teóricos. Sin embargo, por más importantes que éstos fueron en sus campos respectivos, nadie podría haber imaginado al principio que llevarían a las aplicaciones prácticas que surgieron más tarde.

Aunque esta noche estamos otorgando el Premio Nobel a dos de los hombres que más han contribuido al desarrollo de la telegrafía sin cables, debemos antes manifestar nuestra admiración por aquellos grandes investigadores –ya fallecidos– quienes, a través de su trabajo brillante y talentoso en los campos de la Física experimental y matemática abrieron el camino a grandes aplicaciones prácticas. Fue Faraday, con su afilada mente, quien primero sospechó una conexión íntima entre los fenómenos de la luz y la electricidad, y fue Maxwell quien tradujo sus atrevidos conceptos e ideas al lenguaje matemático y, finalmente, fue Hertz quien, a través de sus experimentos ya clásicos, mostró que las nuevas ideas sobre la naturaleza de la electricidad y la luz tenían una base real en los hechos.

Es cierto que era ya conocido antes de Hertz que un condensador cargado con electricidad puede, bajo determinadas circunstancias, descargarse de modo oscilatorio, es decir, con corrientes eléctricas que van a uno y otro lado. Sin embargo, Hertz fue el primero en demostrar que los efectos de estas corrientes se propagan por el espacio a la velocidad de la luz, produciendo así un movimiento ondulatorio con todas las características de la luz. Este descubrimiento –probablemente el más importante en el campo de la Física en el último medio siglo–. fue realizado en 1888. Constituye el fundamente, no sólo de la ciencia moderna de la Electricidad, sino también de la telegrafía sin hilos. Pero hacía falta todavía un gran salto desde las pruebas en miniatura en un laboratorio, donde las ondas eléctricas podían seguirse una pequeña distancia, hasta la transmisión de señales a través de grandes distancias. Hacía falta un hombre capaz de comprender el potencial de este empeño, y de superar todas las dificultades que se interponían en el camino de llevar la idea a la práctica. Esta gran tarea estaba reservada a Guglielmo Marconi.

Incluso teniendo en cuenta intentos anteriores en este sentido, y el hecho de que las condiciones y prerrequisitos para la realización de este empeño ya estaban establecidos, el honor de las primeras pruebas recae, en su mayor parte, en Marconi, y debemos reconocer que el primer éxito en esta empresa fue obtenido como resultado de su habilidad para convertir la idea general en un sistema práctico y útil, además de la energía inflexible con la que persiguió el objetivo que él mismo se había marcado.

El primer experimento de Marconi de transmisión de una señal a través de las ondas hertzianas se llevó a cabo en 1895. A lo largo de los 14 años que han pasado desde entonces, la telegrafía sin hilos ha progresado sin pausa, hasta alcanzar la enorme importancia que tiene hoy en día. En 1897 era aún posible únicamente realizar una transmisión inalámbrica hasta una distancia de 14-20 km. Hoy en día, las ondas electromagnéticas se envían entre el Viejo y el Nuevo Mundo, todos los barcos de vapor transoceánicos de gran tamaño tienen su propio equipo telegráfico sin hilos a bordo, y toda Armada de importancia utiliza la telegrafía sin hilos.

El desarrollo de un gran invento pocas veces se produce a manos de un solo hombre, y muchas fuerzas han contribuido a los resultados notables que se han alcanzado. El sistema original de Marconi tenía sus puntos débiles. Las oscilaciones eléctricas enviadas desde la estación emisora eran relativamente débiles, y consistían de series de ondas que se seguían unas a otras y cuya amplitud caía rápidamente en las denominadas “oscilaciones atenuadas”. El resultado era que las ondas tenían un efecto muy débil en la estación receptora, con la consecuencia de que las ondas procedentes de otras estaciones emisoras interferían fácilmente con ellas, dificultando la recepción en la estación de destino. Este insatisfactorio estado de cosas se ha superado, por encima de cualquier otra cosa, gracias al trabajo inspirado del Profesor Ferdinand Braun.

Braun realizó una modificación al diseño del circuito de emisión de ondas eléctricas, de modo que fuese posible producir ondas intensas con muy poca atenuación. Es gracias a este sistema que la denominada “telegrafía de largo alcance” ha sido posible, en la que las oscilaciones de la estación emisora, como resultado de la resonancia, pueden ejercer el máximo efecto sobre la estación receptora. Una ventaja adicional se debe al hecho de que, en general, sólo las ondas de la frecuencia utilizada por la estación emisora tienen efecto sobre la estación receptora. A través de la introducción de estas mejoras, y sólo gracias a ellas, se han obtenido los magníficos resultados recientes en la telegrafía sin hilos.

Investigadores e ingenieros trabajan incesantemente en el desarrollo de la telegrafía inalámbrica. Hasta dónde puede llegar este desarrollo, no lo sabemos. Sin embargo, con los resultados ya obtenidos, la telegrafía se ha expandido del modo más afortunado. Libres de caminos fijos e independientes del espacio, podemos ahora producir conexiones entre lugares distantes, a través de enormes masas de agua y desiertos. ¡Éste es el magnífico resultado práctico que ha florecido a partir de uno de los más brillantes descubrimientos científicos de nuestro tiempo!

En la próxima entrega de la serie, el Premio Nobel de Química de 1909.

Para saber más (esp/ing cuando es posible):

- Página oficial del Premio Nobel de Física de 1909

- James Clerk Maxwell / James Clerk Maxwell

- Heinrich Hertz / Heinrich Hertz

- Guglielmo Marconi / Guglielmo Marconi

- Karl Ferdinand Braun / Karl Ferdinand Braun

* * *

Tender Lovemaking

Jun 29, 1162 words

I want DTrace probes in Ruby

Recently I was debugging a performance regression in Rails 3.1. The ticket reported for the regression just indicated a speed problem. Namely allocating new active record objects was very slow in Rails 3.1 compared to Rails 3.0.

The benchmark program

Here is the program I was using for benchmarking. It’s slightly modified from the original program that @paul so kindly submitted:

require 'active_record'
require 'benchmark'

p ActiveRecord::VERSION::STRING

ActiveRecord::Base.establish_connection(
:adapter  => "sqlite3",
:database => ":memory:"
)

ActiveRecord::Base.connection.execute("CREATE TABLE active_record_models (id INTEGER UNIQUE, title STRING, text STRING)")

class ActiveRecordModel < end="" activerecordmodel.new="" n="100_000" benchmark.bm="" x="" x.report="" new="" n.times="" activerecordmodel.new="" re="">

I could tell from perftools.rb output we were calling new
methods, and those new methods took plenty of time.

Here is the call graph for this benchmark on Rails 3.0:

image:arnew

Compared to the call graph on Rails 3.1:

image:arnew31

After some work, I was able to remove the method calls to scope when allocating new AR objects, but the
benchmark still showed 3.1 to be slower than 3.0. I noticed we were spending more time in the Garbage Collector on 3.1
than on 3.0. This lead me to believe that we were creating more objects in the newer version.

Counting Object Allocations

Counting object allocations with Ruby 1.9 is actually pretty easy. We can call
ObjectSpace.count_objects to get a list of the live objects in the system. That method returns a hash
where the keys are the object type and the values are the number of that object in the system (there are other keys, be
we don’t care about them for now).

Knowing this information, we can write a function that will calculate a rough difference in object allocations:

def allocate_count
GC.disable
before = ObjectSpace.count_objects
yield
after = ObjectSpace.count_objects
after.each { |k,v| after[k] = v - before[k] }
GC.enable
after
end

p allocate_count { 100.times { {} } }

The first thing we do in this function is disable the garbage collector. It’s possible that the code we’re
investigating could trigger GC, and that will impact our allocated object count.

Then we grab our current list of objects, yield to the code we want to profile, grab the list again, calculate our
delta, enable GC and return!

If you run this code, you should see output similar to this (I’ve removed keys I don’t care about):

{ ... :T_HASH=>101, ... }

You can see from the output that we’ve allocated 101 hashes. 100 came from our 100.times call, and one
came from calling the method on ObjectSpace.

Since inspecting our code can impact object allocations, these counts can’t be 100% accurate. Another annoying thing
is that we can’t determine where our code is allocating these hashes. It’s easy enough to see the hash
literals in this code, but imagine a project like rails. You may be able to find hash literals in your source, but
determining which ones are being called is difficult.

After running this against the profile, I found that ActiveRecord in 3.1 was allocating 2x the number of hashes that
3.0 allocated. Now the problem is figuring out where these hashes were being allocated.

DTrace

DTrace gives us hooks in to our processes. Many of the hooks provided are for system calls, or other various
functions. DTrace requires that we write probes in our code, and unfortunately Ruby does not have DTrace probes built
in.

Adding DTrace to Ruby

To find these Hash allocations, I decided to add DTrace support. I usually run Ruby built from Ruby trunk, so
running a modified Ruby seemed acceptible. It turns out adding DTrace support is pretty easy.

First I added a probe definition file. This file describes the probes that I want to add to Ruby. It contains the
probe names and the signatures of the probes:

provider ruby {
probe hash__alloc(const char *, int);
};

This definition says we’re declaring a probe called hash-alloc and it will take a string (the file
name) and an int (the line number).

Next I used this definition file to generate a header file that ruby would use:

$ dtrace -o probes.h -h -s probes.d

Finally, I modified hash.c to trigger the probe:

diff --git a/hash.c b/hash.c
index b49aff8..c40d94d 100644
--- a/hash.c
+++ b/hash.c
@@ -15,6 +15,7 @@
#include "ruby/st.h"
#include "ruby/util.h"
#include "ruby/encoding.h"
+#include "probes.h"
#include

#ifdef __APPLE__
@@ -221,6 +222,9 @@ hash_alloc(VALUE klass)
OBJSETUP(hash, klass, T_HASH);

RHASH_IFNONE(hash) = Qnil;
+    if(RUBY_HASH_ALLOC_ENABLED()) {
+       RUBY_HASH_ALLOC(rb_sourcefile(), rb_sourceline());
+    }

return (VALUE)hash;
}

After this, I built and installed ruby. Then I wrote a dtrace script to display the filename and line number where
hash allocations were happening:

ruby*:::hash-alloc
{
printf("%s:%d", copyinstr(arg0), arg1);
}

Then I ran the benchmark with dtrace:

$ sudo dtrace -s x.d -c 'ruby -I lib test.rb'

Here is an excerpt of the output:

1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1528
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1529
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1534
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1535
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1525
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/persistence.rb:322
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1527
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1528
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1529
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1534
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1535
1 126930            hash_alloc:hash-alloc /Users/aaron/git/rails/activerecord/lib/active_record/base.rb:1525

I was able to compare the output from this script on Rails 3.0 vs Rails 3.1. From this output, I was able to
determine:

- The number of hash allocations

- Where the hashes were allocated

- Which allocations were new in Rails 3.1

Armed with this information, I was able to eliminate some allocations and return speed in Rails 3.1 to that of Rails
3.0.

DTrace vs gdb vs memprof

I probably could have accomplished this task with memprof, but it
requires that I use 1.8.7 from rvm. Working with RVM on my machine is difficult (don’t ask, let’s just say I’m a
“special needs” user), and I wanted to use 1.9. So memprof was out the window.

I was able to get the same information by scripting gdb. I set a breakpoint at the correct function, called
rb_sourcefile() and rb_sourceline() and redirected to a file. The problem with gdb is that it
seemed very slow, and scripting it was a pain (though I am not a gdb expert!).

DTrace was fast, relatively easy to use, and very scriptable. It made me happy!

OMG!!!

I would like to see dtrace probes officially added to ruby trunk. The ruby that ships with OS X has them built in,
but they don’t give us information like hash literal allocations. It looks like they were in ruby trunk at one point, but were then reverted. I would
like to see them added again.

If you want to play with them on ruby trunk, here is my full patch.
Make sure to run make probes.h before make && make install.

HAPPY WEDNESDAY!!!! 3 3 3 3

(it feels good to blog on a non “professional” blog)

Jun 28,

572 words

TIL: It’s OK to return nil from to_ary

tl;dr: You can return nil from to_ary and to_a.

Today I discovered that it’s OK for to_ary to return nil. Ruby spec tests this behavior,
and the

ruby implementation supports it. But why would
you want to implement this?

Array#flatten and to_ary

Consider the following code:

class Item
def respond_to?(name, visibility = false)
p "respond to: #{name}"
false # we don't respond to anything!!
end

def method_missing(name, *args)
p "method missing: #{name}"
super # if something?
# do something else
end
end

[[Item.new]].flatten

In Ruby 1.9, flatten will actually call to_ary on each of the items in the collection. If
the method table for this object contains to_ary, Ruby will call to_ary, and if
method_missing is implemented, it will call method_missing regardless of how your
respond_to? returns. The reason ruby will call method_missing is because it could
implement to_ary. (As for why it ignores the return value of respond_to?, I don’t know)

Naturally, if we were to call to_ary directly on this object it would raise a
NoMethodError exception. When calling flatten, ruby will swallow the exception. If we enable
$DEBUG by running ruby with -d, we can see the exception:

[aaron@higgins ~]$ ruby -d test.rb
Exception `LoadError' at /Users/aaron/.local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1215 - cannot load such file -- rubygems/defaults/operating_system
Exception `LoadError' at /Users/aaron/.local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1224 - cannot load such file -- rubygems/defaults/ruby
"method missing: to_ary"
Exception `NoMethodError' at test.rb:9 - undefined method `to_ary' for #<0x00000101079e80>
"respond to: to_ary"
[aaron@higgins ~]$

Dispatching to method_missing can be expensive, and using exceptions for flow control even more
problematic. The way we can get around this issue is by implementing to_ary and having it return nil:

class Item
def respond_to?(name, visibility = false)
p "respond to: #{name}"
false # we don't respond to anything!!
end

def method_missing(name, *args)
p "method missing: #{name}"
super # if something?
# do something else
end

private
def to_ary
nil
end
end

[[Item.new]].flatten

Run the code again with -d, and you’ll see no more calls to respond_to?, no more calls to
method_missing, and no more exceptions raised:

[aaron@higgins ~]$ ruby -d test.rb
Exception `LoadError' at /Users/aaron/.local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1215 - cannot load such file -- rubygems/defaults/operating_system
Exception `LoadError' at /Users/aaron/.local/lib/ruby/site_ruby/1.9.1/rubygems.rb:1224 - cannot load such file -- rubygems/defaults/ruby
[aaron@higgins ~]$

Array() and to_a

The Array() function exhibits a similar behavior, but with the to_a method. Try this same code, but
rather than using Array#flatten, do this:

Array(Item.new)

We can fix the error produced by this code with a slight change to our class:

class Item
def respond_to?(name, visibility = false)
p "respond to: #{name}"
false # we don't respond to anything!!
end

def method_missing(name, *args)
p "method missing: #{name}"
super # if something?
# do something else
end

private
def to_ary
nil
end
alias :to_a :to_ary
end

[[Item.new]].flatten
Array(Item.new)

Hmmmm

Are warnings annoying? Yes. Is this strange behavior? I tend to think so. But if I’m forced to deal with a class the
implements method_missing, I’d like to reduce the number of calls to method_missing.

Anyway. I hope you found this informative. Have a Happy Tuesday!!!!

3 3 3 3

Small Side Note

The reason there are exceptions coming from rubygems when -d is enabled is because rubygems attempts to
require files that are not shipped with rubygems. These files are for packagers to provide. For example someone
packaging rubygems for debian, may need to do customizations and those files are where that happens.

Jun 27,

15 words

Mechanize 2.0.0 has been released!

ZOMG! Thanks to @drbrain, mechanize 2.0.0 has been released!

See the full announcement here!

Mar 03,

2071 words

Rack API is awkward

TL;DR: Rack API is poor when you consider streaming response bodies.

ZOMG!!!! HAPPY THURSDAY!!!! Maybe I shouldn’t be so excited now. I want to talk about stuff I’ve been working on in
Rails 3.1, and problems I’m encountering today. I want to use this blllurrrggghhh blog post to talk through through the
problems I’ve been having, and to share the pain with others.

Pie is delicious!

One feature that would be useful to add to Rails is having a streaming response body. When Rails processes a
response, the entire response is buffered in memory before it can be sent to the user. Some information like Content
Length (among other things) is derived, and the response is sent.

Sometimes buffering a response is less than ideal. It would be nice if we could send the head tag along with any css
or script includes to the browser as quickly as possible. Then the browser can download external resources while we’re
still processing data on the server. If this were possible, total response time may remain the same, but the time to
first byte would be decreased and the page would load faster as external resource can be downloaded in parallel.

This feature sounds great, but there are many things to think about before it can be implemented. We need to support
infinite streams, chunked encoding, prevent header manipulation, ensure database connections, blah, blah blah.

Rack interface

I’m getting ahead of myself. Before we get to our ultimate “pie in the sky” streaming solution, let’s take a look at
the Rack API. Rack defines an interface for writing web applications. A rack handler must respond to call
which takes one parameter, the request environment. call must return a three item list of:

- Response code

- Headers

- Body

The response code should be a number (like 200), the headers are a hash (like { ‘X-Omg’ => ‘hello!’ }). The body
must respond to each and take a block. The body must yield a string to the block, and the string will be
output to the client. Optionally, the body may respond to close, and rack will call close
when output is complete.

An Example Rack application

Let’s write an example application. Our sample application will simulate an ERb page. We’ll add some
sleep statements to simulate work happening during the ERb rendering process:

class FooApplication
class ErbPage
def to_a
head = "the head tag"
sleep(2)
body = "the body tag"
sleep(2)
[head, body]
end
end

def call(env)
[200, {}, ErbPage.new.to_a]
end
end

For the purposes of demonstration, we’ll be using a fake implementation of rack:

class FakeRack
def serve(application)
status, headers, body = application.call({})
p :status  => status
p :headers => headers

body.each do |string|
p string
end

body.close if body.respond_to?(:close)
end
end

If we feed our application through FakeRack like this:

app  = FooApplication.new
rack = FakeRack.new

rack.serve app

We’ll see output from the rack application, and the total program run time is about 4 seconds:

$ time ruby foo.rb
{:status=>200}
{:headers=>{}}
"the head tag"
"the body tag"

real    0m4.008s
user    0m0.003s
sys     0m0.003s

Great! So far, no problem. Why don’t we add a middleware to time how long the response takes.

Rack Middleware

Rack Middleware is simply another Rack application. With Rack, we set up a linked list of middleware that eventually
point to the real application. We give the head of the linked list to Rack, Rack calls call on the head of
the list, and it is the list’s responsibility to call call on it’s link.

Here, we’ll write a Rack middleware to measure how long the “ERb render” takes and add a header indicating the
response time.

class ResponseTimer
def initialize(app)
@app = app
end

def call(env)
now                        = Time.now
status, headers, body      = @app.call(env)
headers['X-Response-Took'] = Time.now - now

[status, headers, body]
end
end

When we construct the ResponseTimer, we pass it the real application. Then we pass the response timer instance to
rack:

app   = FooApplication.new
timer = ResponseTimer.new app
rack  = FakeRack.new

rack.serve timer

When rack calls call on the response timer, it records the current time, then calls call
on the real application. When the real application returns, the response timer then adds a header with the time delta.
The output of this program will look like this:

$ time ruby foo.rb
{:status=>200}
{:headers=>{"X-Response-Took"=>3.999937}}
"the head tag"
"the body tag"

real    0m4.010s
user    0m0.004s
sys     0m0.004s

Speeding up our response time

We’ve noticed a problem with our Rack application. When a client connects, it takes 4 seconds before they receive
any data! It would be nice if we could feed our client the head tag ASAP so they can download external resources.

We know that Rack will call each and (depending on your webserver) immediately send data to the client.
Rather than computing values in ERb ahead of time, we’ll compute them when Rack asks for them (when each
is called).

Let’s refactor the ERb page to be lazy about calculating values:

class FooApplication
class ErbPage
def each
head = "the head tag"
yield head

sleep(2)

body = "the body tag"
yield body

sleep(2)
end
end

def call(env)
[200, {}, ErbPage.new]
end
end

Now no values are calculated until rack calls each on our body. If we run the program, we’ll see output
from the application more quickly than before.

However, the output is somewhat strange:

$ time ruby foo.rb
{:status=>200}
{:headers=>{"X-Response-Took"=>1.1e-05}}
"the head tag"
"the body tag"

real    0m4.032s
user    0m0.027s
sys     0m0.016s

The time command reports that our response was about 4 seconds. But our response header says that the response took
nearly 0 seconds! Why is this?

If we look closely at our timer middleware, we can see it is only timing how long it took for call
to return.

We cannot guarantee that any processing happened during the call method.

Let me say that again:

We cannot guarantee that any processing happened during the call method.

We wanted our response timer to time how long the ERb took to render, but really it is just timing how long the
call method took.

ZOMG HOW FIX?!?

Iterating over the body

One way to fix is to iterate over the body. If the timer iterates over the body, then we can calculate the real
time:

class ResponseTimer
def initialize(app)
@app = app
end

def call(env)
now                        = Time.now
status, headers, body      = @app.call(env)

newbody = []
body.each { |str| newbody

But this solution is no good! Our response timer now buffers the response, and our client ends up waiting for 4
seconds before they get any data.

We know that Rack calls close on the body after it’s done processing the request. Why don’t we try
hooking on that method?

Introducing a Proxy Object

One way we can hook on to the close method is by wrapping the response body in a proxy object. Then we can intercept
calls made on the body and perform any work we need done:

class ResponseTimer
class TimerProxy
def initialize(body)
@now     = Time.now
@body    = body
end

def close
@body.close if @body.respond_to?(:close)

$stderr.puts({'X-Response-Took' => (Time.now - @now)})
end

def each(&block)
@body.each(&block)
end
end

def initialize(app)
@app = app
end

def call(env)
status, headers, body = @app.call(env)

[status, headers, TimerProxy.new(body)]
end
end

Wow! Suddenly our middleware is not so simple. This proxy solution is sub-optimal for a few reasons. We’re required
to make a new object for every request, and our proxy object will add another stack frame between calls from rack to
the response body. Even worse, every middleware that needs to do work after the response is finished must define this
proxy object.

This solution does get the job done. If we look at the output from the program, we’ll see that the TimerProxy in
fact measures ERb processing time correctly:

$ time ruby foo.rb
{:status=>200}
{:headers=>{}}
"the head tag"
"the body tag"
{"X-Response-Took"=>4.000268}

real    0m4.044s
user    0m0.029s
sys     0m0.015s

Diligent readers will note that the response time is no longer part of the response headers. This is because when
the body is flushed, the headers must be flushed too. We no longer have the opportunity to add extra headers when
each is called on the body.

Our solution isn’t too bad, but it actually isn’t complete. The full awkwardness of this API along with a
complete solution can actually be felt (and read) in the Rack source itself.

Lady Gaga Solution

Another possible solution is to decorate the body using a module. We can define a module, then simply call
extend on the body with the module:

class ResponseTimer
def initialize(app)
@app = app
end

def call(env)
status, headers, body      = @app.call(env)
body.extend(Module.new {
now = Time.now

define_method(:close) do
super if defined?(super)

$stderr.puts({'X-Response-Took' => (Time.now - now)})
end
})

[status, headers, body]
end
end

The body is extended with an anonymous module. During module definition, the time is recorded. We use
define_method because it uses a lambda which will keep a reference to the previously calculated time. In
the close method, we call super if it’s defined, then output our time.

This example also works, but has a few downsides. It is different than previous examples because we are timing
only the ERb rendering and not call plus ERb rendering. Using this solution, we’re required to
create a new module on every request, and also break method caching on every request. Similar to the proxy object
solution, we must create a new module and extend for every middleware that must to processing after the response is
finished.

ZOMG YOUR EXAMPLE IS CONTRIVED

Yup. But I merely simplified a real world problem. As I mentioned earlier, you can see the awkwardness of this API
in rack.

But now that we know about this problem, we can identify middleware that will break streaming responses. For
example, Rails defines a middleware
that checks connections back in to the connection pool. If our ERb in Rails was streaming, we would lose the
database connection during ERb render. The same is true with the query cache in active
record. Surely, these cannot be the only middleware that will break when a streaming body is used!

Lifecycle hooks

I think a good solution to this problem would be if Rack provided lifecycle hooks. A Place where we can say “run
this when the response is done”. We can define something like that today using middleware:

class EndOfLife
attr_reader :callbacks

def initialize(app)
@app       = app
@callbacks = []
end

def call(env)
status, headers, body = @app.call(env)
body.extend(Module.new {
attr_accessor :eol

def close
super if defined?(super)
eol.callbacks.each { |cb| cb.call }
end
})
body.eol = self

[status, headers, body]
end
end

app = FooApplication.new
eol = EndOfLife.new app
eol.callbacks

This keeps us from defining many proxy objects or module extensions during a response. We only define one module
extension, and hook any “end of life” hooks on to this instance. The downside is that we cannot guarantee the position
of this middleware in the middleware linked list. That means that the “end of life” middleware may not actually execute
at the end of the response!

A “real” solution

Rack’s interface is simple, and I like that. The simplicity is attractive, but the API seems to fall on it’s face
when we start talking about streaming web servers. If I remember correctly, Apache 1.0 modules suffered the same
problems that Rack is presenting us today. Maybe we should look at Apache 2.0 buckets and filters and design our API using patterns from a project that
has already solved this problem.

ZOMG I AM TIRED OF TYPING!!

I’m not happy with any of the solutions I’ve presented. All of them have downsides that I find unattractive. We can
live with the downsides, but life will suck. If any of you dear readers have better solutions for me, I am all
ears!

Thanks for listening, and HAVE A GREAT DAY!!!!

3 3 3 3 3

Edit: I just noticed that Rack contains a “timer” middleware similar to the one I’ve implemented in
this blog post. You can view the broken middleware here.

Jan 22,

448 words

RubyCommitters.org winners

Hi everybody!

I’m going to get this over. To me, this is like removing a bandage, I must do it all at once. I’ve increased the
Love Bucks, so I’ll list the winners along with their prizes:

- First place of 500 Love Bucks: mnutt

- Second place of 400 Love Bucks: fredwu

- Third place of 300 Love Bucks: WanderingMatt

- Tied for third place with 300 Love Bucks: ejc’s matzilla!

Winners, please send me your paypal address and I’ll send you the Love Bucks.

Okay, you can stop reading now

No, seriously. Stop reading. The rest of this post is actually for myself. I need to record this so that I can
remind my future self. This contest turned out to be more than I had expected. Every entry was above and beyond
anything I could have hoped or wished for.

However, there is a downside for me. I do not want to choose. Each entry was amazing. If I randomly came across
rubycommitters.org with any of the designs that had been submitted, I would think “wow, that’s a great website”. My
training through school was very analytical. I remember when I realized that judgement of work in English / Art classes
was more arbitrary compared to that of my Science and Math classes. It was a turning point in my life. I wanted to
focus on Sciences because the path seemed more clear.

Now, I’ve forced myself to judge something that is very arbitrary. Yes, there are tangible goals to this project.
Things like “which design communicates the information most effectively?”, “which will be easiest to maintain?”. But
even these questions are difficult for me to answer. Communicating information is important, but I also want to express
my feelings. Every one of the designs submitted shows my feelings in some way or another. I don’t know how to
measure my feelings, so I feel like I can’t accurately measure the submissions. How can I choose which of my feelings
is correct if there is no measurement?

This being said, I will probably not hold a contest again. I like sticking to code. Code is something I know how to
measure.

Why are you still reading?

I started this blog for entertaining my friends and myself. I’m glad I can use my hobby and work to teach, help, and
entertain others. I feel like many people I don’t know read this, so sharing my feelings on it is now difficult because
I am actually a shy person. I wish I could repay the kindness of the people that submitted designs to this contest. I
feel like Love Bucks isn’t enough.

Jan 21,

304 words

Ruby Committers Design Contest Update!

Update:

Hey folks, somehow I made a mistake and one entry was omitted from the index. Please take a look at static mirror, and vote for it here if you like it! Apologies to
the people that submitted this entry. I didn’t mean to miss this!

Non Update:

The deadline for entry was last night. I’ve compiled a static mirror of all of the entries here.

I am humbled, and incredibly impressed by the number and quality of all of the entries. I can’t thank everyone
enough for doing this. The quality of the results is so good, that I would really appreciate feedback from the
community.

Please check out the entries list. Carefully review all entries. Then, leave feedback by
either voting up the entry on github, or leaving a comment on my blog. I will take all feedback in to consideration
tomorrow when I decide the winner.

Remember that when you judge these designs, please judge just the design. If links are broken, or
encoding looks wrong, or something is a little bit off, it’s probably my fault. Pick the designs you
like the most, and we’ll polish them up after declaring a winner.

Please tell me about all of the designs you like. If you like 5 of them, let me know. It’s also
helpful to know why you like those designs.

As I said, I’ll declare the winner tomorrow before 23:59:59 PST.

Again, I really can’t thank everyone enough for doing this. The results are so much more than I could have hoped
for, or expected. You have all outdone yourselves! No amount of Love Bucks can repay for the awesomeness I’ve
witnessed, the best I can do is keep fixing bugs on Ruby, Rails, and any other project I get my hands on!

Thank you!

Jan 04,

465 words

rubycommitters.org design contest!

omg…. OMG…. ZOMG!!!!! HAPPY TUESDAY TO EVERYONE IN THE WORLD!!!!

Alright, now that the formalities are out of the way, LET’S GET DOWN TO BUSINESS! Some of you may or may not know, I
joined the Ruby core team in October 2009. I am very proud to be a member of ruby-core. However, I have noticed that
the Ruby core team does not have an awesome website like the Rails core
team.

To rectify this situation, I registered a domain: rubycommitters.org.
Unfortunately, my design skills are… sub-par. I would like to fist fix this by having a contest. I
would like you to code the design for rubycommitters.org.

How do I enter?

Just fork the rubycommitters.org project on github,
follow the instructions in the
README, and make the site look good! When you’re done, send me a pull request.

How many times can I enter?

As many as you want. However, you can only win one place.

When is the due date?

You must send me the pull request by January 19th, 23:59:59 PST.

When will winners be announced?

I will announce winners by January 21st, 23:59:59 PST. Once I’ve decided, I’ll email the winners to get their PayPal
information and transfer the money Love Bucks.

What are the prizes?

My employer pays me in Tenderlove Cash (from here on referred
to as “Love Bucks”), so the prize will be in Love Bucks. Fortunately for all of us, Love Bucks exchange with the US
Dollar at a 1:1 ratio. So I will send you your prize via PayPal in the form of US Dollars.

First Place: 200 300 Love Bucks (in the form of US Dollars)

Second Place: 100 Love Bucks (in the form of US Dollars)

All entrants will win a hug from me that is redeemable next time we meet each other!

How will entries be judged?

By me, however I want. I’ll probably ask the intertubes for help, but I have the final say.

Why is the prize so low?

These Love Bucks are coming out of my own wallet! Give me a break!

Conclusion

Since I announced I needed help last weekend, already 9 people have started working, so
you’d better get cracking!

I am proud to be a member of the Ruby core team, I’m proud to be involved in the Rails development team, and most of
all I’m proud to be a member of the best development community in the world. Thanks to everyone that makes being a
member of the Ruby community so awesome!

EDIT!!!!

@mariozig has graciously offered to up the ante. He has donated 100 Love
Bucks to the first place winner! That’s a total of 300 Love Bucks for the person who wins first place! Awesome!!!

Dec 11,

0 words

Writing Ruby C Extensions: Part 2

Dec 09,

398 words

Ruby Advent Calendar

Every year Japanese Rubyists participate in what is called the “Ruby Advent Calendar”.

What is the Ruby Advent Calendar?

Each day leading up to December 25th, one person posts an article to their blog and adds a link to their blog on the
Advent Calendar. So, 25 blog posts total. The posts can be about anything related to Ruby.

In my opinion, the Ruby Advent Calendar is about encouraging people to
blog about Ruby and help others participate in the Ruby community.

How I can participate?

In past years, the articles have mainly been in Japanese. This year, we’re trying to do an English language Ruby
Advent Calendar.

@yhara_en was kind enough to add English instructions. I will add screen
shots with notes here so that you can more easily participate.

Step 1: Get some Coffee

As I’ve said in previous blog posts, I love it when instructions tell you to get coffee because I
always do. So here is your opportunity. Go get some coffee!

Step 2: Click a Button

First, go to this link. Then click the button that says
“このエベントに参加登録する”:

image:Ruby Advent Calendar jp-en: 2010 : ATND

Once you’ve clicked that button, you need to register.

Step 3: Register

The easiest way to register is with your Twitter account. Click the link that says “Twitterでログイン”:

image:Ruby Advent Calendar jp-en: 2010 : ATND

You’ll be taken through the normal Twitter authorization path. That part is in English, so I’m not going to cover
it.

Step 4: Edit account details

Enter your name and website and click save (the button that says “保存する”):

image:users/profile : ATND

Step 5: Register for the Ruby Advent Calendar

Go back to the Ruby Advent Calendar and click the giant red button
again:

image:Ruby Advent Calendar jp-en: 2010 : ATND

This time it will ask you to enter a comment:

image:Ruby Advent Calendar jp-en: 2010 : ATND

So that we can coordinate better, I just said which day I would like to participate.

Step 6: Publish a Blurgh Post

On your day, publish your blog post, then head back to the advent
calendar, scroll to the bottom of the page, and link to your blog in the comments section:

image:Ruby Advent Calendar jp-en: 2010 : ATND

That’s it!

Happy Holidays, and Happy Blurghing!!!

333333 –tenderlove

Apr 17,

1115 words

Event based JSON and YAML parsing

Let’s use Ruby 1.9.2 and Psych to build an event based twitter
stream parser. Psych is a YAML parser that I wrote and is in the standard library in 1.9.2. Eventually, it will replace
the current YAML parser, but we can still use it today!

But you said YAML and JSON! wtf?

I know! In the YAML 1.2 spec, JSON is a subset of YAML. Psych
supports YAML 1.1 right now, so *much* (but not all) JSON is supported. Once libyaml is upgraded to YAML 1.2, it will
have full JSON support!

Why do we want to do an event based parser?

Twitter streams are a never ending flow of user
status updates, and if we want a process to live forever consuming these updates, it would be nice if that process kept
a low memory profile. Psych is built in such a way that we can hand it an IO object, it will read from the IO object,
then call callback methods as soon as possible. It buffers as little as possible, sending events as soon as possible.
If you are familiar with SAX based XML parsing, this will be familiar to you. Plus it is a fun problem!

Let’s start by writing an event listener for some sample JSON.

Event Listener

Our event listener is only going to listen for scalar events, meaning that when Psych parses a string, it will send
that string to our listener. There are many different events that can happen, so Psych ships with a handler from which you can inherit. If you
check out the source for the base class
handler, you can see what types of events your handler can intercept.

For now, let’s write our scalar handler, and try it out.

require 'psych'

class Listener < def="" scalar="" value="" anchor="" tag="" plain="" quoted="" style="" puts="" value="" end="" end="" listener="Listener.new" parser="Psych::Parser.new" listener="" parser.parse="" data="" __end__="" foo="" ="" bar="" re="">

If you run this code, you should see the strings “foo” and “bar” printed.

In this example, our handler simply prints out every scalar value encountered. We created a new instance of the
listener, pass that listener to a new instance of the parser, and tell the parser to parse DATA. We can hand the parser
an IO object or a String object. This is important because we’d like to hand the parser our socket connection, that way
the parser can deal with reading from the socket for us.

Hooking up to Twitter

It would be convenient for us if Twitter’s stream was one continuous JSON document. Why? If it was, we could feed
the socket straight to our JSON parser and start consuming events immediately. Unfortunately, Twitter’s stream is not
so kind for us event based consumers. We’ll need to trick our JSON parser to think the feed is one continuous document.
We’ll get tricky with our data in a minute, but first let’s deal with authentication.

Authentication

Twitter requires us to authenticate before we can consume a feed. Stream authentication is done via Basic
Auth. Let’s write a class that can authenticate and read from the stream. Once we do that, we’ll concentrate on parsing
the stream.

require 'socket'

class StreamClient
def initialize user, pass
@ba = ["#{user}:#{pass}"].pack('m').chomp
end

def listen
socket = TCPSocket.new 'stream.twitter.com', 80
socket.write "GET /1/statuses/sample.json HTTP/1.1\r\n"
socket.write "Host: stream.twitter.com\r\n"
socket.write "Authorization: Basic #{@ba}\r\n"
socket.write "\r\n"

# Read the headers
while((line = socket.readline) != "\r\n"); puts line if $DEBUG; end

# Consume the feed
while line = socket.readline
puts line
end
end
end

StreamClient.new(ARGV[0], ARGV[1]).listen

This class takes a username and password and calculates the basic auth signature. When “listen” is called, it opens
a connection, authorizes, reads the response headers, and starts consuming the feed.

Processing the Feed

If we look at the output from the previous script, we’ll see that the Twitter stream looks something like this:

512
{"in_reply_to_screen_name":null,...}

419
{"in_reply_to_screen_name":"tenderlove"...}

Which isn’t valid JSON. Instead, it’s a header (the number) indicating the length of the JSON chunk, the JSON chunk,
then a trailing “\r\n”. We would like the stream to look something like this:

---
{"in_reply_to_screen_name":null,...}
...
---
{"in_reply_to_screen_name":"tenderlove"...}
...

This chunk is two valid YAML documents. If the stream looked like this, we could feed it straight to our YAML
processor no problem. How can we modify the stream to be suitable for our parser?

Fun with Thread and IO.pipe

If we create a pipe, we can have have one thread process input from Twitter and feed that in to the pipe. We can
then give the other end of the pipe to our JSON processor and let it read from our processed feed. Let’s modify the
“listen” method in our client to munge the feed to a pipe, and hand that off to our YAML processor. I only care about
the text of people’s tweets, so let’s modify our listener too.

Here is our completed program:

require 'socket'
require 'psych'

class StreamClient
def initialize user, pass
@ba = ["#{user}:#{pass}"].pack('m').chomp
end

def listen listener
socket = TCPSocket.new 'stream.twitter.com', 80
socket.write "GET /1/statuses/sample.json HTTP/1.1\r\n"
socket.write "Host: stream.twitter.com\r\n"
socket.write "Authorization: Basic #{@ba}\r\n"
socket.write "\r\n"

# Read the headers
while((line = socket.readline) != "\r\n"); puts line if $DEBUG; end

reader, writer = IO.pipe
producer = Thread.new(socket, writer) do |s, io|
loop do
io.write "---\n"
io.write s.read s.readline.strip.to_i 16
io.write "...\n"
s.read 2 # strip the blank line
end
end

parser = Psych::Parser.new listener
parser.parse reader

producer.join
end
end

class Listener < def="" initialize="" was_text="false" end="" def="" scalar="" value="" anchor="" tag="" plain="" quoted="" style="" puts="" value="" if="" was_text="" was_text="value" text="" end="" end="" streamclient.new="" argv="" argv="" listen="" listener.new="" re="">

Great! In 30 lines, we’ve been able to provide an event based API for consuming Twitter streams. Were it not for the
feed munging, we could reduce that by 9 lines!

Problems

So far, there have only been two problems for me with this script. The first is that we are forced to buffer the
response from Twitter, but we cannot help that. The second is that sometimes the JSON emitted from Twitter is not
parseable by Psych. I think this is just due to Psych only supporting YAML 1.1.

Conclusion

It’s true that we could have implemented this same interface without a pipe and a thread. Rather than munging the
stream, we could create a new parser instance for each status update. But why create so many objects for parsing the
stream when we only need one?

Anyway, have fun playing with this code, and I encourage you to try out Ruby 1.9.2. I think it’s really fun! PEW PEW
PEW! HAPPY SATURDAY!

* * *

TABLE OF CONTENTS

Kindlefeeder Options

Your Feeds

El Tamiz
Tender Lovemaking

* * *