Mineros y mineros: el verdadero coste del carbón barato

Ayer por la tarde este revelador tuit sobre el porqué último del conflicto minero se cruzó en mi camino:

Ya sabéis cómo es Twitter. ¿Fuentes? ¿Qué fuentes? De todos modos no cabrían en 140 caracteres. Pero algo ha cambiado desde la revolución del 34: ahora podemos hurgar en casi todas partes. Con las escasas condiciones de saber manejar un ordenador, hablar idiomas, conocer las reglas elementales de la matemática y disponer de sentido común a chorros para separar los granos de la verdad de la paja de la información. Fácil, ¿eh? Apostillemos:

Continue reading “Mineros y mineros: el verdadero coste del carbón barato”

Anuncios

Semen, mentiras y mensajitos del Twitter

Espermatozoide USB (Gizmodo)
Espermatozoide USB (Gizmodo).

Hay cierto mensajillo en Twitter que ya lleva un tiempo haciendo la ronda. Me ha llegado vía RT por lo menos tres veces desde contactos diferentes, y dice así:

un espermatozoide contiene 37,5 MB de inf. de ADN,por lo que eyaculación normal representa una transferencia de alrededor de unos 1.587,5 TB

¿Será verdad que Twitter aporta precisión a la sabiduría popular? Veámoslo. No es que Wikipedia sea la fuente más fiable del mundo, pero sí es de las más accesibles. En el artículo sobre el encontramos que el contenido en información de un espermatozoide es de 3077 millones de pares de bases si es Y (chico), o 3174 si es X (chica). En el ADN hay cuatro tipos de bases, así que podríamos codificarlas con 2 bits/base (ya que 22 = 4). Por tanto, y haciendo la media, cada espermatozoide lleva aproximadamente 781 MB de información genética. ¿De dónde salen los 37,5 MB de Twitter?

Peor todavía: una contiene 3,5 ml de semen. Para un conteo de esperma de 300 millones por mililitro, salen 820443750000 MB; en “teras”, 820443.75 TB (aplicando todo el tiempo la simplificación decimal, es decir, que 1 kilobyte son 1000 bytes y no 1024). Como a todos nos gustan las unidades periodísticas, digamos que cada eyaculación equivale, en datos, a una columna de CDs de más de 100 kilómetros de altura. Arrojada en 5 segundos da un ancho de banda de más de 1000000 Tbps: algo más que un ADSL. Es una tasa de datos similar a la que darían 26000 millones de conexiones de fibra óptica comerciales simultáneas.

El tuit viene equivocado por un pequeño factor de 500. ¿Habrán considerado la compresión de datos? Estamos acostumbrados a ver tasas de compresión espectaculares al guardar archivos con formatos como JPG o MP3, pero no debemos olvidar que se trata de formatos con pérdidas. El algoritmo de compresión aprovecha debilidades en la percepción humana para descartar datos que distinguiríamos poco o nada en el archivo original. Sin embargo esto no puede hacerse con la información genética: al menos a mí no me gustaría que alguien utilizara un JPG de mis genes para fecundar óvulos —el demonio, o el nene, que bien pudiera ser la misma cosa, está en los detalles.

Sin embargo, es posible que se haya tenido en cuenta la redundancia que proporciona el hecho de que en la mayoría de las fecundaciones se produzcan seres humanos, y no delfines o esponjas. La es del orden del 0,5% del genoma. Tomando esa cifra como cota máxima de variabilidad en el material genético de cada eyaculación, tendríamos (tras algunas cuentas) 4102 TB de información no redundante y prácticamente aleatoria. Con eso podemos reducir la columna de 100 km de CDs a “sólo” 500 metros, pero el tuit sigue estando mal por un factor de cuatro.

Visto lo visto, se me ocurren dos preguntas, ambas con respuesta:

  • ¿Quién ha sido el lumbreras? Pues tirando de búsqueda y navegando hacia atrás, parece que este amiguete, en este post en Tumblr. Los sospechosos habituales (en este caso FayerWayer y unos cuantos más) lo repitieron sin cuestionarlo. Naturalmente fue portada en Menéame, cosa que cada vez consigue menos gente que haga sus deberes. ¡Ah, la viralidad!
  • Reconozco que esto es una frikada de teleco, pero ¿cuál sería la tasa de error de bit de la fecundación, teniendo en cuenta lo que hemos visto hasta ahora, y que según este artículo científico la probabilidad de concepción en el mejor momento del ciclo menstrual es de una entre tres? Supongamos que no tenemos ni idea de en qué momento del ciclo ocurre la transmisión de datos: tendríamos una probabilidad total de 1/30 (simplificando, digamos que hay tres días “buenos” en todo el mes). Como llega un sólo espermatozoide (un CD), la tasa de error será de 0.999999993. Dicho de otra forma, si el coito fuera como una línea ADSL, llegaría sano un bit de cada 157 millones. Visto así, probablemente vuestras conexiones a internet ya no os parezcan tan malas.

Ni yo sé las veces que me habré equivocado con las cuentas o (peor) con errores de concepto biológico. Si veis que está todo mal, no dudéis en menearlo.

Por otro lado, gracias a @copepodo por la conversación de la que surgió este artículo. Si queréis ver un blog en condiciones, salid por patas de aquí pulsando en este enlace: Diario de un copépodo. De nada.

Twitter en Android (y 2)

¿Por dónde iba? Ah, sí. Estaba revisando clientes de Twitter para Android, y me había quedado exactamente aquí:

Twicca

En beta permanente, Twicca se ha ganado una reputación —merecida— de cliente limpio y ligero. Tiene un widget elegante. Sin contenido (sólo botones de acción), pero elegante. Mucha de su funcionalidad está disponible a través de plugins, lo que al menos en teoría permitiría hacerse un cliente a medida. Sin embargo, lo único que puede escogerse a estas alturas es el soporte para compartir mensajes en algunas plataformas diferentes de Twitter, algunas de ellas poco conocidas en este lado del globo. Flickr está entre ellas, caso único.

Twicca está en inglés, lo que podría verse como una bendición vista la calidad imperante en las traducciones de las demás aplicaciones. Sin embargo, lamento deciros que los textos de la interfaz de Twicca también son una traducción… del japonés. Todo el que tenga interés en saber cómo se las gastan en el país del Sol Naciente con el inglés, por favor proceda a visitar www.engrish.com. Si os vais no es probable que os vea de vuelta por aquí: es más fácil ahogarse de la risa. Lo de Twicca no es tan serio, pero hay varios WTFs sueltos por ahí.

Quizá ahí esté el origen de mi principal problema con Twicca. No conseguí que el programa distinguiera entre notificación y refresco. Yo quiero (como casi todo el mundo, creo) que mi cliente de Twitter cargue los nuevos mensajes cada cierto tiempo, pero que sólo me avise si hay alguno dirigido a mí. Twicca o bien avisaba de todo lo que le iba entrando, o bien no cargaba nada (a menos que hubiera alguna cita o mensaje directo en el timeline desde la última vez que refrescó). Frustrante, aunque —insisto— puede que fuera culpa mía. En cualquier caso, si no tengo la inteligencia suficiente para usar un programa, es obvio que no debo hacerlo. Veredicto: fuera.

Touiteur

He sido usuario de Touiteur durante meses, y he comprado la versión de pago. Se trata de un cliente muy solvente y equilibrado, aunque está en pleno proceso de featuritis acumulativa que le hace ser cada vez más pesado. Hace muy poco, sus desarrolladores decidieron añadir una fila adicional de botones al diálogo para componer tuits, con consecuencias funestas: si estás enviando un mensaje directo, entre la barra de estátus del sistema, los botones de arriba, el campo con el nombre del mensajeado, los botones de abajo, el control de despliegue del diálogo (es como un cajón con tirador) y el teclado virtual, queda exactamente un renglón para el mensaje. Ya sé que Twitter va de ser breves y tal, pero esto es demasiado.

Por demás, permite previsualizar imágenes en el timeline, ofrece autocompletar dinámicamente los hashtags según los vas tecleando —esta característica, aunque útil, puede colisionar con el sistema de autocompletado del teclado que tengas— y tiene los widgets más austeros del mercado: los botones de acción son invisibles, y un diálogo especial de ayuda te cuenta dónde hay que tocar para cada cosa. Al final, la mitad de las veces que quiero abrir la aplicación acabo actualizando los tuits, o viceversa.

Aunque la apariencia gráfica de esta aplicación y su interfaz me parecen de lo mejor, me cuesta asumir que está empeorando con el tiempo. Una buena arquitectura que permitiera plugins y algunas mejoras en su diálogo de composición de mensajes arreglarían todos los problemas, pero, estando como está, me temo que no seguiré usándola. Veredicto: paso.

Seesmic

No sé por qué tardé tanto en probar este cliente. Quizá el icono me echaba para atrás: ¿qué tiene que ver un mapache con Twitter? Si acaso, una ballena. El caso es que me ha sorprendido agradablemente. Una interfaz sencilla y sin pretensiones, con una interactividad algo más tradicional que la de Touiteur —y algunas pulsaciones de más, por ejemplo, para navegar a un enlace en un tuit, que requiere antes ir al diálogo de vista de detalle. El único control extraño lo explica la aplicación mediante un diálogo la primera vez que se configura una cuenta: la barra superior de título sirve para navegar al primer tuit del timeline. Problema: es muy estrecha, y es fácil pulsar en su lugar sobre la barra de estátus, desplegando las notificaciones del sistema —con el consiguiente mosqueo. Problema (2) y principio fundamental del diseño de interfaces de usuario: si te lo tienen que explicar, no está bien.

El widget que trae es muy mono, pero lamentablemente el espacio que deja para el carrusel de tuits es tan pequeño que, a pesar del minúsculo tipo de letra, la mayor parte de los tuits no caben. Hay un problema más serio: no hay modo de ver en el timeline quién ha retuiteado algo. Sólo se ve el tuit de alguien a quien no sigues, y un pequeño indicador de RT: hay que entrar en la vista de detalle del tuit para ver quién lo manda, aunque esa información sea casi siempre tan importante como el contenido del tuit en sí mismo. La solución de Twicca es la más clara (y la que más ocupa), y Touiteur lo resuelve mejor que ninguno convirtiendo el avatar del retuiteador en un badge del icono del retuiteado.

¿Veredicto? Qué queréis que os diga.

TweetDeck

El último en llegar es (quizá) el más intrigante. Tweetdeck es el líder indiscutible en el otro lado (en iPhone/iPod/iPad, que hay que decirlo todo), y por fin se ha decidido a echar un tentáculo amarillo hacia el androide, aunque todavía es una beta restringida. No está en el Market, sino que hay que acudir a la página Android TweetDeck Beta Preview y registrarse. Te envían un correo con un enlace en el que te informan de los pasos que debes dar para instalarte el paquete .apk directamente desde su web; los pasos son válidos para quien no tenga un instalador independiente de aplicaciones, pero si tenéis un explorador tipo Astro o Linda no creo que sea necesario instalar el programita previo que piden (tAttachApkInstaller), que sólo sirve para instalar paquetes de aplicación descargados directamente.

TweetDeck en Android es todavía una beta, y se notan algunos fallos en lo que concierne a la gestión de contactos: no he conseguido que cargue los avatares de mis seguidos/seguidores. Pero la interfaz es rápida y elegante, y de momento no he encontrado nada serio que achacarle. El modelo de “columnas”, que son diferentes timelines (por defecto, el principal, el de menciones y el de mensajes directos, aunque se pueden añadir otras columnas con listas o búsquedas) se aplica tanto a la visualización de tuits como a la configuración de notificaciones; cambiar entre columnas es un placer. Basta con un rápido arrastre horizontal del dedo, como quien pasa páginas. El único cliente que ofrece algo similar es Touiteur, pero lamentablemente el cambio es bastante más lento.

TweetDeck viene con tres widgets: uno para componer mensajes sin entrar en la aplicación (4×1), otro (muy básico) con un botón por cada “columna” que se ilumina cuando hay actividad (también de 4×1) y otro más para ver un resumen de las columnas configuradas, y que permite seleccionar una para ver los (2) últimos tuits (éste, de 3×3). Si este widget fuera scrollable (lo siento, ¿cómo digo eso en castellano?) sería perfecto. Tampoco estaría mal que fuera más grande, de 4×3 o 4×4 y que mostrara más tuits. De cualquier manera, los widgets son tan elegantes como el propio programa.

¿Y bien? Me quedo con éste. Merece la pena seguir sus progresos, y yo me merezco un descanso de tanto cambio y tanta prueba. La beta es espectacular, se publican versiones actualizadas con frecuencia (pega: hay que hacerlo a mano; consejo: seguir a @TweetDeck). Parece que podré vivir con los errores que tenga hasta que esté disponible la versión definitiva. ¿O no?

Twitter en Android (1)

Engancharse a Twitter es menos doloroso que quedarse atrapado por Farmville o por el cotilleo barato de Facebook —barato sólo si tu tiempo vale poco, recuerda. Al menos tiene mejor prensa: parece más cosa de guruses del dospuntocerismo. Por eso, puede que la aplicación que más uso en mi teléfono Android sea, precisamente, un cliente de Twitter. Y con el uso viene el perfeccionismo. Porque ¿qué cliente es mejor? He estado un tiempo sin poderme quitar esa pregunta de la cabeza, hasta que me he dado cuenta de que no tiene sentido. El “mejor” depende de lo que estés buscando, de tus requisitos, como decimos los que nos dedicamos profesionalmente a la informática. El problema surgió cuando me di cuenta de que tenía el mismo defecto que mis clientes, es decir, ¡que no sé cuáles son mis requisitos! “Mejor me enseñas lo que puedes hacer y yo ya voy decidiendo.” Estoy seguro de que eso ha salido en alguna tira de Dilbert.

Hay un método que nunca falla —apenas una de cada tres veces, según una estadística que me acabo de inventar. Consiste en hacer una lista con lo que no te gusta de una serie de alternativas. Funciona porque suele estar más claro lo que quieres que lo que no. Así que, después de un tiempo probando los principales clientes de Twitter para Android, aquí están mis resultados. No esperéis una comparativa exhaustiva, porque no tengo ni el tiempo ni las ganas: me limitaré a hacer exactamente lo que he dicho. Una lista de lo que no me gusta de cada cliente, aunque si algo me gusta mucho, también lo anotaré. Para listas interminables de características tenéis a los profesionales del ramo, excelentes chicos. ¡Empezamos!

Twitter for Android

Cliente oficial: esto podría dar confianza, pero también disparar algunas alarmas. Está bien porque Google lo está adoptando como solución de referencia en Android. Está mal porque si algo no te gusta en la filosofía básica del programa, es obvio que así se va a quedar. De momento, mi ROM cocinada (¿no os lo imaginábais?) lleva este cliente a fuego. Puede borrarse, claro, ya lo haré cuando necesite el espacio, gracias. El caso es que es difícil encontrar un programa traducido con más salero: ¿que el texto original en inglés ocupa tantos píxeles? Pues en español lo mismo. Ya os podéis imag la pint qu tien. Por lo menos no le pasa como a Twidroyd (ex-Twidroid), pero se hace molesto.

¿Algún problema más? Claro. ¿Cómo hacer un RT tradicional de Casa Tarradellas? Bueno, o no he descubierto un método mejor, o la única manera es pulsar en Compart (o así) en vez de en Retuitear, seleccionar el propio Twitter for Android y recortar salvajemente el florido texto que sale para enviar un retuit que se acerque algo a los 140 caracteres. Increíble y cansado.

Sí, el programa tiene una virtud. Una muy gorda: es el único que se integra en la gestión de cuentas y sincronización del sistema operativo. Por tanto, si usamos el widget Control de Energía (o Tasker, o Locale) para cancelar las sincronizaciones de correo y ahorrar batería, Twitter for Android también descansa. Que yo sepa, esto no lo hace nadie más. Por favor, decidme que estoy equivocado y me alegraré. Mucho.

Por último: es gratis y tiene un widget muy decentillo, si te gustan blancos, claro. Veredicto: paso.

TweetCaster

Vaya por delante que esta aplicación sorprende. He estado en dos ocasiones a punto de pagar los cinco pavos que cuesta la versión pro, y eso que la única diferencia con la gratuita es que no lleva anuncios. Sin embargo, tiene un defecto bestial que, en el tiempo que lleva en el Market, no han corregido —y por lo que veo no corregirán. Y es que ¡tiene una pantalla de inicio! Ningún problema, pensaréis. Si os digo que puede estar ahí, mostrándoos la mascota de la aplicación —pajarito azul desaliñado con micrófono antiguo— durante un mínimo de cinco largos segundos, muchos ni siquiera torceréis el gesto. Si, además, os cuento que cuenta como “inicio” cada vez que el programa tiene que recargarse en memoria… Ya es otra cosa. Si creéis que no molesta probadlo. En cuestión de características está al nivel de los mejores, y la apariencia gráfica, aunque no es de mi gusto, está muy trabajada.

Además, es el único que se refresca agitando el teléfono. Hay que tener el programa en primer plano para que funcione eso, lo que le quita algo de encanto, pero la idea es buena. En cualquier caso… Fuera.

Twidroyd

¿Por qué cambió de nombre este programa? Seguramente los motorolos habrán registrado cualquier cosa que acabe en -droid para proteger su inversión en la plataforma. En fin. El caso es que Twidroyd, ex-Twidroid, se presenta como el programa que más características tiene. Si las vendieran al peso sería muy, pero que muy caro. La versión gratuita tiene un número de features que se acerca bastante al infinito numerable; la de pago ya es la potencia del continuo. (¡Reíd, es un chiste matemático!)

Sin embargo, falta algo que a mí se me hace imprescindible. No al nivel de las necesidades básicas tipo comer y descomer, claro. Vale, casi imprescindible, entonces. Es imposible decidir si se incluye geolocalización tuit a tuit. El ajuste sólo está disponible globalmente, y eso a una profundidad tal de la estructura de los menús de configuración que no se ve ya la luz del sol. Apuntad también una traducción tremebunda que, en el caso del diálogo para componer un tuit, hace que al menos un botón se salga de la pantalla (mira, eso a Twitter for Android no le pasaba).

Es el único cliente que permite hacer previsualizaciones de las páginas a las que apuntan los enlaces citados en los tuits (esta característica se llama LivePreview, y sólo funciona con el teléfono en orientación apaisada). Soporta plugins ¡además!, pero sólo he visto uno que permite ver los tuits geolocalizados en un mapa; ya podían haber puesto el LivePreview —y otras doscientas cosas más— en un plugin. Sus widgets sólo están disponibles en la versión de pago, así que no he podido disfrutarlos. Por último: no se trata de la aplicación más ágil del mundo si tu teléfono no lleva un chip de dos cores. Veredicto: paso.

¿Un descansito? Pasado mañana seguimos con el resto.

Twitter: XSS para Dummies

No es que se caracterice por su solidez —todos sus usuarios conocemos a nuestra vieja amiga la Twitter Whale—. Pero esta vez alguien (¿@judofyr?) ha estado haciendo unas pruebas contra la rutina que linkifica los mensajes y se ha dado cuenta de que estaba mal escrita. Así, en plan amiguete, todos reconocemos una dirección en la web como algo que empieza por las letras http://, aunque no sepamos muy bien qué es eso. Pues bien: una dirección, o más formalmente un o identificador de recurso universal es algo que tiene un formato muy estricto, descrito en el estándar RFC2396 (Uniform Resource Identifiers: Generic Syntax). Un linkificador añade lo necesario para que http://www.example.com/ se transforme en http://www.example.com/, siguiendo (en teoría, al menos) las reglas del estándar. El proceso de linkificado consiste en tomar el texto entre http: y la última barra —ambos incluidos— y colocarlo dentro de algo así:

<a href="[TEXTO_DEL_ENLACE]">[TEXTO_DEL_ENLACE]</a>

… Sustituyendo donde dice [TEXTO_DEL_ENLACE]. En la rutina usada por Twitter, el problema aparece en algo tan sencillo como el uso de un separador (en este caso, las comillas dobles) dentro de una dirección en un mensaje:

http://x.xx/@"[CÓDIGO_MALICIOSO]/

Cada usuario de Twitter al que le llegue un mensaje que contenga ese texto lo verá en la web como un enlace. El código que genera el linkificador y se sirve a los navegadores tiene esta apariencia:

<a href="http://x.xx/@"[CÓDIGO_MALICIOSO]/">http://x.xx/@"[CÓDIGO_MALICIOSO]/</a>

Aquí se ve claramente un problema. La comilla doble ha sido insertada tal cual en el código HTML de la página, y es interpretada por los navegadores como el final del argumento href de una marca de enlace a. La parte marcada como [CÓDIGO_MALICIOSO] puede contener cualquier texto que quepa dentro del límite de 140 caracteres de Twitter, y si no contiene ningún carácter prohibido en el código , será interpretado y ejecutado por el navegador sin más preguntas. En la primera versión del hack (todavía no era un ataque) se usaba el fallo para inyectar una directriz de estilo :

style="background:#000;color:#000;

El efecto, gracioso, era que el enlace dentro del mensaje aparecía como un rectángulo negro, casi como en un rasca y gana. El siguiente paso, ya más peligroso, fue añadir un atributo onmouseover. El atributo onmouseover ejecuta su valor, una rutina en Javascript, cuando el puntero de ratón pasa por encima del contenido de la marca que lo lleva. Suele usarse, atentando contra el buen gusto, para iniciar animaciones al pasar con el ratón encima de algún elemento activo. Haber logrado inyectar un atributo onmouseover en un enlace servido por Twitter tenía que provocar que algunos engranajes empezaran a girar en ciertas mentes.

El tercer paso consistió en aprovechar que Twitter utiliza, para sus efectos dinámicos en su web, la conocida biblioteca de funciones . Ésta permite a los desarrolladores producir un código muy conciso, abstraído de las diferentes implementaciones de Javascript de los distintos navegadores. La inyección de código escrito con llamadas a JQuery garantiza, a la vez, que la cadena de texto resultante será extremadamente corta (ideal para su difusión en Twitter) y que funcionará en todas las plataformas. A partir de este punto, ya fue sencillo añadir una función que pulsara automáticamente el botón Retwittear, garantizando la propagación inmediata del gusano.

Durante dos horas de media tarde en el huso centroeuropeo han circulado gran cantidad de variantes del virus. Las más peligrosas se dedicaban a inyectar en el código de la página referencias a otros scripts externos, y al menos en teoría se han podido robar contraseñas del servicio o aprovechar otras vulnerabilidades para instalar virus más tradicionales. Una de las más ingeniosas disponía un elemento invisible por encima de todos los demás de la página, ocupando toda su extensión y con un onmouseover que ejecutaba más código. Así, ni siquiera era necesario pasar el ratón sobre los mensajes afectados para que se efectuara la propagación: bastaba con tener un mensaje infectado en el timeline.

Lo que ha ocurrido en Twitter ha sido un ataque de manual. ¿Cómo ha podido llegar a suceder? Observemos el formato de los enlaces maliciosos: contienen una secuencia de un caracter reservado, la arroba @ y un delimitador prohibido, la comilla doble ". Al parecer, el linkificador de Twitter fallaba (al menos) con esa secuencia de caracteres. El estándar RFC2396 antes citado, en su apartado 2.4, especifica qué hacer cuando se procesa una dirección que contiene caracteres potencialmente problemáticos: se codifican mediante secuencias de escape. Dicho de otro modo, cada caracter prohibido o problemático según el apartado 2.4.2 se sustituye por una secuencia especial que está compuesta por un caracter prohibido, el signo de porcentaje % y dos dígitos en hexadecimal. Este proceso permite introducir en una dirección caracteres no permitidos a priori: habréis visto secuencias del tipo http%3A%2F%2F, que es lo que aparece casi siempre que se embebe una dirección dentro de otra (significa http://).

Pero (y ahora viene lo bueno) cualquier lenguaje de programación para la web incluye alguna función para codificar y decodificar cadenas de caracteres de acuerdo con la norma. Os haré una demo en Javascript aquí mismo:

 

Observaréis que si cortáis y pegáis el enlace que lo originó todo, los caracteres problemáticos aparecen codificados. Pero quizá los chicos de Twitter no se conformaron con la función elemental de su lenguaje (), sino que decidieron rehacerla por algún motivo. Hay que repetir la pregunta: ¿cómo ha podido llegar a suceder? Bueno, decía , el creador del famoso lenguaje de ordenador de sólo escritura , que las tres virtudes cardinales de un programador han de ser:

Pereza, impaciencia y soberbia

¿Qué combinación de estos tres maravillosos elementos ha sobrado en Twitter?