Parece que el equipo de Penn, Teller y Rob siguió después de las aventuras en Bell Labs. En youtube he encontrado este clásico del show de Letterman.

¡Eso sí que es tener un técnico de prestigio!

Spanish revolution

Posted: May 18, 2011 in Uncategorized

Update 19/05/2011: List of active camps: Right now there are 99 camps listed and growing. There are camps in cities like Paris, Lisbon, London, Budapest, Rome, Estambul…

Probably you have recently read some pieces of news about the Spanish strikes and demonstrations. You were luckier than us. But, I don’t know if you know the whole story so let me tell you my impressions from the front line.

Everything started with The Crisis. I think everyone in this planet is now affected somehow by this global crisis, but in Spain is was worse. We had our own local bubble that exploded at the same time as the global bubble. So, we end up suffering two financial crisis at once. Furthermore, a “socialist” party in the Government was giving for free -not selling- to big corporations the small parts of country that still public owned. Airports, trains, copyright management, lottery, even the health system! Add to that the housing bubble with prices 10 times higher that just 5 years before and 3 millions unemployed.

The solution from the Government, supported by the other mayor party and labor unions was -just few examples-

  • Extend the retirement age from 65 to 67.
  • Reduce the cost of dismissal to almost free even for permanent contracts. Result: 5 millions unemployed.
  • Create a plan to expend billions of Euros to promote terrain and building speculation through the creation of unnecessary public constructions.
  • Create a plan to save the banks with credits of very low interest rate. The difference with other countries is that the credit has been translated to public debt that has been bought by the same banks, which are giving a higher interest rate to the Government. Simple math: free money.

Just to remind you, in Spain there are around 23 millions of economically active population. That means almost 25% of unemployment. One out of four persons are unemployed right now!

There has been some strikes before, but were promoted by the same unions and parties that were supporting those “solutions”. So, nobody showed up. Furthermore, most of the heads and candidates or those unions and parties are involved in corruption plots.

Again, let’s put some numbers. This Sunday it’s elections day. Well, there are 123 candidates are now being investigated for corruption. That is more than 50% of the candidate list from PP and 35% from PSOE, the two major parties in Spain. And this time is only regional and local elections.

Furthermore, they started to blame young people for not being active. They called us the “no-no” generation. “No work, no studies”.

Through that growing corrupted system, media was controlled, banks were controlled, they even tried to control Internet. There promoted a law that states that a committee can close a webpage based on a link to illegal material. It doesn’t even need a judge to check if the material is actually illegal or the content at the other side of the link has changed, etc. The committee can take any arbitrary decision. It was called the Sinde law. By the way, one of the emails exposed by Wikileaks showed that the law was created ad-hoc based on a petition from the major audiovisual corporations and RIAA.

Thankfully, they were late and some political movements were created on Internet. The main difference with previous movements is that they were created by individuals, with no organization or backup support. Only citizens. The first one was #nolesvotes (donotvotethem), which appeared in Twitter as a reaction to the Sinde law, as a way to promote a vote against the mayor parties. The concepts are:

  • Do not vote the promoters of the Sinde law (PP, PSOE, CiU).
  • But you need to vote, because, with the current election system, that promotes a two-party system, a blank vote or an abstention help those parties.

This concept was automatically adopted by many people that were agains corruption and a two-party system, where both parties are the two sides of the same coin.

Almost in parallel, some guys decided to create the Democracia Real Ya (Real Democracy Now) movement to promote a demonstration on May 15th in Madrid. I guess the idea was similar to the “Geração À Rasca” in Portugal. The claims: think about your vote, don’t give it for granted, don’t let the corporations and bankers be puppeteers, read more…

The idea propagated only through Internet: facebook, twitter, email, etc. Again, it was promoted just by citizens. No support from media was given. However, it made it to the public. Soon, many other citizens were promoting a parallel demonstration in their own city. On May 15th, there were more than 50 cities all around Spain supporting that. One was already forbidden.

I was there and it was huge. Remember that it was only promoted through Internet, just like our fellows from Egypt and Portugal were doing some months ago. In Madrid, there were more than 100.000 people. In Barcelona, almost the same. In Zaragoza, were I was, thousands. more than half a million in total. I wasn’t expecting that. Nobody was expecting that…

In fact, the first reaction from the media came from… The Washington Post. There were a complete blackout from Spanish media. The next day, the first pieces of news were appearing, but most of them were biased and trying to manipulate the message. Some journals said it was a movement from the extreme right, others claim it was from the extreme left. In Zaragoza they said we were dozens. Yes, about 500 dozens!

Every demonstration was peaceful and quiet. Only in Madrid, there were some violent scenes that were repressed by policemen even more violently. Some pictures taken during the fights prove that there were some policemen infiltrated as the violent group.

As a reaction, some random people in Madrid, unrelated to the organizers of the demonstration, decided to stay there and camp in the middle of Madrid as a quiet protest. Again, it was promoted in Internet and soon became a great success. Right now, there are more than 50 camps in the major cities all around Spain. You can find more news in twitter with the hashtags #acampadasol, #yeswecamp, #spanishrevolution, etc. Even in London, Amsterdam and Berlin there are camps!

It was great and people make them huge, there were even more support than during the previous demonstration. Hundreds or thousands even in the smaller cities. Twitter is boiling. I get like hundreds of retweets every hour about the topic

At 5pm during the first night in the camp at Madrid, the police enter and disbanded everyone. It was declared illegal, although the Constitution says it can’t be. So, people came back the next day with a legal form. In some other cities it has been the same fight. In some cities, the policemen said that they were not only let the camp be, but they were also supporting the demonstration. In Valencia, the major, one of the candidates directly involved in oneof the biggest corruption plot in Spain, has declared that to avoid dirt in the camp area, they need to use high pressure hose every 2 hours.

Media are starting to react to the movement thanks to the social pressure, but still, only foreign journals have the strike in front page. Political parties are trying to manipulate the message in their favor, but it is too late. In the subway in Madrid, the speakers are saying that “people should not go to the camp” in a pure 1984 style. They even tried to promote laws against gatherings like back in the dictatorship days.

Now, the camp in Madrid and 3 other cities has been declared illegal because, and I quote: “…asking for a responsible vote can affect the electoral campaign.

Some people say that the camps are just a “bunch of hippies“. Check it out:

Hace poco, tuve el placer de tener largas y agradables conversaciones con uno de los mejores científicos que he conocido. Dada su juventud, estoy seguro que de llegara muy lejos, hasta el punto de ser conocido por gente ajena al ámbito científico.

En una de esas conversaciones, me recomendó un poema, de Rudyard Kipling, el escritor de origen Indio, famoso por Kim y El Libro de las Tierras Virgenes (que incluye el conocido relato, El libro de la selva).

He de decir que fui corriendo a Google a preguntarle. Y alli estaba. Leerlo es una gozada. Cada vez que lo lees y lo relees, descubres cosas nuevas. Algunos podrán decir que parece firmado por el mismísimo Perogrullo, pero es precisamente ese gran sentido común lo que le da la fuerza.

Pero lo que me pareció más brillante, es que desde el punto de vista de la carrera científica, resume los consejos que tantas veces me han repetido, e incluso aporta algunos nuevos que he descubierto útiles e incluso indispensables.

He pensado en traducirlo para mis lectores con escasos conocimiento de la lengua de Shakespeare, pero eso significaría destrozar la obra. Es como intentar redibujar un Van Gogh con rotuladores de colores y que quede igual. Les pido un pequeño esfuerzo y, a lo mejor, alguna consulta al diccionario, para que puedan ver el poderío de la obra.

Y sin más por mi parte, les dejo con el maestro…


If you can keep your head when all about you
Are losing theirs and blaming it on you,
If you can trust yourself when all men doubt you
But make allowance for their doubting too,
If you can wait and not be tired by waiting,
Or being lied about, don’t deal in lies,
Or being hated, don’t give way to hating,
And yet don’t look too good, nor talk too wise:

If you can dream —and not make dreams your master,
If you can think —and not make thoughts your aim;
If you can meet with Triumph and Disaster
And treat those two impostors just the same;
If you can bear to hear the truth you’ve spoken
Twisted by knaves to make a trap for fools,
Or watch the things you gave your life to, broken,
And stoop and build ’em up with worn-out tools:

If you can make one heap of all your winnings
And risk it all on one turn of pitch-and-toss,
And lose, and start again at your beginnings
And never breath a word about your loss;
If you can force your heart and nerve and sinew
To serve your turn long after they are gone,
And so hold on when there is nothing in you
Except the Will which says to them: “Hold on!”

If you can talk with crowds and keep your virtue,
Or walk with kings— nor lose the common touch,
If neither foes nor loving friends can hurt you;
If all men count with you, but none too much,
If you can fill the unforgiving minute
With sixty seconds’ worth of distance run,
Yours is the Earth and everything that’s in it,
And —which is more— you’ll be a Man, my son!

— Rudyard Kipling

El fallo del vuelo 501 del Ariane 5 quizá se haya convertido en el primer bug informático de consecuencias catastróficas.

Image from Wikipedia,
using GNU FDL.

En términos generales, el Sistema de Control de Vuelo del Ariane-5 es de un diseño standard. La orientación de la lanzadera y sus movimientos en el espacio son medidos por un Sistema de Referencia Inercial (SRI). Éste tiene su propio computador interno, en el cual los ángulos y las velocidades se calculan sobre la base de la información de una plataforma inercial, con giroscopios láser y acelerómetros. Los datos del SRI se transmiten a través del bus de datos a la Computadora de a Bordo (OBC), la cual ejecuta el programa de vuelo y controla las bocas de los propulsores sólidos y el motor criogénico Vulcain, por medio de servoválvulas y actuadores hidráulicos.

Con el objetivo de mejorar la fiabilidad hay una redundancia considerable en el equipos. Hay dos SRIs operando en paralelo, con idénticos hardware y software. Un SRI está activo y el otro está en stand-by, y si el OBC detecta que el SRI activo ha fallado inmediatamente conmuta al otro, siempre y cuando esta unidad funcione correctamente. Del mismo modo hay dos OBCs, y algunas otras unidades en el Sistema de Control de Vuelo están también duplicadas.

Un estudio preliminar mostró que el cohete funcionaba perfectamente hasta H0+36 (36 segundos después del despegue). En ese instante, el Sistema de Referencia Inercial de reserva (SRI1) comenzó a fallar. Acto seguido, el Sistema de Referencia Inercial principal (SRI2) fallaba también. Las bocas de los dos propulsores, seguidas por el motor principal Vulcan giran bruscamente, provocando un giro brusco de todo el cohete. El fallo ya es inevitable. Se activa el sistema de autodestrucción, rompiendo los enlaces entre los propulsores y la etapa principal, siguiendo lo programado en tales circunstancias.

Un estudio más detallado permitió establecer la siguiente cadena de sucesos:

* La lanzadera se empezó a desintegrar hacia H0+39 segundos a causa de las altas cargas aerodinámicas debidas al ángulo de ataque de más de 20 grados que provocaron la separación de los propulsores de la etapa principal, disparando el mecanismo de autodestrucción de la lanzadera
* Este ángulo de ataque fue causado por deflexiones límite de las bocas de los propulsores sólidos y del motor principal Vulcain.
* Estas deflexiones de las bocas fueron ordenadas por el software del OBC sobre la base de los datos transmitidos por el Sistema de Referencia Inercial activo (SRI 2). Parte de estos datos en ese momento no contenían datos de vuelo correctos, pero mostraban la plantilla de diagnóstico de la computadora del SRI 2, por lo cual fueron interpretados como datos de vuelo.
* La razón por la que el SRI 2 no enviaba datos de orientación correctos fue que la unidad declaró un fallo debido a una excepción de software
* El OBC no pudo conmutar al SRI de reserva, el SRI 1 porque dicha unidad ya había dejado de funcionar durante el ciclo de datos previo (periodo de 72 milisegundos) por la misma razón que el SRI 2.
* La excepción de sofware interna del SRI fue causada durante la ejecución de una conversión de datos desde coma flotante a 64 bits hasta valor entero con signo de 16 bits. El número en coma flotante que fue convertido tenía un valor mayor del que podía ser representado por un entero con signo de 16 bits. Esto dio lugar a un Error de Operando. Las instrucciones de conversión de datos (en código Ada) no estaban protegidas de causar un Error de Operando, aunque otras conversiones de variables comparables en el mismo lugar en el código estaban protegidas.
* El error ocurrió en una parte del software que únicamente realiza alineamientos de la plataforma inercial. Este módulo software computa resultados significativos solamente antes del despegue. Tan pronto como la lanzadera despega, esta función deja de ser útil.
* La función de alineamiento está operativa durante 50 segundos después del comienzo del Modo de Vuelo de los SRIs, lo cual ocurre en H0-3 segundos para Ariane-5. Consecuentemente, cuando el despegue tiene lugar, la función continúa durante aproximadamente 40 segundos de vuelo. Esta secuencia de tiempo está basada en un requerimiento de Ariane-4 y no se requiere para Ariane-5.
* El Error de Operando ocurrió debido a un valor inesperadamente alto de un resultado de una función de alineamiento interno llamado BH, Horizontal Bias, relacionado con la velocidad horizontal detectada por la plataforma. Este valor es calculado como un indicador para la precisión de alineamiento con el tiempo.
* El valor de BH era mucho más alto que el esperado porque la primera parte de la trayectoria de Ariane-5 difiere de la misma en el Ariane-4 y los resultados en valores considerablemente altos de velocidad horizontal.

Como vemos, los dos Sistemas de Referencia Inercial fallaron por una excepción de software que reseteó ambos sistemas. Sin embargo, un Sistema Inercial basa su estimación en una serie de medidas que, recursivamente, corrigen la estimación en el instante anterior. El hecho de reiniciar los sistemas hizo perder la estimación anterior y por lo tanto, inutilizo los sistemas.

La excepción ocurrió por un desbordamiento de memoria. El problema con los ordenadores es que existen infinitos números enteros, pero además, existen infinitos números reales entre cada par de números enteros. Demasiados infinitos para una cantidad limitada de memoria. Además, esos números los tenemos que codificar en memoria como números binarios, lo que dificulta los cálculos con decimales. Y por si fuera poco, cadenas binarias más grandes implican más coste de procesamiento.

Así que normalmente los números se almacenan en cadenas binarias que suelen ir desde 8 a 64 bits. Un bit es un dígito binario, es decir, puede valer 1 o 0. Con esto, podemos representar 2^64 números distintos, que no esta nada mal, aunque sigue estando lejos de infinito. Para facilitar aun más las cosas, se suelen utilizar varios formatos. Por ejemplo, si queremos representar números enteros, nos olvidamos de la parte decimal. Para números con decimales se utiliza un método de base y exponente que permite trabajar con números muy grandes con muchos decimales almacenándolos en poco espacio.

El problema es cuando estamos trabajando con enteros y al hacer la división nos sale un número con decimales, o viceversa. Entonces tenemos que convertirlos. Pero hay que tener cuidado en estos cambios, ya que normalmente los números enteros trabajan con más precisión, pero en rangos más pequeños.

Normalmente en estos casos, se suelen hacer dos cosas. La más “elegante” es programar un sistema inteligente de conversión, que nos garantiza que la conversión se va a hacer bien y no se va a perder información. Es lo que se llama una conversión protegida. El problema es que hacer esas comprobaciones requiere un tiempo de cálculo extra. La que más se suele emplear, también por comodidad, es precalcular los posibles valores que va a tener esa variable. Por ejemplo, si esa variable sirve para contar los alumnos en una clase, y el rango admisible es hasta 100 mil millones, pues sabemos que no va a haber riesgos de desbordamiento. Nos sobra. Además tiene la ventaja de que no necesita cálculos extra.

En el caso del fallo del Ariane 5, algunas variables estaban protegidas, pero la carga del computador ya era del 80%. Seguir protegiendo conversiones podría desencadenar un desbordamiento del procesador, que es aun peor. ¿Qué hicieron los ingenieros? Aplicar el segundo caso y precalcular el tamaño de la variable.

También se ha observado, que de haber seguido con el dato erróneo, y las estimaciones anteriores, se podría haber seguido con la misión. El hecho de resetear los sistemas inerciales fue crítico. Sin embargo, el gabinete de diseño del Ariane-5, nunca se planteo un error interno, y en las especificaciones solo se tenían en cuenta errores aleatorios, ante los cuales, no era aconsejable continuar. El manejo de la excepción se podría haber mejorado, pero nadie incluyó esa parte en las especificaciones del diseño.

Bien, ¿y por qué falló el sistema, siendo que se habría precalculado el límite? ¿Por qué se salio de rango la variable?

Aunque no lo parezca, la responsable final es una decisión política. Siendo claros, el Ariane-5 nunca hizo falta. Eso lo sabe cualquier persona que trabaje en la ESA. Sin embargo, el sistema político de la ESA, le obliga a comprar tecnología a los distintos países en función de la inversión que estos hacen a la ESA. Es decir, si España paga el 10% de los fondos de la ESA, esta tiene que hacer el 10% de sus compras a empresas españolas.

El Ariane-4 funcionaba perfectamente, pero había que comprar algo a Francia y Alemania. Y tenía que ser algo realmente caro para cerrar el presupuesto. Pues nada, compramos un cohete. El problema es que el coste del Ariane-5 es prohibitivo. No solo de diseño, si no también de uso. Normalmente, la calidad de un cohete se mide en el coste de poner un kilo de materia en órbita. Pues bien, aunque la carga útil del Ariane-4 es menor, el coste por kilo es mucho más barato. Así que, en las últimas fases de diseño, se vio que el cohete iba a salir muy caro y la ESA no lo compraría. Se tomó la decisión de recortar costes.

Curiosamente, en la traducción que he encontrado en español del informe, se ha perdido una frase que a mi me parece fundamental.

The design of the Ariane 5 SRI is practically the same as that of an SRI which is presently used on Ariane 4, particularly as regards the software.

Es decir, que el software del Ariane-5 es una copia exacta del software del Ariane-4. Fue una forma de reducir costes. Más abajo encontramos este párrafo:

Los requerimientos originales que se tienen en cuenta para la operación continuada del software de alineamiento después del despegue fueron llevados a cabo después de hace más de 10 años para los modelos tempranos de Ariane, con el objetivo de manejar el improbable suceso de una suspensión de la cuenta atrás, entre -9 segundos, cuando el modo de vuelo empieza en el SRI de Ariane 4, y -5 segundos, cuando ciertos sucesos son iniciados en la lanzadera, los cuales llevan varias horas de reinicialización. El periodo seleccionado para esta operación de alineamiento continuada, 50 segundos después del comienzo del modo de vuelo, estaba basado en el tiempo necesario para que en equipo de tierra retomara el pleno control de la lanzadera en el caso de suspensión.

Esta especial prestación hacía posible con las versiones anteriores de Ariane el recomenzar la cuenta atrás sin esperar al alineamiento normal, lo cual lleva 45 minutos o más, por lo que la corta ventana de lanzamiento podía aún ser usada. De hecho, esta prestación fue usada una vez, en 1989 en el vuelo 33.

El mismo requisito no se aplica a Ariane-5, el cual tiene una secuencia de preparación diferente y fue mantenido por razones de uniformidad, presumiblemente basadas en la hipótesis de que, a menos de que se probara su necesidad, no era preciso hacer cambios en el software que funcionaba bien en Ariane-4.

Es decir, estaban utilizando el software del Ariane-4, basado en unas especificaciones de hacía 10 años, en una plataforma totalmente distinta y con una secuencia de lanzamiento diferente. Es decir, los ingenieros de software del Ariane-4 hicieron bien su trabajo. Lo que nadie les dijo, es que su mismo programa iba a ser utilizado en el Ariane-5, con unas condiciones totalmente distintas, por motivos político-económicos. Todos los precálculos que habían hecho fueron inútiles. Y, por ahorrar costes, nadie se molestó en repetirlos.

Mucha gente se empeña en decir que este fue el primer caso de un bug informático grave. Como hemos visto, el programa seguía las especificaciones impuestas. El problema es que cuando cambias las especificaciones, no puedes pedir que siga funcionando igual.

Es como un coche con un motor estupendo. Si le quitas los neumáticos, las llantas se romperán, el coche no andará y posiblemente acabes quemando el motor y la trasmisión. ¡Pero sería de locos echarle la culpa al motor de eso!

Más información:

Actualización: Por supuesto, Omalaled lo cuenta muy bien en su blog. A pesar de que es un blog que sigo casi a diario, había olvidado que él había hecho esa entrada.

También en Youtube se puede encontrar el vídeo de la explosión.

¿Qué tienen que en común un premio Nobel en astrofísica, dos de los mejores programadores de todos los tiempos y dos magos, escritores y cómicos?

La respuesta es: un timo.

En 1989, “Rob” conoció a “Penn” y se hicieron amigos. Esa frase por si sola no tiene mucho sentido, así que pongamonos en situación.

“Rob” es, ni más ni menos que Robert C. Pike, miembro del equipo de desarrollo de Unix, posiblemente el sistema operativo más importante en la historia de los ordenadores, creador del sistema operativo Plan 9, autor de varios de los libros más famosos sobre programación y creador del sistema de caracteres UTF-8, con el que leéis este blog.

“Penn” es Penn Jillette, cómico e ilusionista americano. Él es el Penn de “Penn & Teller”, un dúo de actores que durante años ha hecho películas, actuaciones en Broadway y miles de programas en televisión. Famosos por desvelar sus trucos y por perseguir a charlatanes y embaucadores. Su último programa, Bullshit!, es uno de los programas más críticos y directos de la historia de la televisión. También es musico e inventor.

La situación era perfecta, a Penn le encantan los ordenadores y la ciencia, y a Rob le encantan los trucos, así que había que hacer un truco científico. Se estaba preparando el timo del siglo. Pero para hacer un timo, necesitaban un equipo. Así que consiguieron la colaboración de sus amigos “Teller” y “Dennis”.

“Teller” obviamente es Raymond Joseph Teller, el compañero incansable de Penn y autentico maestro del juego de manos. Además de un mimo excelente ya que casi nunca habla en el escenario.

Y “Dennis” es Dennis MacAlistair Ritchie, un nombre que todo informático debería conocer. Es co-creador del sistema operativo Unix, del que ya hemos hablado, e inventor del lenguaje C, posiblemente el lenguaje más empleado a nivel mundial. Es muy probable que más de la mitad de las aplicaciones que se estén ejecutando en tu ordenador, incluido el sistema operativo, estén programadas en C. Si incluimos en la cuenta a su “descendiente”, el lenguaje C++, es posible que sean el 90% de todos los programas que has ejecutado. Casi nada.

Menuda cuadrilla.

Solo faltaba el objetivo. Tenía que ser un objetivo lo suficientemente ambicioso e interesante como para hacer un timo que realmente mereciese la pena. Y qué mejor que el jefe de Rob y Dennis, vicepresidente de Bell Labs y premio Nobel, Arno Penzias.

Así nació Labscam, una de las mejores bromas de cámara oculta de la historia. Y fue totalmente “amateur”, grabado con equipo y personal de los Bell Labs y con guión de Penn y Teller. El propio Dennis lo cuenta de su puño y letra.

La idea era hacer creer a Arno, que Rob había desarrollado un sistema de reconocimiento de voz tan avanzado que permitía al sistema realizar diálogos sobre la marcha con gente real basándose en entrevistas pregrabadas. Todo un alarde de imaginación y ciencia ficción. Es importante destacar que estamos en el año 1989, en plena época de los 8 bits, del Spectrum y del Amstrad. Y no olvidemos que todo es un montaje. Aun así, Rob y Dennis se montan un sistema de digitalización y reconocimiento de voz, de seguimiento de los labios con cámaras y de videoconferencia por ordenador. Increíble. No me extraña que el pobre Arno tardase días en reconocer y asumir que le habían engañado vilmente.

Y gracias a las maravillas de Youtube, aquí esta Labscam.