Cuando el informático la pifia

A veces los informáticos hacen mal las cosas. Bueno, todo el mundo, pero los fallos informáticos tiene un nosequé que los hace misteriosos. Un fallo informático siempre parece inexplicable, algo que no debería suceder. Pero ya sabemos que los fallos suceden. Un buen informático tiene que diseñar su aplicación de modo que esta sea lo más confiable posible. Esto incluye evitar que los fallos y errores se conviertan en averías: hace mucho tiempo ya hablamos de esto: se llama tolerancia a fallos.

Otras veces sencillamente, los errores son tan tontos que claman al cielo y merecen ser ocultados para salvar la vergüenza de sus responsable. O públicamente expuestos para su escarnio. Pues bien, en Risk han optado por esto último. A modo de foro se exponen casos de lo que se conoce como "cagadas". Algunos tontos, otros graves, pero siempre evidentes. No todos son informáticos. No todos son bugs. Pero todos son, al menos, curiosos.


  • La alarma de mi portátil funciona acorde con el tiempo local de Estados Unidos en vez de con el tiempo del Reino Unido (donde he viajado) sin que pueda cambiarlo. Esto sucede aunque cambie el tiempo local de mi portátil al del Reino Unido.

  • Una compañía de teléfonos de Taiwan ocultaba parte de los teléfonos en la correspondencia con los clientes. Por privacidad, en las misivas sólo se muestran los números pares del número de teléfono al que se da servicio 2*8*4*8*. Para mayor seguridad, también se ocultan los dígitos impares del número de contacto *5*5*7*0. Pero si resulta que éste coincide con el anterior, ¡entonces se está revelando todo el número!.

  • Un "0" se les cayó del precio de un PC vendido por Marubeni, una gran compañía de venta web. Antes de que se dieran cuenta del error, alrededor de 1000 personas compraron 1500 unidades. En vez de 198000 yenes (unas 198000 pesetas) se vendieron a 19800 yenes. Tras percatarse del error, la compañía trató de oponer resistencia al cumplimiento del acuerdo. Sin embargo, finalmente decidieron ceder para mantener la fidelidad de sus compradores.

  • Después de que junto la cartera me robaran la tarjeta de crédito (American Express), cancelé la misma y obtuve una nueva. Un mes después, habían sido cargados a mi cuenta dos gastos de American-On-Line que yo no había realizado.

    Según AOL, dos cuentas se habían abierto a mi nombre y, cuando se intentó realizar algún gasto con ellas, AOL encontró que la tarjeta había sido cancelada. Sin embargo, ante estas situaciones, se consulta (automáticamente, claro) a American Express, cuya política es la de... ¡proporcionar el número de la nueva tarjeta!. Por cierto, las cuentas abiertas en AOL estaban a nombre de mi hija y de mi mujer. (Esto no es un bug: esto es una cabronada de AmEx)

  • Adam Abrams no podía crear una cuenta en un servidor. Recibía un mensaje de notificación "La razón por la que no puedes crear una cuenta es debido a que su dirección de correo ha sido marcada por nuestra tabla de palabras inadecuadas". Tras mucho investigar descubrió que no era "bra" (sujetador), el problema era "dam" (maldición).

  • Envié una carta de referencia a la Fundación Hertz recomendando a un estudiante. La Fundación requiere una firma electrónica en la recomendación. La firma constaba de una página web con un formulario donde se podía leer algo así como: "Certifico que soy la persona de abajo:" y un cuadro donde escribir el nombre.

  • En Nueva York murió una persona porque los servicios de emergencia no pudieron localizar su apartamento. El problema fue que vivía en en un edificio con una dirección de 5 dígitos, mientras que el sistema para enviar a los profesionales de los servicios de emergencia sólo admitía 4 dígitos.

  • El Ariane 5, cohete estrella de la Agencia Espacial Europea voló por los aires el 4 de Junio de 1996 a los pocos segundos de su despegue. Al parecer una conversión de un número de 64 bits en un entero de 16 resultó en un desbordamiento. Este entero controlaba la estabilidad del aparato, de modo que el cohete trató de rectificar su posición (correcta), inclinándose un poco. Cuando, error tras error, el cohete superó la inclinación de seguridad permitida, se autodestruyó. El error se había producido por una incorrecta adaptación del código (en Ada) que regía el Ariane 4.

  • A veces, por más que se hagan bien las cosas, la fatalidad está asegurada.

  • En el desarrollo de un avión bombardero se diseñaron tres esquemas de prueba independientes para evitar cierto efecto causado por la vibración de la cola del aparato (NOTA AL MARGEN: los aviones son tan seguros que llevan un retraso tecnológico de unos 15 años. Por seguridad, protocolos, planificadores, redes, tecnologías demasiado nuevas no se aplican a causa del temor a que fallen).

    1. Un túnel de viento fue construido expresamente para investigar el efecto de estas vibraciones. El túnel se probó sobre un modelo a escala del avión.
    2. Se hicieron test de resonancia sobre el primer prototipo, con los que se ajustaron ecuaciones aerodinámicas.
    3. Se hicieron test en vuelo a baja velocidad, cuyos resultados se extrapolaron para analizar las vibraciones a alta velocidad.

    Los tres tests condujeron a similares resultados y se concluyó que no había problema con el diseño de la cola para ninguna velocidad. Poco después, mientras el primer prototipo estaba realizando maniobras a alta velocidad y baja altura, la cola se rompió, estrellándose el avión y muriendo su tripulación. Acto seguido se inició una investigación, que concluyó con los siguientes resultados:

    1. La rigidez de una parte del túnel de viento construido no era la adecuada.
    2. Un término en las ecuaciones aerodinámicas era incorrecto.
    3. Los ingenieros se equivocaron al interpretar los resultados de los tests a baja velocidad.

    Y, debido a la mala fortuna, todos los resultados conducían a la misma errónea solución.


  • Y, a veces, las cosas se hacen demasiado bien.

  • El sistema de teléfono de emergencia 911 de las mayores ciudades de Minnesota fue convertido a digital. De este modo se introducían menores interferencias en la lineas. La gente, que estaba acostumbrada a escuchar el ruido de la linea al descolgar el teléfono1 quedaba extrañada al no escuchar nada y pensaba que había un problema con su conexión.


  • 1 No en todos los lugares del mundo hay tonos

    The RISK Digest. Forum On Risks To The Public In Computers And Related Systems

    Posts relacionados

    Ciclo de charlas-degustaciones

    Talleres de introducción al mundo de la cerveza
    Este ciclo está pensado para aquellas personas interesadas en descubrir el amplio mundo de la cerveza. Entusiastas que buscan conocer diferentes estilos y como elegirlos. Consta de charlas de aproximadamente 2 horas de duración en las que se expone y comenta acerca de el estilo elegido y finaliza con una degustación de algunos exponentes del mismo, en un clima informal y distendido.

    Cada mes un estilo
    -Conociendo el estilo
    -Origen e historia
    -Elaboraciòn
    -Maridajes
    -Degustaciòn

    Inicio del ciclo:
    Charla de introducción, las dos familias principales: Ales y Lagers

    Marzo:
    Cervezas de Trigo. Para el calor, nada como una cerveza de trigo, suave y refrescante. Estilos alemanes: Bavarian weizen (heffen weizen y cristal weizen), Dunkels, Berliner. Estilos belgas (Wit-bier y cervezas de trigo especiadas). La nueva generación de cervezas de trigo inglesas y americanas.

    Abril:
    Bitter. Su origen y evolución, la clásica cerveza inglesa de pub. El lúpulo en su máxima frescura aromática. La importancia del balance, el amargor y la sequedad. Pale Ale (una Bitter embotellada?) IPA, atravesando mares....

    Mayo:
    Porter, un clásico inglès. Desde las primitivas Entire, y las Plain Porters a los actuales sub-estilos. Brown, Robust y Bàltic Porter.

    Junio:
    Stouts, de Londres a Dublín. Dry, Sweet, Oatmeal, Foreing e Imperial. Robustas y sociables, esa negra debilidad.

    Julio:
    Cervezas fuertes para combatir el frìo. Old Ales, fuertes, complejas, añejas, nada mejor para el frìo invierno. Barley Wine, la potencia hecha cerveza. Doppelbock, Ice-Bock e Imperial Stout, cervezas de sobremesa.

    Agosto:
    Ales con acento en las maltas: Milds, Browns, Irish Red y Scottish Ales, el papel de las maltas caramelo, el suave dulzor y el balance final.

    Septiembre:
    Bock, se acerca la primavera y los primeros soles invitan una cerveza al aire libre. Maibock, Bock tradicional, Doppelbock.

    Octubre:
    Octoberfest, casi una obviedad...antiguas y modernas interpretaciones del estilo. Sus hermanas Marzen y Viena.

    Noviembre:
    Golden Ale, el calor ya està de vuelta y requiere cervezas frescas, suaves y aromáticas. Helles Munich, Pilsens, Kôlsch. El nacimiento de un estilo aùn no definido totalmente: Golden Ale, sus perfiles e interpretaciones.

    Clases especiales:

    Ales alemanas:
    Alt-bier y Kôlsch, productos netamente regionales y a la vieja usanza.

    Cervezas de Abadía y Trapenses:
    Complejas y fuertes exponentes de la cultura cervecera belga.

    Receta Pale Ale

    Esta receta la usamos por primera vez en una cocción compartida con Gabriel Castel, de hecho la idea original le pertenece casi por completo, solo le hicimos unos retoques, y en esta última versión, que fué la que se elaboró en el taller del sábado 16-02-08, la única variante fué el cambio de lúpulo de amargor (el original era el Brewer's Gold, a falta de éste lo reemplacé por Hallertau Magnum, afortunadamente parece que el Brewer's Gold se va a volver a conseguir por estas tierras).
    Vamos a la receta:
    Maltas: 83% Pilsen Cargill, las especiales son todas de BAMalt: 8% Biscuit, 3% Carapils, 3%Melanoidina y 3% Caramelo 60 L.
    Empaste inicial: 2,5:1 a 65°C por 60', luego 3,5:1 a 68°C por 30'.
    Recirculado y elevado de T° mediante Herms. Tiempo total de recirculado 40', subiendo los primeros 10' hasta 72°C manteniendo a esa T° por 20' y llegando en los últimos 10' a 76°C (mash out).
    Lavado del grano a 78°C
    OG: 12°P (1048)
    Hervor: 90'
    Adiciones de lúpulo: '60 Magnum para 20 ibu's, '20 Kent Golding para 8 ibu's y '6 Kent Golding para 3 ibu's (ibu's totales: 31)
    Levadura: Saf S-05, fermentación primaria a 18°C, guarda: 2 días a 18°C y 20 días a 4°C.
    Embotellado con 6 grs de azúcar de maíz por litro.

    Lo que se busca en esta Pale es que el lúpulo se destaque en sabor y aroma pero sin tapar por completo las notas aportadas por las maltas. El blend de maltas se eligió apuntando a que las maltas caramelo aporten su típico sabor y le den el color ambar cobrizo, en el caso de la malta Biscuit la idea es que aporte un tostado muy suave y el clásico gusto a galleta y pan fresco. La levadura S-05 nos va a dar tonos ligeramente afrutados y una buena atenuación que resultará en una cerveza liviana y fresca pero con algo de cuerpo y sabor pleno a malta y lúpulo.

    En el mes de abril en nuestro ciclo de charlas de estilos estaremos disfrutando esta Pale y una Bitter también de nuestra producción, junto a algunas otras Pale y alguna Ipa de afamadas marcas inglesas.

    curso 16-02-2008

    Curso 16-02-2008
    El pasado sábado tuvimos un nuevo taller de elaboración de cerveza, en este caso auspiciado por la gente de Buenos Aires Brew, proveedores de insumos para cervecería (http://www.babrew.com.ar/).
    Comenzamos la jornada como es costumbre a las 9:00 a.m. La receta elegida en este caso fué una Pale Ale cuya receta será publicada en este blog en los próximos días.



    Calentando el licor para comenzar el mash.

















    Luego de toda una jornada de cocción, llegó el momento de recuperar energías, una rica focaccia y unas pintas de Porter.









    Una refrescante Golden Ale para finalizar la tarde.....

    En la próxima actualización la receta de la Pale y el calendario 2008 de degustaciones.

    CSI X: cuando la cosas ocupan menos

    Recuerdo perfectamente una de las primeras clases de informática, allá en primero. Bueno, no, eso sería casi un milagro habida cuenta que no recuerdo qué comí ayer... Pero sí que recuerdo una frase pronunciada por un profesor, a modo de jocosa obviedad. "Dicen que 'el saber no ocupa lugar'... ¡No pollas!".

    Y es que el saber, cualquier tipo de información, SÍ ocupa lugar. Y sea del tipo que sea, ese lugar tiene un coste o precio. El cerebro también tiene un coste, por más que algunos se empeñen en destrozarlo a base de etanol o mítines. Por ello siempre que podamos comprimir los datos, información o saber (y el coste de la compresión no supere al de sus beneficios, claro está) nos interesará hacerlo. De este modo saldremos ganando espacio. Pero... ¿pueden ocupar las cosas menos lugar de lo que ocupan?. ¿Cómo se realiza este milagro?

    Pues eso, en Cosas que Sí se dan en Informática, hablaremos de compresión.


    Utilizaremos a modo de ejemplo las letras. Supongamos que queremos comprimir un fichero de texto que tan sólo contiene caracteres de nuestro alfabeto (unos 25 caracteres), por simplificar. Sabido es que en Informática los computadores sólo entienden de unos y ceros (bits). Bien, normalmente se emplean 8 bits para codificar caracteres (codificación ASCII extendida). Con 8 unos y ceros podemos codificar 256 (28) 'letras' distintas... pero si ya sabemos que nuestro fichero tiene tan sólo 25 letras distintas... ¿para qué queremos tantas?. Quitemos bits.

    Para codificar 25 caracteres distintos necesitamos al menos 5 bits, ya que 25 es 32. Por tanto, un fichero con 10 caracteres ocuparía 50 bits. Pero imaginemos que, de estos 10 caracteres, 4 son 'a's. ¿Ya que hay más 'a's, no ganaríamos espacio si codificamos las 'a's con unos pocos menos bits que el resto?.

    Esa es la idea base de la codificación Huffman, desarrollada por el señor del mismo nombre en 1951. Aunque variantes de la misma codificación son más eficientes en determinadas circunstancias, Huffman encontró la forma óptima de mapear cualquier símbolo de una alfabeto con una secuencia de bits de longitud óptima. La idea es tan sencilla y elegante que bien merece la pena explicarla.

    Partimos de una alfabeto y una cadena de letras. Supongamos que nuestra cadena es 'aavnvavfja'. Conociendo la cadena, podemos asociar a cada símbolo de nuestro alfabeto una cuenta de apariciones. Esto se llama histograma. Por tanto, tenemos que a --> 4, v --> 3, n --> 1, f --> 1, j --> 1. El resto de símbolos son ceros. Bien, pues ahora vamos a construir un arbol binario. Árbol porque es un árbol al revés. Binario, porque cada rama se separa en 2 ramas. Cogeremos los dos símbolos con menor número de apariciones y los agruparemos, sumando sus apariciones: 'fj' --> 2. Y volvemos a operar del mismo modo... y otra vez y otra... ¡hasta que la raíz del árbol agrupa todos los símbolos! (ver imagen).

    Y ya está. Porque si asignamos un bit a cada rama del árbol, '0' para la izquierda '1' para la derecha, podemos obtener el código para cada símbolo sin más que andarnos por las ramas encadenando estos bits hasta llegar al carácter que deseamos codificar. Codifiquemos, pues, nuestra cadena 'aavnvavfja'.
    001011010010111011110
    Hemos utilizado 21 bits. De codificar cada símbolo con 8 bits habríamos gastado 80. 50 si sólo codificáramos con 5 (alfabeto de 25 letras). Y 30 si codificáramos cada símbolo de este alfabeto en particular {a, v, n, f, j} con 3 bits.

    ¿Está ya nuestra cadena comprimida?. Pues no. Porque además de comprimirla, queremos enviarla por correo, que le llegue a un amigo y que éste, sin tener ni idea de cual era la cadena original, poder descomprimirla y leerla. Para eso es necesario que nuestro amigo conozca, bien la tabla de códigos que hemos creado, bien el histograma de apariciones de la cadena original. Aunque el histograma puede ser muy grande si el alfabeto lo es, su tamaño será despreciable cuando consideremos cadenas de miles y miles de bits.
    Con el histograma nuestro amigo (o el descompresor de nuestro amigo) puede construir el mismo árbol que hemos creado y decodificar la cadena. Para ello sólo tiene que 'andarse por las ramas' con los símbolos que le han llegado.

    El primero es un 0. Se anda por la rama izquierda y llega a la 'a'. Ya tiene un símbolo. Otro 0: se anda por las ramas y consigue otra 'a'. Ahora un 1: rama derecha. 0, rama izquierda: ha encontrado una 'v'... y así hasta completar la cadena entera.

    Y ya está: una cadena que tendría 8 bits por símbolo de codificarse ASCII se comprimiría hasta 2.1 bits por símbolo (21 bits, 10 símbolos). Bueno, no está, porque este tema tiene mucha tela por cortar. ¿Sabéis que se puede calcular el mínimo de bits por símbolo necesarios para representar una cadena?. Lo hizo Claude Shannon, padre de la teoría de a información, antes de que Huffman inventara este método. El mínimo número de bits con el que se puede codificar una cadena viene definido por la entropía de primer orden.

    En nuestro caso, H = 2.046439. Así que nuestra codificación Huffman no está nada mal. Hay mejores codificadores que los de Huffman, ojo. Por ejemplo los codificadores aritméticos. Sin embargo, Huffman se sigue gastando mucho... más que nada porque estos últimos (que tampoco son tan complicados de entender) están sujetos a patentes por parte de compañías poderosas. Lo de las patentes de software también tiene tela. Porque en muchos casos es algo tan absurdo como patentar la forma de darle la vuelta a una tortilla. Y nadie que quiera dar la vuelta a una tortilla lo podrá hacer de ese modo (aunque se le ocurra a él sólo) sin arriesgarse a ser demandado.

    Con Huffman, la secuencia que obtenemos tras la descompresión es idéntica a la original. Se llama compresión sin pérdidas. Pero en muchos casos podemos tolerar cierto grado de pérdidas, esto es, de calidad. Por ejemplo, el oído humano enmascara ciertas frecuencias por debajo de otras, de manera que al ir seguidas, no percibimos algunas de ellas. ¿Por qué almacenar esa información, pues?. Con esa idea funciona MP3. O, en dos fotogramas seguidos el fondo de la imagen apenas cambia, ya que el protagonista sólo mueve el pie... ¿por qué almacenar dos veces el mismo fondo estático?... con esa (y otras muchas) idea funcionan los compresores de vídeo.

    A la compresión que se aprovecha de cómo percibimos nosotros la información se le llama compresión basada en la fuente. Suele tener pérdidas, pero son aceptables, y obtenemos cotas altísimas de compresión. Pero de ellas ya hablaremos otro día...

    Apuntes de clase: ¡esto es básico!

    Posts relacionados

    El cuerpo de las japonesas

    Bueno, vale, también es el de los japoneses. Pero seguro que con ese título el post tiene más gancho. Como últimamente los estudios y el trabajo no me dejan tiempo para más, tendré que escribir menos posts, pero si pueden atraer a más gente, mejor. Dicho esto, los que esperaban encontrar fotos de cuerpos de japonesas ya habrán desaparecido, así que vamos al auténtico tema de la entrada: cuáles son las principales partes de cuerpo en japonés. Porque los japoneses (y las japonesas) también tienen las mismas partes del cuerpo que el resto de humanos, sí señor.

    Cuerpo en japonés se dice karada, como podemos ver en furigana en la imagen de aquí al lado. La imagen la he hecho yo, como no, en uno de los pocos ratos libres en que puedo practicar shodou. Si nos ponemos a analizar los trazos, se compone del radical de persona JIN/NIN 人 y el de libro HON 本. La relación que esto tenga con el cuerpo la dejo para especulen ustedes



    Las partes del cuerpo más importantes (¡visibles!) en japonés serían la cabeza (atama), el pecho mune, la barriga o-naka, los brazos ude y piernas ashi. En la ilustración pueden ver algunas más, como el cuello, los hombros, el pie, las manos...

    Hablando del cuello, ¿no les recuerda ese símbolo kubi 首 a este otro 道?. Si hacemos memoria este último era el kanji de "camino" un símbolo con connotaciones espirituales de las que ya hablamos. Y un apunte más del cuello. En japonés los tobillos y las muñecas son los cuellos de las piernas y de las manos: ashikubi 足首 y tekubi 手首, respectivamente. Tiene sentido claro... pero, ¿por qué no udekubi o ashimotokubi?.

    Y algunas de las partes del cuerpo que me he dejado en el dibujo pero que también tienen: senaka 背中 es espalda, heso 臍 es el ombligo y hiza 膝 la rodilla. Y pasemos ahora a la cara, que se llama y se escribe kao 顔.

    De nuevo las partes más importantes serían ojos me, nariz han, boca kuchi y orejas mimi. Por cierto, les animo a que dibujen estos símbolos sobre un óvalo situándolos donde correspondería. Tiene su gracia. La nariz es un símbolo curioso y uno de los radicales que lo componen es JI 自, que significa "uno mismo". Los orientales no señalan con el pulgar su pecho para señalarse a ellos mismos, sino que apuntan con su índice a la nariz.

    Aquí me he dejado más cosas: hige 髭 sería la barba y la 'barba de la boca' kuchihige 口髭 el bigote. La lengua es shita 舌 y los dientes ha 歯.

    Cambiando de partes... antes he mencionado el pulgar y el índice. En japonés, el pulgar es el dedo familiar: oyayubi 親指, mientras que índice es el hitosashiyubi 人差し指, que no sé traducir por nada más que 'dedo índice'. El dedo corazón1 no se llama shinzouyubi -dedo corazón- sino 'dedo de enmedio', lo cual es más lógico (nakayubi 中指). También lo es que el meñique se llame 'dedo pequeño' koyubi 小指. En cambio, a que el anular sea el 'dedo medicinal' no le encuentro ningún sentido. Se llama kusuriyubi 薬指 y kusuri es medicina o droga. Y a la plana palma de la mano se le llama 'plano de la mano' tenohira 手の平.

    Termino con expresiones o frases hechas del japonés que incluyen partes del cuerpo. En Japonés en Viñetas hay unas cuantas de las cuales pongo aquí sólo unas pocas. Algunas son compartidas o comprensibles en nuestra cultura. Otras habría que bucear en la cultura nipona para entender su origen. Ejemplos del primer caso:
    頭を下げる - atama o sageru: 'bajar la cabeza'. Disculparse, pedir perdón.
    耳が遠い - mimi ga tooi: 'oído lejano'. Ser duro de oído.
    手を貸す - te o kasu: 'prestar una mano'. Echar una mano, ayudar a alguien.
    Y de las del segundo grupo:
    首になる - kubi ni naru: 'volverse cuello'. Perder el trabajo, ser despedido. (¿A alguien se le ocurre alguna explicación plausible para esto?).
    腹が立つ - hara ga tatsu: 'levantarse la barriga'. Enfadarse, enfurismarse.
    手を上げる - te o ageru: 'levantar la mano'. Rendirse, resignarse.

    Y ya está. No porque los japoneses no tengan más partes del cuerpo, no, que las tienen. Pero estas son las más importantes. Claro, que si lo que buscabas al ver el título del post eran partes de cuerpos de japonesas, entonces las más importantes son oppai (tetas) y ketsu (culo). Kirai ya nos contó que los japoneses están mucho más entusiasmados con oppai que con ketsu. Así que ya sabe qué buscar la próxima vez.

    1 Supongo que en Japoń habrá quien estudie japonés y comente, en un blog, que el dedo del medio es para los españoles su 'corazón'

    Japonés en viñetas. Norma editorial.
    Saiga Japan. Kanji Dictionary.
    Las imágenes originales son propiedad de autor. Tiene licencia Creative Commons que permite su modificación siempre que no tenga propósitos comerciales. ¡Y yo no los tengo!

    Posts relacionados