Computadoras imprescindibles

Un portazo. Así comienza la primera de la historias que os quiero contar hoy. Enero de 1816, 5 semanas después de dar a luz, la mujer del afamado poeta Lord Byron le pidió el divorcio y obtuvo la custodia de su hija. Su mayor temor era que Ada -su hija- terminara dedicándose a la poesía como su padre, por lo que estableció para ella una rigurosa educación centrada en las matemáticas y las ciencias. A pesar de los esfuerzos de su madre, Ada nunca renunciaría a su interés por la lírica y su comprensión de los complicados conceptos científicos y matemáticos siempre estuvo plagada de metáforas. Por ejemplo, las transformaciones que se dan en fórmulas del cálculo diferencial le recordaban a los duendes de ciertas fábulas, que aparecen frente a ti con una forma y al rato los tienes sobre el hombro con otra forma diferente.

Con 17 años, Mary Somerville, apodada “la reina de las ciencias del S.XIX”, se convirtió en su tutora. Lady Somerville ayudo a Ada a situar a las matemáticas y la tecnología en un contexto humano. Fue precisamente en una de las cenas organizadas por su tutora dónde Ada escuchó por primera vez las ideas de Charles Babbage y su máquina diferencial.

Babbage, matemático, filósofo, inventor e ingeniero mecánico, se había dado cuenta de los numerosos errores que tenían las tablas de logaritmos y funciones trigonométricas publicadas y decidió diseñar una máquina capaz de hacer esos cálculos mecánicamente. Ada quedó fascinada por el prototipo de aquella “máquina diferencial” y desde entonces aprovechó cualquier ocasión para coincidir con Charles Babbage en casa de Mary Somerville. Babbage, por su parte, no tardó en detectar el talento de Ada, a la que apodó “la encantadora de números”.

La máquina diferencial no llegó a construirse porque Babbage dedicó todos sus esfuerzos a un nuevo diseño más ambicioso, la máquina analítica. Aunque era parecida a la máquina anterior, Babbage se inspiró para su creación en las tarjetas perforadas usadas para definir nuevos diseños en los telares mecánicos. Era un ingenio lleno de engranajes, ejes y manivelas… que tampoco se llegó a construir, pero que ha sido considerada como el primer computador de propósito general, capaz de hacer cálculos, bucles, alternativas y almacenar datos en memoria.

Babbage explicó su invento en una conferencia en Italia y el matemático Luigi Menabrea escribió una descripción en francés traducida posteriormente al inglés por Ada Byron. Ada añadió a su traducción una serie de notas donde explicaba cómo aquella nueva máquina superaba a la máquina diferencial. Sus notas fueron tan detalladas que duplicaron en extensión a la descripción original. En la séptima de sus anotaciones, la nota G, Ada escribió el primer programa de ordenador de la historia, capaz de calcular una secuencia de números de Bernoulli. Ya entonces, Ada anticipó las dificultades que millones de programadores encontramos cada día: “qué variopintas y complicadas son las consideraciones involucradas en trabajar en una máquina como esta. En muchas ocasiones se producen simultáneamente diferentes conjuntos de efectos que parecen independientes unos de otros pero terminan influyéndose entre ellos. Ajustar cada uno de ellos y trazar su uso correcto con éxito entraña grandes dificultades”.

Gracias a la desbordante imaginación de una dama victoriana del siglo XIX pudimos dar el salto del cálculo a la computación. Ada creó el primer programa de ordenador en su mente, simulando una máquina que nunca existió. La informática nació dentro del cerebro de una mujer.

Avancemos en el tiempo y viajemos hasta Europa en 1942. La Segunda Guerra Mundial arrasó el continente y en ella las matemáticas tuvieron un papel fundamental para ambos bandos. Miles de mujeres fueron reclutadas como computadoras para realizar los millones de cálculos necesarios, entre otras muchas cosas, para conocer las trayectorias balísticas de los proyectiles. Su labor ha sido injustamente olvidada por la historia, pero es muy posible que el mundo tal y como lo conocemos no hubiera sido posible sin el interminable y preciso trabajo de todas esas mujeres.

En 1943, la doctora en matemáticas por Yale Grace Hopper solicitó enrolarse como voluntaria en la marina estadounidense. Fue rechazada por no llegar al mínimo peso establecido para pertenecer al ejército. En diciembre de ese año, fue llamada como reservista y tras graduarse la primera de su clase en 1944, fue destinada a Harvard. Allí comenzó a trabajar bajo las órdenes del comandante Howard Aiken en la construcción del Mark I, el primer ordenador electromecánico, basado en la máquina analítica de Babbage.

El comandante Aiken lideraba el proyecto no como un trabajo científico, sino como una misión militar. La armada estadounidense tenía un barco especial, el Mark I, que nunca vería el mar, pero en el que la cadena de mando se respetaba tan rigurosamente como en cualquier otro buque. Grace Hopper no fue inicialmente del agrado de Aiken, pero el comandante pronto descubrió que aquella joven estaba enormemente capacitada para sacar lo mejor de aquella máquina y la promocionó para ser la segunda de abordo. Admitir órdenes de una mujer en la armada no era nada común en aquel momento, pero Grace Hopper era tan competente que su liderazgo estuvo fuera de toda duda.

La primera vez que Grace Hopper vio el Mark I con sus más de de 15 metros de largo, pensó que era el aparato más bonito que había visto en su vida. Durante meses, el equipo de Aiken y Hopper consiguió que el Mark I trabajara noche y día sin interrupción. Uno de los trabajos que el Mark I realizó fue el cálculo de una ecuación diferencial muy compleja que provenía del profesor von Neumann en Los Álamos. Tiempo después, Grace Hopper supo que ese cálculo había sido fundamental en la creación de la bomba atómica y cuyo lanzamiento puso fin a la Segunda Guerra Mundial.

El fin de la guerra dejó a Grace Hopper en una situación complicada. Por edad, 40 años, no podía trabajar en la Armada y por ser mujer no podía trabajar como profesora en Harvard donde todos los docentes eran hombres. Era, además, experta en un campo -la computación- que prácticamente no existía. Sin embargo, en 1949 se unió a una de las principales empresas de informática para trabajar en el proyecto UNIVAC que pronto lograría crear toda una industria. Decir UNIVAC en los años 50 era como decir Kleenex o papel Albal, una marca que se convirtió rápidamente en el estándar informático. Incluso el superordenador de las novelas de ciencia ficción de Isaac Asimov se llamaba MULTIVAC.

Grace Hopper llegó en aquel momento a la misma conclusión que otros pioneros de la informática: no tenía mucho sentido que cada computadora se programara de forma diferente. Así que decidió crear el primer “compilador”, un programa especial capaz de traducir cualquier programa a los códigos internos de cada ordenador. Grace aprovechó la ocasión para resolver otra de sus inquietudes. Después de varios años trabajando con ordenadores, se dio cuenta de que había mucha gente que odiaba los códigos y símbolos, así que decidió facilitarles la vida haciendo que el inglés fuera el lenguaje que su compilador traduciría para las máquinas. Cuando presentó el primer compilador de la historia en 1952, nadie la creyó. Es más, mucha gente pensó que era una estupidez tratar de hablar a las máquinas en inglés. Más de 50 años después, todavía encontramos ofertas de trabajo para programar en COBOL, un lenguaje totalmente basado en la propuesta de Grace Hopper.

Viajemos a 384.000 km de aquí para nuestra tercera historia. Millones de personas seguían los acontecimientos pegados a sus televisores. Tres minutos antes de que el Eagle se posara en la Luna su ordenador de abordo lanzó varias alarmas. Por un fallo en los manuales, un radar no necesario para el aterrizaje estaba encendido cuando debería estar apagado. Enviaba señales erróneas al ordenador de a bordo, que tenía que lidiar con ellas además de encargarse de todas las operaciones propias del aterrizaje. Afortunadamente, el software que gestionaba el ordenador de abordo fue lo suficientemente inteligente como para detectar el problema y avisó a los astronautas diciendo: “estoy sobrecargado con más tareas de las que debería estar haciendo en este momento, así que me voy a centrar solamente en las tareas importantes, es decir, las que tienen que ver con aterrizar”. Recordemos que era un ordenador con menos potencia de cálculo que el reloj digital de nuestra cocina. Sin este novedoso e inteligente diseño, el pequeño paso para el hombre y gran salto para la Humanidad habría acabado en siniestro total. Hicieron falta más de 30 años antes de que la NASA reconociera el mérito de Margaret Hamilton, la directora del centro de ingeniería del software del MIT encargada de desarrollar el software de abordo de todo el programa Apollo, el único que ha sido capaz de permitirnos pisar otros mundos y volver para contarlo.

La cuarta historia todavía está por escribir. La protagonista está entre nosotros. Quizá es la hermana de uno de los buenos ingenieros que hoy reciben su título o quizá es alguna de las ingenieras que esta mañana, antes de venir, os habéis dicho frente al espejo: claro que he sido capaz, de esto y de mucho más.

Necesitamos nuevas computadoras imprescindibles, ingenieras eficaces capaces de prever y solucionar situaciones críticas, que nos animen a hablar con las máquinas en nuestro propio lenguaje, que sean capaces de imaginar los cientos de engranajes que todavía no existen, pero que cambiarán el futuro de la Humanidad.

Muchas gracias*

* Este es el texto de la lectio brevis de la ceremonia de investidura de Ingeniería de la Universidad de Deusto en 2015. Para su redacción he contado con la inestimable ayuda de Ana Ribera “Molinos” :)

La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades

El pasado jueves 27 de junio de 2013 participé en la XV Jornada de Seguridad TI de Nextel S.A. en la Alhóndiga de Bilbao, invitado por mi amigo Ritxi Acebedo.

El evento estuvo muy bien (podéis ver todas las presentaciones y vídeos en su web) y lo pasé muy bien, a pesar de ser el único tipo que no fue de traje y que después de que hablara, otros ponentes se refirieron a mí como un hacker malvado, cosa que dista mucho de la realidad (todas mis intrusiones son a 127.0.0.1 ;P).

Os dejo el vídeo de la conferencia (está sacado del streaming, así que el audio es… sub-óptimo O:) ):

Y aquí la presentación:

Espero que os resulte de interés ;)

BilboStack 2012 y 2013

Los dos últimos años he tenido el placer de poder participar activamente en BilboStack, el mejor evento de desarrollo web de Bilbao (y ya se sabe que Bilbao y el mundo es casi lo mismo).

El primer año me invitaron a hacer un repaso de los estándares alrededor de HTML5 y la cosa quedó un poco flojilla por ser una charla de introducción para un evento destinado a desarrolladores pata-negra. A pesar de los disclaimers y demás historias, la sala estuvo a tope y la gente fue muy maja al terminar:

El segundo año quise poner un poco más de carne en el asador y preparé un repaso a un tema del que se habla bastante, pero quizá no con la suficiente profundidad: las funciones de tiempo y los temporizadores en JavaScript. Tuve la suerte de que poco después hubo otra charla de desarrollo de videojuegos en la que se pusieron en práctica muchos de los conceptos comentados, por lo que quedó muy apañada la simbiosis entre ambas charlas.

Además, me sirvió para probar Slid.us como editor de presentaciones HTML5, gracias a una invitación de @soyjavi :-)

Dos experiencias estupendas, gracias a un grupo de personas que hizo que todo fuera como la seda :-)

El problema de parada y los castores laboriosos

2012 fue el Alan Turing Year, año en el que se conmemora el nacimiento de Alan Turing, un matemático fundamental dentro de las ciencias de la computación.

En la Facultad de Ingeniería de la Universidad de Deusto realizamos dos acciones para celebrarlo: 1) el cambio de nombre de una de nuestras salas más “nobles” a “Sala Turing” y 2) una sesión de charlas cortas (10-15 mins) relacionadas con la figura de Alan Turing

Mi contribución fue una charla de introducción al problema de parada y a los “castores laboriosos” (tema del que ya hemos hablado por aquí) durante esa sesión de homenaje a Alan Turing.

Espero que os guste y os anime a echar un vistazo al resto de charlas cortas que se dieron ese día (muy interesantes), así como al resto de material que se generó en la Red en torno al papel fundamental de Alan Turing en el siglo XX.

PD: debería haber empezado la entrada con una disculpa por el silencio, pero creo que es muy cansino, así que considérese esta postdata como tal O;)

Karaoke casero con Audacity

Os voy a contar un truco muy sencillo -pero muy útil- para quitar la voz a vuestras canciones favoritas con Audacity, y de esta forma poder hacer el ridículo en karaokes improvisados, malograr con vuestra voz versiones apócrifas de canciones o iniciaros en el mundo de los mashups ;-)

Lo primero que necesitamos es una canción en WAV o cualquier formato que entienda el Audacity (MP3 puede valer). Yo he elegido “Hotel California” de “The Eagles”, por ejemplo.

Una vez abierta con el Audacity, veremos que es una canción stereo, con dos canales:

Si usamos el zoom, podremos ver la forma de la onda en cada uno de ellos y cómo son ligeramente diferentes:

Nos basaremos en el siguiente principio para eliminar la voz: si sumas una onda y su versión invertida, la anulas. Dado que la voz es mono (suele haber un solo cantante con una sola boca) normalmente, estará copiada igual en los dos canales, así que al invertir uno y sumarlo con el otro, se anulará.

¿Cómo hacemos esto? Muy fácil, separamos la pista stereo en dos canales mono:

Seleccionamos solamente una de las pistas:

Y aplicamos el efecto de inversión:

Finalmente volvemos a juntar los canales en una pista estéreo:

Y exportamos el resultado a un MP3.

Si lo hemos hecho bien, tendremos una versión de “Hotel California” en la que no se escuchará la voz y podremos arruinarla con nuestros alaridos.

Realmente este método no es perfecto y si nos fijamos bien, todavía quedará algún resto de la voz en nuestro MP3. Esto es debido a los filtros y efectos de post-producción que se emplean para mejorar las canciones, que no afectan por igual a los dos canales y por tanto dejan trazas que no se anulan al sumar una onda con su inversa. En algunas canciones estos efectos son tan extremos que la voz permanece totalmente audible después de emplear este método ;-(

Una vez eliminada la voz, podemos pensar en cómo se haría para quedarnos solamente con la voz y juntar la voz a la música sin voz de otra canción para inventar nuevas y estrambóticas versiones de música comercial. ¿Se os ocurre cómo podría hacerse? ;-)

Echofon y los malditos anuncios de 140 Proof

Soy un usuario de la versión para Firefox Echofon desde hace tiempo y hasta la versión 2.3.6 todo fue gozo y alegría. ¿Qué ocurrió en la versión 2.4 para amargarme la existencia? En su changelog se ven muchas mejoras, pero la última -que no caracterizaría de mejora precisamente- es la que desencadena todo mi malestar:

  • Ad supported by 140proof

Supongo que para Echofon sí que será una mejora, pero para el usuario resulta realmente molesto tener que leer tweets de cuentas que hemos decidido no seguir porque solamente publican spam.

Durante cierto tiempo, practiqué la táctica de “Virgencita, virgencita, que me quede como estoy” y me mantuve en la versión 2.3.6 a salvo de spam. Lo malo es que esa versión no está soportada en versiones más modernas de Firefox, por lo que seguir así me dejaba anclado en el pasado no solamente para Echofon, sino para todo lo demás.

Indagando por la red encontré dos soluciones bastante buenas para usar las nuevas versiones de Echofon sin anuncios.

La primera de ellas consiste en abrir el fichero que contiene el código JavaScript con la función encargada de importar los anuncios y “anularla”. El procedimiento es muy sencillo:

  1. Accedemos a nuestro perfil de firefox. En Linux está en $HOME/.mozilla/firefox/[LETRASyNUMEROS].default/ y en Windows en C:\Users\[USER]\AppData\Roaming\Mozilla\Firefox\Profiles\[LETRASyNUMEROS].default\.
  2. Entramos en el subdirectorio “extensions” y ahí, si tenemos Echofon instalado, debería haber otro subdirectorio “/twitternotifier@naan.net”. Entramos en él y una vez dentro, entramos en el subdirectorio “components”.
  3. Una vez allí, editamos el fichero nsEchofon.js y buscamos la función getAd.
  4. Borramos el contenido de la función y lo reemplazamos por esto:
  getAd: function(info) {
    this._pref.setBoolPref("licensed", true);
    EchofonUtils.notifyObservers("removeAds");
  },

Y ya está :-)

La pega que tiene este método es que habrá que reemplazar la función getAd cada vez que se actualice el Echofon.

El otro método es algo menos directo pero aún así me parece muy efectivo. Además, pueden combinarse y estar doblemente a salvo del spam. En este caso, lo que vamos a hacer es invisibilizar mediante CSS el contenido de la caja de texto de spam. De esta manera, aunque la función getAd siga trayendo el contenido no deseado a nuestro Echofon, a la hora de mostrarlo se hará de forma invisible, con lo que no lo leeremos :-)

Para ello, tenemos que acceder a nuestro perfil de Firefox (ver paso 1 del método anterior) y entrar en el subdirectorio “chrome”. Una vez ahí, creamos el fichero “userChrome.css” donde indicaremos nuestras preferencias personales para CSS, con este contenido:

#echofon-ad-unit {
display: none !important;
}

Así, cuando se llene ese elemento de publicidad, nuestro navegador no lo mostrará porque hemos indicado que su propiedad display esté a “none”. Sin embargo, como comentan en el sitio donde tradujeron el primero de los métodos, esto no evitará que se mande información nuestra a 140 Proof y Google Analytics, así que sigue siendo recomendable llevar a cabo también el primero método.

Happy tweeting ;-)

Claws-mail y la renovación de certificados SSL de Gmail

Estos últimos días estoy teniendo un problema a la hora de usar claws-mail con Gmail (en Deusto tenemos el correo con Google Apps for Education, así que lo tengo que usar sí o sí) porque cada cierto tiempo (1-2 años) Gmail renueva sus certificados SSL para sus servidores de correo.

Esto no debería suponer el mayor problema, pero al no renovar todos los certificados a la vez, durante unos días algunas conexiones van servidores con el certificado SSL antiguo y otras al nuevo. Cuando claws-mail detecta el cambio de certificado, nos avisa de que deberíamos comprobarlo y aceptarlo, así que en esos días inmediatamente posteriores al cambio, hay que estar aceptando certificados a cada rato lo cual es un peñazo fino.

Revisando en foros y en la documentación de claws-mail he dado con la solución: hay que habilitar la opción “unsafe_ssl_certs” dentro del fichero de configuración, ya que no hay ninguna opción para hacerlo desde el interfaz gráfico de claws-mail.

Así, si sufrís este incordio como yo, no tenéis más que editar el fichero ~/.claws-mail/clawsrc, ir a la línea donde se encuentra la opción unsafe_ssl_certs y fijarla a 1:

unsafe_ssl_certs=1

Esto no deshabilita la comprobación del certificado, como pudiera parecer (esa opción es skip_ssl_cert_check), sino que permite almacenar varios certificados para cada servidor, lo que coincide perfectamente con el caso en el que nos encontramos ;-)

Kantu leunak nahi nituzke jarri…

Aprovechando las ganas que tiene la gente de ayudar a través de las redes sociales, hace unos días me animé a “socializar” un encargo que me habían hecho: crear un listado de canciones tranquilas (no necesariamente baladas) en euskera. Así que tomo prestado el verso de Ruper Ordorika “kantu leunak nahi nituzke jarri” (me gustaría poner canciones suaves) para titular esta entrada :-)

La respuesta de la gente ha desbordado mis expectativas y el listado que en pocas horas generamos es el siguiente:

Mil gracias a toda la gente que ha contribuido :-) (@matalaz, @saghul, @n61, @fuanis, @_buxus, @irenetxiki, @AitorArechabala, @Uhernand, @josianito, @azetaekis, @suzzlo, @jabiluengo, @josianito, @ilis, @itzitxo, @ikerbrk, @ibai, @chambertuX, @cyrusnimda, @Eneko_McCracken, @aizenar, @_izartxo_, @Inselafor, @jjontx, @jaimeirurzun, etc.)

Por supuesto, tenéis a vuestra disposición los comentarios de esta entrada para seguir contribuyendo con más recomendaciones ;-)

Embeber proyectos Scratch en cualquier sitio

Esta semana he estado muy involucrado en dos eventos que me encantan: la MoodleMoot (Jornada de encuentro de la comunidad Moodle) y SLUN (Software Libre en la Docencia). En ambos eventos he participado en la organización e impartiendo talleres :-)

Resulta que a raíz del taller que dí en SLUN sobre Scratch, un asistente me preguntó cómo se llevan Moodle y Scratch y cómo de fácil es embeber proyectos de Scratch en Moodle. La respuesta es sencilla y basta con fijarse en el código que genera la propia web de Scratch para ello, pero para que la gente que no se maneja bien con HTML no se líe, he creado este pequeño generador de código HTML para embeber proyectos de Scratch donde sea.

Para usarlo, solamente tienes que poner la dirección del proyecto Scratch que quieres embeber y pulsar en el botón de generar código. Automáticamente se generará el código necesario y se incluirá en esta página para comprobar que el código generado es correcto.

Qué lo disfrutéis ;-)





Un gobierno en funciones no puede aprobar la ley Sinde

Hoy verás este texto en decenas de blogs. Si estás de acuerdo con él, reprodúcelo donde consideres oportuno.

Ante la previsible aprobación de la polémica “Ley Sinde”, los periodistas, bloggers, usuarios, profesionales y creadores de Internet seguimos manifestando –como hicimos en el Manifiesto de 2 de Diciembre de 2009- nuestra firme oposición a una norma que incluye modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet.
En principio no parece de recibo que un Gobierno en funciones adopte esta decisión en su último o uno de sus últimos Consejos de Ministros. Sería doblemente grave que se confirmaran las presiones ejercidas por EEUU, a través de su embajada en Madrid, como revelaron los cables de Wikileaks.
En todo caso insistimos en estos razonamientos:
1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.
2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.
3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.
4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.
5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.
6.- Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.
7.- Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.
8.- Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.
9.- Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.
10.- En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.