Por @Alvy — 15 de Julio de 2019

Teniendo en cuenta que actualmente se calculan unos 60 trillones de hashes SHA-256 por segundo para minar Bitcoin en todo el mundo, quizá no es aventurado afirmar que puede ser el «algoritmo más popular del mundo».

– Matthew Weathers

Me ha encantado descubrir el canal y el estilazo de Matthew Weathers explicando el funcionamiento del algoritmo SHA-256, una función hash determinista «de un solo sentido» que se suele definir así:

Los algoritmos como el SHA-256 se definen como una función que «resume» una cadena de datos de cierta longitud (normalmente, larga) en una cadena más corta de longitud fija (normalmente más corta). Es algo parecido a una «suma de control» o «firma única», con ciertas virtudes peculiares: la misma información de entrada proporciona siempre la misma información de salida, de modo que dos entradas distintas no pueden producir el mismo hash (o es astronómicamente difícil que eso suceda). Todos los hashes tienen la misma probabilidad, entre otras cosas. Adicionalmente suelen ser de «un solo sentido»: con el hash de unos datos no se puede recrear cuáles eran los datos originales.

Aunque el ejemplo que propone de «función de un solo sentido» no sea perfecto (multiplicar dos números primos grandes y luego encontrar los factores del resultado, frente a hacer lo mismo con una suma, porque sumas pueden haber muchas) la idea se entiende. Sobre todo explica muy bien cómo cada hash es único, la infinidad que hay (bueno, 2256 de ellos) y como a «escala humana» eso es sencillamente inabarcable: los hashes SHA-256 de cualquier entrada nunca se han repetido, ni se repetirán. Y eso que es un algoritmo que hasta se puede calcular a mano.

La última parte está dedicada –con espléndido sarcasmo– a explicar su relevancia en el mundo del Bitcoin: dado que el ritmo al que se «minan» nuevos bitcoins depende de encontrar ciertos hashes que empiecen por 70 y tantos ceros (como ya nos explicó Aners Brownworth), si alguien hubiera crackeado el SHA-256 y pudiera «invertirlo» podría fabricar Bitcoins al ritmo que quisiera.

Teniendo en cuenta que a día de hoy un Bitcoin se cambia a unos ~11.000 dólares no habría razón para no aprovecharse un poco; sería prácticamente como tener una impresora de billetes pero en criptodivisas canjeables. Incluso para «disimular» y no hundir el mercado se podrían ir minando poco a poco, a ritmo poco sospechoso. Mmm… La forma en la que Weathers explica esta teoría teniendo en cuenta que nadie sabe quien es realmente Satoshi Nakamoto (creador del protocolo Bitcoin) y que el SHA-256 procede de la NSA (Agencia de Seguridad Nacional estadounidense) es simplemente sarcástica y brillante.

Relacionado:

Compartir en Flipboard  Compartir en Facebook  Tuitear
Por @Wicho — 15 de Julio de 2019

Diseño del billete

Tras un proceso de recogida de propuestas en las que se recibieron 227.299 nominaciones para un total de TuringBillete50Libras.jpg científicos el Banco de Inglaterra acaba de anunciar que será Alan Turing quien figure en los nuevos billetes de 50 libras.

Alan Turing (1912-1954) fue uno de los pioneros de la informática, con un interés especial en la inteligencia artificial. De hecho uno de los conceptos básicos de la informática son las máquinas de Turing, ideadas por él. Fue también una de las personas al frente del trabajo de intercepción de los mensajes cifrados de las fuerzas armadas alemanas llevados a cabo en Bletchley Park durante la segunda guerra mundial. Se estima que el éxito de ese trabajo permitió acortar la guerra en un par de años, salvando cientos de miles, si no millones, de vidas. Pero todo eso no sirvió de nada en cuanto se hizo público que era homosexual, algo que en su época era delito y por lo que fue duramente castigado, aunque en los últimos años se ha intentado reparar eso con la Ley Alan Turing.

El comité designado para escoger la persona que saldría en el billete llevó a cabo la selección final entre Turing y otras once opciones:

  • Mary Anning (1799-1847) - una paleontóloga autodidacta conocida en todo el mundo por los descubrimientos de fósiles que hizo en su ciudad natal de Lyme Regis.
  • Paul Adrien Maurice Dirac (1902-1984) - cuya investigación revolucionó nuestra comprensión de la materia más pequeña del universo.
  • Rosalind Franklin (1920-1958) - quien contribuyó al descubrimiento de la estructura del ADN, un avance crítico en nuestra comprensión de la biología de la vida.
  • Stephen Hawking (1942-2018) - quien hizo contribuciones importantísimas a nuestra comprensión de la gravedad, el espacio y el tiempo.
  • William (1738-1822) y Caroline Herschel (1750-1848) - un equipo de astrónomos dedicado a descubrir los secretos del universo formado por hermano y hermana.
  • Dorothy Crowfoot Hodgkin (1910-1994) - cuya investigación usando cristalografía de rayos X produjo descubrimientos revolucionarios que dieron forma a la ciencia moderna y ayudaron a salvar vidas.
  • Ada Lovelace (1815-1852) y Charles Babbage (1791-1871) - visionarios que imaginaron la era de la informática a principios del siglo XIX.
  • James Clerk Maxwell (1831-1879) - quien hizo descubrimientos que sentaron las bases para la innovaciones tecnológicas que han transformado nuestra forma de vida.
  • Srinivasa Ramanujan (1887-1920) - cuyo increíble talento para los números ayudó a transformar las matemáticas modernas.
  • Ernest Rutherford (1871-1937), que descubrió las propiedades de la radiación, reveló los secretos del átomo y sentó las bases de la física nuclear.
  • Frederick Sanger (1918-2013) - cuya investigación pionera sentó las bases para nuestra comprensión de la genética.

Las condiciones para poder optar a aparecer en el billete incluían haber contribuido al campo de la ciencia; ser una persona real; que ya hubiera fallecido; que haya moldeado el pensamiento, la innovación, el liderazgo o los valores en el Reino Unido; que sirva para inspirar a la gente, no dividirla.

Aunque el diseño final del billete puede cambiar en principio estos son los elementos que va a incluir:

  • Una foto de Turing tomada en 1951 por Elliott & Fry que forma parte de la Colección de Fotografías de la National Portrait Gallery.
  • Una tabla y fórmulas matemáticas de Sobre números computables, con aplicación al Entscheidungsproblem, uno de los trabajos más conocidos de Turing, ampliamente reconocido como fundamental para la informática. Publicado en 1936 trataba de establecer si podía haber un método definitivo mediante el cual cualquier teorema pudiera ser evaluado como demostrable o no mediante el uso de una máquina universal. Introdujo el concepto de la máquina Turing como un experimento mental sobre cómo podrían funcionar los ordenadores.
  • El Pilot ACE, un ordenador desarrollado en el Laboratorio Nacional de Física para comprobar el diseño de Turing para el ACE. El ACE fue uno de los primeros ordenadores digitales electrónicos de programa almacenado, uno de los primeros ordenadores verdaderamente modernos.
  • Esquemas técnicos de la Bombe británica, la máquina diseñada por Turing y una de las principales herramientas utilizadas para romper los mensajes cifrados con máquinas Enigma durante la Segunda Guerra Mundial.
  • Una cita de Alan Turing, en una entrevista en periódico The Times del 11 de junio de 1949: «Esto es sólo un anticipo de lo que está por venir, y sólo la sombra de lo que va a ser.»
  • Una firma de Turing en el libro de visitas en Bletchley Park en 1947, donde trabajó durante la Segunda Guerra Mundial.
  • Una cinta de teletipo que representa la fecha de nacimiento de Alan Turing (23 de junio de 1912) en código binario. El concepto de una máquina alimentada por cinta codificada en binario aparece en Sobre números computables.

Relacioando,

Compartir en Flipboard  Compartir en Facebook  Tuitear
Por @Alvy — 11 de Julio de 2019

AmCharts: visualización de datos y mapas animados en JavaScript / TypeScript

Me crucé con AmCharts que es una herramienta para generar código que a su vez genera gráficas de todo tipo en el terreno de la visualización de datos. Esto va desde los diagramas más simples (barras, tartas y demás) a los mapas del mundo con datos, animaciones, diagramas de Sankey, árboles, embudos o diagramas de cuerdas, entre muchos otros.

El código con el que se generan las gráficas es TypeScript (el «superconjunto» de JavaScript de Microsoft, libre) que es 100% compatible JavaScript, así que más accesible es difícil. El código generado por AmCharts se puede usar de dos formas: o bien gratis dejando que aparezca el logotipo y un enlace de la herramienta, o bien comprando licencias que van por sitios web o por app.

Lo más interesante es la infinidad de variantes de gráficas que incluye pero también que son muy personalizables: no sólo a nivel de colores y estilos (temas) sino también ajustando las imágenes (si las hay), iconos y símbolos y otros elementos de interfaz. Raro parece que sea necesario personalizarlo con más detalle que lo que ofrece, razón por la que parece una solución bastante completa.

Relacionado:

Compartir en Flipboard  Compartir en Facebook  Tuitear
Por @Alvy — 9 de Julio de 2019

Chess Programming Wiki

El Chess Programming Wiki (CPW) es un wiki dedicado a la programación del ajedrez. Esto incluye tanto información sobre algoritmos como acerca de detalles de los que normalmente no se comentan mucho al hablar de software de ajedrez: formas de representar el tablero y las piezas, bases de datos de finales o los protocolos para comunicar programas, dispositivos hardware, anotar partidas, etcétera.

Es como una Wikipedia extremadamente enfocada al ajedrez; de hecho está montado actualmente con MediaWiki, que es por lo que resulta tan familiar. Es un grandioso repositorio que contiene enlaces a otros miles de recursos. Por lo que he visto se mantiene bastante actualizado, con algo nuevo todos los días.

Entre otras cosas contiene una enorme lista y minibiografías de gente que se ha dedicado a la programación del ajedrez, incluyendo por supuesto al mismísimo Alan Turing, los autómatas y robots más relevantes en este campo (incluyendo el ajedrecista de Torres Quevedo) y listas de todo tipo de componentes, como por ejemplo los motores que hay detrás de cada software de ajedrez.

Es un recurso inmenso, en el que se pueden pasar horas y horas leyendo, aprendiendo y descubriendo cosas. Aunque algunas páginas concretas no estén del todo actualizadas, tiene la ventaja de todos los wikis: puedes arreglarlo colaborando; añadir enlaces o explicaciones es muy fácil.

Casi todos los artículos genéricos (ej. Inteligencia artificial) están destilados para quedarse sólo con la información relacionada con el ajedrez, pero aun así son muy completos. ¿Un punto de partida? Quizá la Historia de la programación de ajedrez, tan interesante como cualquier otro.

Como bonus –lo reencontré leyendo el wiki– aprovecho para recomendar Computer Chess (2013), un mockumentary de Andrew Bujalski que recrea lo que debieron ser los torneos de ajedrez informático de los 80, rodado como película indie con poco presupuesto pero mucho humor y gracejo. Se llevó un premio en el mítico festival Sundance de cine, así que viene con aval.

Relacionado:

Compartir en Flipboard  Compartir en Facebook  Tuitear