29/03/2024

Las líneas de código que lo cambiaron todo

En 2009, Facebook lanzó un código que cambió el mundo: el botón «me gusta» . «Like» fue una creación de varios programadores y diseñadores, incluidos Leah Pearlman y Justin Rosenstein. Habían planteado la hipótesis de que los usuarios de Facebook, a menudo, estaban demasiado ocupados para dejar comentarios en las publicaciones de sus amigos, pero si hubiera un simple botón para presionar se produciría un boom, una hecatombe: desbloquearía un montón de afirmaciones edificantes. Los amigos podrían validarse entre sí con mucha más frecuencia y facilidad, como dijo más tarde Pearlman.

Funcionó, tal vez un poco demasiado bien. Al hacer «me gusta» un gesto sin demasiado esfuerzo, ya en 2012 lo habíamos machacado más de 1 billón de veces, y realmente desbloqueó una avalancha de validación. Pero también tuvo efectos secundarios inquietantes. Publicamos una foto, luego nos sentamos allí refrescando la página con ansiedad, esperando que aumenten los «me gusta». Nos preguntamos por qué alguien más estaba recibiendo más «Me gusta». Entonces comenzamos a aumentar el voltaje en nuestro comportamiento diario en línea: tratando de ser más divertido, más cáustico, más glamuroso, más extremo.

El código da forma a nuestras vidas. Como ha escrito el capitalista de riesgo Marc Andreessen, «el software se está comiendo el mundo», aunque en este punto probablemente es más exacto decir que el software lo está digiriendo.

Culturalmente, el código existe en una zona interior de aquello que vemos. Podemos sentir sus efectos gnósticosGnosticismoTb. nosticismo. De gnóstico e -ismo. ↔ 1. m. Doctrina filosófica y religiosa de los primeros siglos de la Iglesia, mezcla de la cristiana con creencias judaicas y orientales, que se dividió en varias sectas y propugnaba tener un conocimiento intuitivo y misterioso de las cosas divinas. en nuestra realidad cotidiana, pero rara vez lo vemos, y es bastante inescrutable para los no iniciados. (A la gente de Silicon Valley le gusta así; les ayuda a sentirse como magos). Construimos listas de los 10 mejores para películas, juegos, programas de televisión, trabajos que dan forma a nuestras almas. Pero no nos sentamos a compilar listas de los fragmentos de código más consecuentes del mundo, aunque posiblemente informan al zeitgeistZeitgeistZeitgeist es una palabra en alemán que puede traducirse al español como «espíritu del tiempo», «espíritu del momento» o «espíritu de la época». Hace referencia al clima, ambiente o atmósfera intelectual y cultural de una determinada era. Wikipedia de la misma manera.

Entonces Slate decidió hacer precisamente eso. Para arrojar luz sobre el software que ha inclinado al mundo sobre su eje, los editores encuestaron a científicos informáticos, desarrolladores de software, historiadores, políticos y periodistas. Se les pidió que eligieran: ¿Qué partes del código tuvieron una gran influencia? ¿Cuáles deformaron nuestras vidas? Alrededor de 75 respondieron con todo tipo de ideas, y Slate seleccionó 36. No es una lista completa, no podría serlo, dada la gran cantidad de código influyente que se ha escrito. (¡Un favorito mío que no logró el corte: «Quicksort!» O tal vez el algoritmo Bernoulli de Ada Lovelace). Al igual que todas las listas, está destinado a provocar pensamientos, para ayudarnos a reflexionar sobre cómo el código subyace a nuestras vidas y cómo las decisiones tomadas por los programadores se dirigen hacia el futuro.

Probablemente hayas escuchado un código, como HTML. Otro código es poderoso (como las simulaciones de Monte Carlo, que se usa para modelar probabilidades) pero totalmente extraño para los civiles. Algunos contienen errores mortales, como el fallo en el Boeing 737 Max. Y algunos son espeluznantes, como el píxel de seguimiento que les permite a los especialistas en marketing saber si abrieron un correo electrónico.

Aquí podemos observar una tendencia clara: el código más consecuenteConsecuenteDel lat. consĕquens, -entis, part. pres. act. de consĕqui «seguir». ↔ 1. adj. Que sigue a algo anterior o se deduce de ello. ↔ 2. adj. Dicho de una persona: Que obra de acuerdo con sus principios. ↔ 3. m. Proposición que se deduce de otra que se llama antecedente. ↔ 4. m. Gram. Segundo de los términos de la relación gramatical. ↔ 5. m. Gram. Elemento nominal u oracional al que se hace referencia en una relación catafórica. ↔ 6. m. Mat. Segundo término de una razón, ya sea por diferencia, ya por cociente, a distinción del primer término, que se llama antecedente., a menudo crea nuevos comportamientos al eliminar el roce. Cuando el software hace que sea más fácil hacer algo, hacemos más. El código de 1988 que creó por primera vez Internet Relay Chat (IRCIRC ↔ Internet Relay ChatIRC (Internet Relay Chat) es un protocolo de comunicación en tiempo real basado en texto que permite debates entre dos o más personas. Se diferencia de la mensajería instantánea en que los usuarios no deben acceder a establecer la comunicación de antemano, de tal forma que todos los usuarios que se encuentran en un canal pueden comunicarse entre sí, aunque no hayan tenido ningún contacto anterior. Las conversaciones se desarrollan en los llamados canales de IRC, designados por nombres que habitualmente comienzan con el carácter # o & (este último solo es utilizado en canales locales del servidor). Es un sistema de charlas ampliamente utilizado por personas de todo el mundo. Wikipedia) permitió a los habitantes de los primeros tiempos de Internet chatear entre ellos en tiempo real. Ahora, el texto en tiempo real está en todas partes, desde un lugar de trabajo infinitamente llamativo, SlackSlack (software)Slack es una herramienta de comunicación en equipo y surgió con el nombre de Dharma creada por Stewart Butterfield, Eric Costello, Cal Henderson, y Serguei Mourachov. Slack surge como una herramienta interna utilizada por la compañía Tiny Speck en el desarrollo de Glitch, un juego en línea actualmente obsoleto. Slack es lanzado al mercado en agosto del 2013 y consiguió un registro de 8000 clientes en las primeras 24 horas, es servicio de pago pero también tiene una cuenta gratuita para equipos pequeños. La subida de archivos y la comunicación entre trabajadores puede usarse de manera gratuita pero otras como videoconferencias y como acceso a los 10 000 mensajes enviados son de pago. Tienen versiones para Android, iOS, Mac, Windows, Linux en Beta Wikipedia se confabula hasta el motín de trolear y contrarrestar en una transmisión en vivo de TwitchTwitchLogo de TwitchWikipedia.

Al principio no siempre está claro cuándo algún código se convertirá en una modelo de su época. A menudo comienza como un experimento extraño, una sonda de prueba. En 1961, Spacewar!Spacewar!Spacewar! es un videojuego de combate espacial desarrollado en 1962 por Steve Russell en colaboración con Martin Graetz, Wayne Wiitanen, Bob Saunders, Steve Piner y otros. Fue programado para el por entonces recién creado minicomputador DEC PDP-1 del Instituto de Tecnología de Massachusetts. Wikipedia, el primer videojuego que se hizó realmente popular y viral, podría parecer una forma bastante frívola de usar una computadora del tamaño de una habitación que costaba, en ese momento, $120.000/1.078 € (equivaldría, inflación añadida, a más de 1 millón en dólares/898.880 € de 2019). Pero fue pionero en muchos de los conceptos que ayudaron a las computadoras a ser convencionales: representar los datos como íconos, permitiendo a los usuarios manipular esos íconos con controladores portátiles.

Los efectos del código pueden sorprender a todos, incluidos los codificadores. Clive Thompson, autor de Coders: The Making of a New Tribe and the Remaking of the World
BINARY PUNCH CARDS – TARJETAS BUNCH PUNCH
Año ─ 1725
El primer código

La programación binaria es anterior a lo que pensamos que son las computadoras. Se cree que Basile BouchonBasile BouchonBasile Bouchon es el inventor del telar semi-automático. El 1725, este inventor francés usa una cinta perforada para programar un telar.1 Obrero de Lyon e hijo de un fabricante de órganos, adapta el concepto de los mecanismos de relojería utilizados en las cajas de música a la tarea repetitiva de un telar. Este invento será perfeccionado el 1728 por su asistente, Jean-Baptiste Falcon, que utilizará una serie de tarjetas perforadas ligadas entre ellas. Wikipedia fue la primera persona en perforar agujeros en el papel y usarlo para controlar una máquina: en 1725, inventó un telar que tejía sus patrones según las instrucciones proporcionadas en el papel perforado con el que se alimentó. Un agujero perforado es el «uno», y la ausencia de un agujero perforado es el «cero». Por mucho que las cosas hayan cambiado desde entonces, el componente esencial del código no lo ha hecho.

─ Elena Botella, Slate

EL PRIMER CÓDIGO MODERNO EJECUTADO
Año ─ 1948
Marcó el comienzo del uso del código informático y los modelos informáticos de devastación nuclear que dieron forma a la carrera armamentista de la Guerra Fría.

El Integrador Numérico Eléctrico y la Computadora (Electrical Numerical Integrator and Computer) fueron la primera computadora electrónica programable. Creado y terminado en 1945, se configuró para cada nuevo problema mediante el cableado de las conexiones entre sus muchos componentes. Cuando una tarea, como una adición, finaliza, un pulso activa la siguiente. Pero unos años más tarde, Klára Dán von NeumannKlara Dan von NeumannKlara Dan von NeumannWikipedia y el científico de Los AlamosLaboratorio Nacional de Los ÁlamosLogo del Laboratorio de Los Alamos Wikipedia National Laboratory, Nicholas MetropolisNicholas Constantine MetropolisNicholas Constantine MetropolisWikipedia cablearon ENIACENIACENIAC, acrónimo de Electronic Numerical Integrator And Computer (Computador e Integrador Numérico Electrónico), fue una de las primeras computadoras de propósito general. Era Turing-completa, digital, y susceptible de ser reprogramada para resolver «una extensa clase de problemas numéricos». Fue inicialmente diseñada para calcular tablas de tiro de artillería destinadas al Laboratorio de Investigación Balística del Ejército de los Estados Unidos. Wikipedia para ejecutar el primer código moderno ejecutado en cualquier computadora: cientos de instrucciones numéricas ejecutadas desde una memoria de solo lectura direccionable (los interruptores de la tabla de funciones de ENIAC). Simularon la explosión de varios diseños de bombas atómicas que se estaban evaluando en el Laboratorio Nacional de Los Alamos en Nuevo México, utilizando la técnica de Monte CarloMétodo de MontecarloEl método de Montecarlo es un método no determinista o estadístico numérico, usado para aproximar expresiones matemáticas complejas y costosas de evaluar con exactitud. El método se llamó así en referencia al Casino de Montecarlo (Mónaco) por ser «la capital del juego de azar», al ser la ruleta un generador simple de números aleatorios. El nombre y el desarrollo sistemático de los métodos de Montecarlo datan aproximadamente de 1944 y se mejoraron enormemente con el desarrollo de la computadora u ordenador. El uso de los métodos de Montecarlo como herramienta de investigación proviene del trabajo realizado en el desarrollo de la bomba atómica durante la Segunda Guerra Mundial en el Laboratorio Nacional de Los Álamos en EE. Wikipedia mediante la cual se simula un sistema complejo, paso a paso virtual, para mapear repetidamente la distribución de probabilidad de posibles resultados. Von Neumann y Metropolis enviaron más de 20,000 tarjetas a los científicos nucleares en Los Alamos, rastreando el progreso de los neutrones simulados a través de ojivas detonantes. Los descendientes distantes de este código todavía están en uso en Los Alamos hoy.

─ Thomas Haigh, coautor de ENIAC en acción: Fabricación y reconstrucción de la computadora moderna

COMPILADOR DE GRACE HOPPER
Año ─ 1952
Hizo posible que las computadoras procesen palabras.

IF END OF DATA GO TO OPERATION 14 .

Wikipedia

Grace HopperGrace Murray HopperGrace Murray HopperWikipedia estaba programando una computadora incipiente, cuando decidió hacer todo más fácil al rootearlo en lenguaje humano. Hopper, que se alistó en la Reserva Naval de los Estados Unidos durante la Segunda Guerra Mundial, sabía que personas como sus superiores en el ejército luchaban por comprender el código binario. Si los lenguajes de programación pudieran estar basados en inglés, el trabajo sería menos propenso a errores y más accesible para aquellos que no tenían un doctorado en matemáticas. Algunos se burlaron de la idea, pero a principios de la década de 1950 había ideado un compilador, un conjunto de instrucciones que convierte un tipo de código más inteligible en el código de nivel inferior procesado directamente por la máquina. Con esa herramienta, ella y su laboratorio desarrollaron FLOW-MATICFLOW-MATICFLOW-MATIC fue el primer lenguaje de programación que expresó operaciones utilizando declaraciones similares al inglés. También fue el primer sistema en separar claramente la descripción de los datos de las operaciones en ellos. Su lenguaje de definición de datos, a diferencia de sus declaraciones ejecutables, no era como el inglés; más bien, las estructuras de datos se definieron llenando formularios pre-impresos. Fue desarrollado para el UNIVAC I en Remington Rand, por el comité que había compilado el diseño del lenguaje Compran. Robert William Bemer (8 de febrero de 1920 - 22 de junio de 2004) junto Grace Murray Hopper (1906 – 1992) Establecieron el concepto de lenguajes de programación basados en palabras del lenguaje natural; también desarrollaron los primeros compiladores de la historia, el A-0 (Math Matic) y el B-0, y en 1960 presentó su primera versión del lenguaje COBOL (Common Business-Oriented Language). Wikipedia, el primer lenguaje de programación en incorporar palabras en inglés basadas en ese proceso.

─ Molly Olmstead, Slate

SPACEWAR!
Año ─ 1961
El primer vídeo-juego de distribución masiva.

/ this routine handles a non-colliding ship invisibly
/ in hyperspace
 
hp1,  dap hp2
  count i ma1, hp2
  law hp3    / next step
  dac i ml1
  law 7
  dac i mb1
  random 
  scr 9s
  sir 9s
  xct hr1
  add i mx1
  dac i mx1
  swap
  add i my1
  dac i my1
  random
  scr 9s
  sir 9s
  xct hr2
  dac i mdy
  dio i mdx
  setup .hpt,3
  lac ran
  dac i mth
hp4,  lac i mth
  sma
  sub (311040
  spa
  add (311040
  dac i mth
  count .hpt,hp4
  xct hd2
  dac i ma1
hp2,  jmp .

Steve Russell via Bitsavers.org

A fines de 1961, un grupo de jóvenes, tanto empleados como estudiantes y asociados del MITInstituto de Tecnología de MassachusettsInstituto de Tecnología de MassachusettsWikipedia (muchos de ellos miembros del Tech Model Railroad Club) obtuvieron acceso nocturno a una computadora DEC PDP-1 recientemente donada. La vanguardia de la informática no militar, el PDP-1 se vendió por $ 120,000/ € 107.827 (que sería un poco más de $ 1 millón/ € 898 560 hoy ), contó con una longitud de palabra de 18 bits y usó cinta de papel para el almacenamiento del programa. En el transcurso de cinco meses, estos programadores crearon un juego en el que dos jugadores controlan naves espaciales, la aguja y la cuña, que participan en una batalla espacial uno a uno mientras evitan el pozo de gravedad de una estrella en la pantalla central.

Spacewar! se extendió rápidamente por la primera comunidad de «hackers». Posteriormente fue distribuido por DEC con cada PDP-1, precargado en la memoria central y listo para demostrar cuando está instalado. El programa influyó significativamente en la pequeña comunidad de codificación de la década de 1960 e inspiró a generaciones de creadores de videojuegos. Sigue vivo en emuladores y es mostrado regularmente en el Computer History Museum en el último PDP-1 operativo. Steve Russell, el codificador principal, dijo en un panel del Smithsonian de 2018: “Tiene más de 50 años. No hay quejas pendientes de los usuarios. No hay informes de fallos. Y el apoyo todavía está disponible.

─ Arthur Daemmrich, director, Centro Lemelson para el Estudio de Invención e Innovación.

LOS ORÍGENES DEL CORREO ELECTRÓNICO
Año ─ 1965
Venga. Es correo electrónico.

WHENEVER A(1).E.FENCE.OR.A(2).E.FENCE.OR.A(3).E.FENCE
PRFULL.($'R'1INSTRUCTIONS:$)
PRFULL.($ '4MAIL NAME1 NAME2 PROB1 PROG1 PROB2 PROG2 ...$)
PRFULL.($ WHERE '=NAME1 NAME2'= IS THE FILE TO BE MAILED,$)
PRFULL.($ AND '=PROBN PROGN'= ARE DIRECTORIES TO WHICH '8$,
1 $IT IS TO BE SENT.'B$)
CHNCOM.(0)
END OF CONDITIONAL

En 1961, los piratas informáticos del Instituto de Tecnología de Massachusetts (MIT) crearon un sistema para permitir que varios usuarios inicien sesión en la misma computadora, y comenzaron a dejarse mensajes pequeños. En 1965, un grupo de codificadores decidió crear un sistema de comando formal para enviar, recibir y mostrar estas pequeñas misivas digitales. Los superiores se resistieron al comando «CORREO» al principio, pensando que era un poco frívolo, pero su uso despegó, tanto que, en 1971, el MIT incluso vio la primera pieza de spam: un mensaje contra la Guerra de Vietnam.

─ Clive Thompson

THE POLICE BEAT ALGORITHM
Año ─ 1968
El comienzo de la vigilancia predictiva moderna y el perfil racial computerizado.

Cuando el presidente Lyndon JohnsonLyndon B. JohnsonLyndon B. JohnsonWikipedia formó la Comisión del Presidente sobre Aplicación de la Ley y Administración de Justicia en 1965, le pidió que examinara cómo las computadoras podrían ayudarnos a resolver el problema del crimen de la nación, un problema que él y la comisión definieron como urbano y negro. La respuesta a esta llamada fue The Police Beat Algorithm, cuyo objetivo era resolver problemas de planificación como cuántos oficiales deberían patrullar un área determinada de una ciudad. Al combinar el PBA con una base de datos de delitos, los oficiales de policía podrían producir perfiles automatizados de sospechosos basados ​​en la demografía racial de los golpes de la policía y desplegar recursos (oficiales, armas y otros equipos) en consecuencia, antes de que se cometiera un delito. Las prácticas policiales predictivas de hoy vigilan y criminalizan desproporcionadamente a las personas de color. Como nos recuerda la historia de la PBA, este no es el resultado de un fallo tecnológico imprevisto: es la perfección del diseño de 50 años de la tecnología.

─ Charlton McIlwain, autor de Black Software: The Internet & Racial Justice, From the Afronet to Black Lives Matter

EL CÓDIGO DE RESCATE DEL MÓDULO LUNAR DEL APOLO 11
Año ─ 1969
El código que evitó que la computadora del módulo lunar se quedara sin espacio en el espacio.

POODOO INHINT
CA Q
TS ALMCADR
 
TC BANKCALL
CADR VAC5STOR # STORE ERASABLES FOR DEBUGGING PURPOSES.
 
INDEX ALMCADR
CAF 0
ABORT2 TC BORTENT
 
OCT77770 OCT 77770 # DONT MOVE
CA V37FLBIT # IS AVERAGE G ON
MASK FLAGWRD7
CCS A
TC WHIMPER -1 # YES. DONT DO POODOO. DO BAILOUT.
 
TC DOWNFLAG
ADRES STATEFLG
 
TC DOWNFLAG
ADRES REINTFLG
 
TC DOWNFLAG
ADRES NODOFLAG
 
TC BANKCALL
CADR MR.KLEAN
TC WHIMPER

Digitalizado por Virtual AGC y MIT Museum, proporcionado por el National Air & Space Museum.

La computadora de orientación Apollo fue una maravilla: como Poppy NorthcuttFrances Marian «Poppy» NorthcuttFrances Marian «Poppy» Northcutt https://es.wikipedia.org/wiki/Frances_Northcutt, quien calculó las trayectorias de regreso a la Tierra de Apollo, me dijo que el AGC tenía menos poder de cómputo que las tarjetas de felicitación de hoy que registran un mensaje personal. Sin embargo funcionó. Esa energía y espacio de almacenamiento limitados significaron que las tareas debían gestionarse cuidadosamente, por lo que el AGC siempre se centró en los trabajos más importantes. Si se quedara sin espacio para realizar tareas importantes, estas no se llevarían acabo. El equipo de software de AGC sabía que había eventualidades que no podían planificarse. Entonces crearon el programa de rescate. Cuando la computadora estaba a punto de quedarse sin espacio (o desbordamiento), el AGC activó BAILOUT para programar datos y operaciones menos importantes para que pudiera mantener las funciones vitales en funcionamiento. Cuando el módulo de aterrizaje del Eagle descendió en la superficie de la Luna, a 30,000 pies/9.144 metros, el AGC emitió una alarma 1202, que ni Neil ArmstrongNeil Alden Armstrong Neil Alden Armstrong Wikipedia ni el controlador de vuelo en Houston reconocieron en el momento. Pero en menos de 30 segundos, los expertos en informática de Mission Control informaron que el software AGC estaba haciendo exactamente lo que se suponía que debía hacer: abandonar el trabajo de menor prioridad y reiniciar los trabajos importantes (tan rápido que era imperceptible para la tripulación). Armstrong y Buzz Aldrin continuarían obteniendo lo que absolutamente necesitaban del AGC para mantenerse en el camino hacia el aterrizaje. Las alarmas de desbordamiento sonarían tres veces más antes de que Armstrong pronunciara «el Eagle ha aterrizado», pero siempre porque las cosas funcionaron como estaba previsto. La palabra rescate normalmente indica el final fallido de una misión, pero aquí ayudó a hacer realidad el mayor logro de la humanidad.

─ Ellen Stofan, John y Adrienne Mars Director, Museo Nacional del Aire y el Espacio del Smithsonian.

HELLO WORLD!
Año ─ 1972 o posterior
La frase que ha introducido generaciones al código

main( ) { printf("hello, world\n"); }

Cuando se siente a aprender un nuevo lenguaje de programación, lo primero que debe hacer en el tutorial es que la computadora muestre la frase «¡Hola, mundo! ─ Hello World!» Quizás el primer ejemplo más famoso proviene de un memorándum de Bell Laboratories llamado Programación en C ─ Un tutorial , escrito en 1974, aunque también se encontró en un manual de 1972 para otro idioma, B, y puede volver incluso antes. ¡Hola Mundo! Es un pedacito hermoso de pedagogía. Es una tarea pequeña y alcanzable que ofrece una sensación temprana de logro. Es un estándar, por lo que ayuda a ilustrar las diferencias entre los diferentes lenguajes de programación. También es una forma rápida y fácil para los programadores avanzados de asegurarse de que todo funcione correctamente después de instalar un nuevo entorno. (A veces, los programadores usan «tiempo para ‘hola mundo’» como una prueba de velocidad para comparar idiomas y entornos.) Quizás lo más importante, «¡Hola, mundo!» es amigable y ayuda a transmitir la escala a la que el nuevo programador El código puede tener un efecto, es decir, el mundo.

─ Chris Noessel, A.I. jefe de diseño en IBM. Lea a Clive Thompson sobre el poder de «¡Hola, mundo!»

THE NULL-TERMINATED STRING
Año ─ 1972
El error de diseño más catastrófico en la historia de la informática

char yellow[26] = {'y', 'e', 'l', 'l', 'o', 'w', '\0'};

Manual de referencia GNU C Linux

En 1972, Dennis RitchieDennis MacAlistair RitchieDennis MacAlistair RitchieWikipedia tomó una decisión fatídica: representar el texto en su nuevo idioma con algo llamado cadena terminada en nulo. El concepto había existido antes, pero lo consagró en su nuevo lenguaje, al que llamó C, y el legado de esa decisión ha estado con nosotros desde entonces. Hay dos formas principales en que los lenguajes de programación representan un fragmento de texto: puede tener una longitud intrínseca y explícita: «Contigo exactamente 10 caracteres y no más». O puede tener una terminación nula: «Aquí hay un montón de caracteres, sigue hasta llegar al cero byte al final, ¡buena suerte!»

Un error extremadamente común en el código C es copiar una cadena larga en una cadena más corta y desbordar el final, lo que significa que está destruyendo otros datos que acaban de estar cerca. Es como garabatear más allá del borde de una pizarra. Además de simplemente provocar el mal funcionamiento del programa, estos errores pueden ser explotados para cambiar el comportamiento de un programa al convencerlo de que sobrescriba algo con datos específicos y cuidadosamente elaborados. Estos son los ataques de desbordamiento de búfer. Casi todas las vulnerabilidades de seguridad de las que has oído hablar comienzan aquí, comenzando con el gusano Morris en 1988. Puede codificar cuidadosamente en C para evitar este tipo de errores, pero el lenguaje hace que esta clase de error sea fácil de cometer y difícil de detectar. Casi todos los idiomas modernos evitan la cadena terminada en nulo, pero C y C ++ aún ejecutan el sustrato del mundo, desde su enrutador hasta sus bombillas “inteligentes”. Así que seguimos jugando whack-a-mole con esta clase de error casi 50 años después.

─ Jamie Zawinski, desarrollador de Netscape, fundador de Mozilla.org, empresario de DNA Lounge.

TELNET
Año ─ 1975
La primera red pública de datos basada en la conmutación de paquetes, la columna vertebral del Internet actual.

Antes de que existiera Internet, existía ARPANETARPANETWikipedia, una red informática para investigadores de la Agencia de Proyectos de Investigación Avanzada (ahora DARPA) para intercambiar datos entre máquinas. A medida que ARPANET se expandió dentro del gobierno, sus creadores se dieron cuenta de que la tecnología podría ser valiosa para el público en general y cuánto dinero se podía ganar en el juego. En agosto de 1975, la versión comercial de ARPANET, Telnet, se puso en línea en siete ciudades, permitiendo a sus primeros clientes, en su mayoría compañías de computadoras o bases de datos, marcar con sus teléfonos para cargar y descargar datos, como mensajes de correo electrónico o acceso a código de forma remota. almacenado en una computadora central. Si bien a ARPANET a menudo se le atribuye ser la primera versión de Internet moderna, podría ser más exacto decir que Telenet, un servicio diseñado para el consumo público, es realmente el precursor de la web. De hecho, uno de los mayores clientes de Telenet en la década de 1980 fue Quantum Link, que más tarde se convirtió en AOL.

─ Jane C. Hu, colaboradora de Future Tense

EL ERROR DE REDONDEO DE LA BOLSA DE VANCOUVER
Año ─ 1972
Una distinción decimal menor con un costo mayor

- return floor(value)
+ return round(value)

Esta es una aproximación del código que la Bolsa de Valores de Vancouver habría utilizado. Chase Felker/Slate

A principios de 1982, la Bolsa de Valores de Vancouver presentó un índice de acciones electrónico inicialmente vinculado a un valor de 1000 puntos. En dos años, cayó a la mitad de su valor original, una tendencia confusa en medio del mercado alcista de principios de los años ochenta. Una investigación reveló que los cálculos del índice estaban mal en un solo comando, usando floor () en lugar de round (). Este comando significaba que en lugar de redondear al tercer decimal, el valor se estaba truncando. (Las computadoras digitales necesariamente tienen una resolución finita, lo que requiere redondeo o truncamiento). Entonces, si el índice se calculó como 532.7528, se almacenó como 532.752, en lugar de redondearse a 532.753. En el transcurso de miles de cálculos al día, esta diferencia aparentemente menor, esencialmente redondeando cada vez, equivalía a una pérdida dramática de valor. El error de programación finalmente se solucionó en noviembre de 1983, después de que el índice cerró alrededor de 500 un viernes. Reabrió el lunes a más de 1000, restaurando su valor perdido.

─ Lav Varshney, profesor asistente, Universidad de Illinois en Urbana-Champaign

THERAC-25
Año: 1985–1987
Probó que el exceso de confianza mata

Los titulares, cuando surgió la verdad, dieron una advertencia sobre la modernidad. «ERRORES DE SOFTWARE QUE SE CONVIERTEN CON MUERTE EN LA ERA COMPLEJA», proclamó Los Angeles Times. Una máquina destinada a tratar el cáncer, en varias instalaciones médicas, asesino a seis pacientes con sobredosis masivas de radiación, matando al menos a tres.

Como descubrirían los investigadores, el Therac-25Therac-25El Therac-25 fue un acelerador lineal de radioterapia producido por AECL, sucesor de los modelos Therac-6 y Therac-20 (las unidades anteriores fueron producidas en asociación con CGR). El aparato estuvo comprometido en al menos seis accidentes entre junio de 1985 y enero de 1987, en los que varios pacientes recibieron sobredosis de radiación. Tres de los pacientes murieron como consecuencia directa en el que para entonces fue el accidente más grave en los 35 años de los aceleradores lineales médicos. Estos accidentes pusieron en duda la fiabilidad del control por software de sistemas de seguridad crítica, convirtiéndose en caso de estudio en la informática médica y en la ingeniería de software. Wikipedia había sido programado para permitir un error fatal. La máquina ofrecía tipos de terapia de baja y alta potencia, la última de las cuales requería un dispositivo de metal para filtrar el haz. Pero debido a un error en el software, un operador podría activar accidentalmente el modo de alta potencia sin el dispositivo de metal necesario en su lugar.

El Therac-25 había sido diseñado como una «mejora» del Therac-20, y el software se consideraba lo suficientemente infalible como para no necesitar controles de seguridad externos. El resultado: varias muertes se atribuyeron a ingenieros demasiado confiados que no tuvieron en cuenta la posibilidad de un error.

— Molly Olmstead

INTERNET RELAY CHAT
Año: 1988
Colgarse en línea, el original

/join #cats

Internet Relay Chat, mejor conocido como IRC, comenzó antes de que la mayoría de la gente pudiera decir qué es Internet. Fue la primera forma popular de chatear en tiempo real con otras personas en un canal grupal. Los primeros usuarios iniciaron sesión para compartir noticias, por ejemplo, durante el intento de golpe de estado de 1991 en la Unión Soviética durante un apagón de los medios. Chatear en sí mismo requería una especie de código: para unirse a un canal, escriba «/ join # [nombre del canal]». (Esto le resultará familiar a los adictos a Slack de la actualidad). Si quisiera señalar algo sobre usted, escriba «/ me está muy cansado», y compartiría su nombre con las palabras «muy cansado» con un asterisco. Es básico, pero para muchos, fue el primer roce con el uso de un comando en una computadora. Y fue una solicitud para unirse a la conversación.

— Abril Glaser, Slate

EL GUSANO DE MORRIS
Año: 1988
Un frío despertar de cuán grande se había vuelto Internet

checkother()          /* 0x57d0 */
{
int s, l8, l12, l16, optval;
struct sockaddr_in sin;      /* 16 bytes */
 
optval = 1;
if ((random() % 7) == 3)
return; /* 612 */
 
s = socket(AF_INET, SOCK_STREAM, 0);
if (s < 0)
return;

Tanto Robert Morris como Internet en sí mismos eran jóvenes cuando Morris, un estudiante graduado de Cornell de 23 años, lanzó el «Morris Worm», lanzando lo que se ha llamado el «primer gran ataque en Internet». Aproximadamente el 10 por ciento de las 60.000 computadoras conectadas a internet fueron infectadas, causando daños por millones de dólares y llevando al New York Times a imprimir las palabras «internet» por primera vez. Incluso las personas expertas en tecnología se sorprendieron al ver cuán extenso era el alcance del gusano. Morris, quien dice que nunca tuvo la intención de causar tanto daño, se convirtió en la primera persona acusada bajo la Ley de Abuso y Fraude Informático. Después de ser sentenciado a tres años de libertad condicional, pasó a ser cofundador de la famosa incubadora de empresas Y Combinator y profesor asistente de ciencias de la computación en el MIT.

— Elena Botella

EL VIRUS DE UNA LÍNEA
Año: alrededor de 1990
El poder de una sola línea de código y la siempre sorprendente fragilidad de las computadoras

: ( ) { : | : & } ; :

No corras  y ejecutes esto en casa. Via Chris Noessel

Lo que ves arriba es un tipo de virus de una línea llamado fork bomb. Se requieren algunas condiciones específicas para funcionar (incluida una copia anterior y susceptible del sistema operativo Unix). Pero dado eso, si escribe este comando en Bash, se replica una y otra vez hasta que consume toda la memoria disponible en la computadora y hace que se bloquee.

Lo que lo hace hermoso no es el peligro que representa en relación con su tamaño, sino que usa dos puntos para el nombre de una función. La mayoría de las funciones (líneas de código reutilizables) se nombran descriptivamente, como «Imprimir» o «isThisEmailValid», pero no hay ninguna regla que diga que tiene que ser así. En la mayoría de los lenguajes de computación, no puede usar dos puntos como nombre de función, pero puede hacerlo en Bash.

Encontré esta línea por primera vez como una exhibición en un museo de arte, el Museo Angewandte Kunst en Frankfurt, Alemania, en 2002. No hay muchos fragmentos de código que terminen en los museos.

─ Chris Noessel

HTML HYPERLINK
Año: 1990
La herramienta que nos permite conectar todo a cualquier cosa, incluso lo inimaginable.

<a href="https://elredondelito.es" target="_blank" rel="noopener noreferrer">elredondelito</a>

Tim Berners-Lee cambió el mundo cuando introdujo el hipervínculo, un fragmento de código que permite a cualquiera saltar a través de la World Wide Web. El concepto de vincular información no era especialmente nuevo. Lo nuevo era la puntuación improvisada de varias convenciones de sistemas informáticos para llegar al formato de dos puntos-barra-barra de la URL, que podría nombrar todos y cada uno de esos elementos existentes. Pero mientras Berners-Lee estaba preocupado por la compatibilidad con versiones anteriores, el concepto de hipervínculo-cualquier cosa, hizo que la idea fuera a prueba de futuro. El hipervínculo de Berners-Lee era gratuito para convertirse en un botón Comprar ahora, un voto similar, un retweet y mucho más. Esos casos de uso inesperados deberían ser un recordatorio de que, al estar en la cúspide de una revolución tecnológica, lo más difícil de ver es lo que viene después.

— Charles Duan, director de tecnología e innovación, R Street.

INTRODUCCIÓN DEL JPEG
Año: 1992
Cambió para siempre nuestra relación con la fotografía

double *NaiveDct_transform(double vector[], size_t len) {
  if (SIZE_MAX / sizeof(double) &lt; len)
    return NULL;
  double *result = malloc(len * sizeof(double));
  if (result == NULL)
    return NULL;
 
  double factor = M_PI / len;
  for (size_t i = 0; i &lt; len; i++) {
    double sum = 0;
    for (size_t j = 0; j &lt; len; j++)
      sum += vector[j] * cos((j + 0.5) * i * factor);
    result[i] = sum;
  }
  return result;
}

Esto muestra la transformación discreta del coseno, la idea subyacente detrás de los archivos JPEG. Proyecto nayuki

Damos por sentado que podemos llenar nuestras cámaras con un gran número de fotos. Pero las imágenes solían requerir grandes cantidades de datos. En 1992, el Joint Photographic Experts Group publicó especificaciones para un estándar, el JPEG, para reducir el tamaño de los archivos de imagen. Aunque otros formatos de compresión estaban disponibles en ese momento, el JPEG se convirtió en el estándar mundial, en parte porque estaba libre de cosas extrañas. Los archivos JPEG aprovechan la compresión con pérdida, un proceso que elimina aspectos de una imagen indetectables para el ojo humano, como pequeñas variaciones de color. La compresión con pérdida también fue esencial para la invención de algo más introducido en 1992: el MP3, un formato de archivo de audio hecho posible al descartar fragmentos de datos indetectables para el oído humano.

─ Aaron Mak, Slate

EL NAVEGADOR MOSAICO
Año: 1993
El nacimiento de la web tal como la vemos.

MakeImage(dsp, data, width, height, depth, img_info, clip)
  Display *dsp;
  unsigned char *data;
  int width, height;
  int depth;
  ImageInfo *img_info;
  int clip;
{
  int linepad, shiftnum;
  int shiftstart, shiftstop, shiftinc;
  int bytesperline,bpp;
  int temp;
  int w, h;
  XImage *newimage;
  unsigned char *bit_data, *bitp, *datap;
  Visual *theVisual;
  int bmap_order;
  unsigned long c;
  int rshift, gshift, bshift;
 
#ifdef NEW
  switch(bpp=bits_per_pixel(dsp,depth))
#else
  switch(depth)

Esto muestra una parte de la versión 2.7 del código.
Mosaico de NCSA para el sistema X Window, Grupo de desarrollo de software, Centro nacional para aplicaciones de supercomputación

Los navegadores anteriores habían sido complicados, ya que mostraban el texto bastante bien pero te obligaban a ver imágenes en una ventana separada. Los hackers de Mosaic, liderados por Marc Andreessen, querían un navegador que presentara imágenes y texto uno al lado del otro. Hicieron que la web pareciera familiar, como si fuera un cine digital o un periódico genial. También provocó que los estándares HTML comenzaran a evolucionar a toda velocidad, ya que los webmasters de todo el mundo comenzaron a exigir más etiquetas para que los sitios se vean geniales. (Los marcos parecían una idea genial en ese entonces.)

─ Vive Thompson

EL PÍXEL DE SEGUIMIENTO
Año: 1993
La recopilación de datos moderna comenzó con estas imágenes invisibles.[intense_spacer type=”block” height=”14″]

&lt;*img height="1" width="1" style="display:none"src=" https://www.facebook.com/tr?id=166975463695820&amp;ev= PageView&amp;noscript=1"/&gt;

Pixel de seguimiento de PageView de Facebook

Estos pequeños fragmentos de HTML no se parecen mucho, pero son la base de la publicidad digital, lo que los coloca en el centro de tantos problemas modernos: vigilancia, consolidación de medios, incluso información errónea.

En la década de 1990, los diseñadores web usaban imágenes transparentes de un píxel para ajustar los diseños de página. Pero una computadora tiene que descargar cada imagen en una página web, incluso un píxel imperceptible. En 1993, las empresas comenzaron a capitalizar esto: al rastrear las descargas de píxeles, aprendieron quién y dónde estaba, y activaron la descarga de una cookie en su navegador. Esa cookie permitió a los anunciantes seguirlo en varios sitios.

El éxito del seguimiento de píxeles condujo directamente al botón «me gusta» de Facebook, que lo rastrea en todos los sitios web donde está incrustado. Esta recopilación masiva de datos permitió la hiper-focalización que hizo que los anuncios de Facebook fueran tan exitosos, alejando miles de millones en ingresos de las compañías de medios. A medida que el periodismo se agitaba, la desinformación dirigida prosperó y proliferaron los modelos comerciales basados en la vigilancia. (Más información sobre el botón Me gusta a continuación.)

— Sara Wachter-Boettcher, autora de Technically Wrong: Sexist Apps, Biased Algorithms, and Other Toxic Tech

ROBOTS.TXT
Año: 1994
Una herramienta pequeña con enormes implicaciones para la búsqueda y más allá

User-agent: Mediapartners-Google
Disallow:
 
User-agent: TruliaBot
Disallow: /
 
User-agent: *
Disallow: /search.html
 
User-agent: *
Disallow: /comments/*
 
User-agent: Mediapartners-Google*
Disallow:

Si alguna vez realizó una búsqueda en Google, existe la posibilidad de que se encuentre con un resultado que diga: «Una descripción de este resultado no está disponible debido al archivo robots.txt de este sitio». No todos quieren que su sitio web sea indexado por un motor de búsqueda, que es una de las razones por las que se puede agregar un archivo robots.txt a un sitio web para solicitar a los bots que catalogan la web, a veces llamados arañas o rastreadores, que se muevan en lugar de acceder a ese sitio. Su papel inusual de mediar el acceso al contenido del sitio web coloca el archivo robots.txt entre los bits de código más enjuiciados, teniendo en cuenta más de una docena de casos que involucran derechos de autor, piratería, violación, ley de agravios e incluso una investigación de mala conducta judicial de 2009 que involucró al ex Jefe del Noveno Circuito Juez Alex Kozinski.

─ Amanda Levendowski, directora de la Clínica de Políticas de Información e Propiedad Intelectual de Georgetown Law

LA WIKI
Año: 1994
Allanó el camino para Wikipedia

sub AsLink {
local($num) = (@_);
local($ref) = $old{"r$num"};
defined $ref
? ($ref =~ /\.(?:gif|jpg|jpeg|png)$/i
? "&lt;*img src="\"$ref\""&gt;"
: "
[$num]&lt;\/a&gt;") : "[$num]"; }

WikiWikiWeb’s WikiBase, última edición 13 de junio de 2000

Ward Cunningham inventó por primera vez el Wiki con su sitio WikiWikiWeb, que él imaginó como la forma más simple de compartir información. Utilizó un lenguaje de marcado básico, que incluye corchetes, unir palabras sin espacios y apóstrofos alrededor del texto, para que los editores actualicen y organicen la información vinculada a través de las páginas, un sistema que todavía se usa ampliamente en wikis, incluido Wikipedia, que se lanzó en 2001. El formato accesible ha convertido al wiki en una herramienta para algunas de las formas más importantes de colaboración activa en línea, desde el seguimiento de errores de seguridad hasta la toma de notas. Pero al igual que con cualquier cosa editable en línea, los wikis son vulnerables al vandalismo y los argumentos feroces sobre lo que debe y no debe publicarse, razón por la cual Wikipedia incluye páginas de discusión y reglas que rigen cómo los editores pueden agregar nueva información.

— Abril Glaser

EL PRIMER ANUNCIO EMERGENTE
Año: mediados de los 90
El flagelo de internet

window.open('https://www.elredondelito.es/')

Tengo mi lápida escogida. Dice: «¡Haz clic aquí para ganar millones!» Hace más de 20 años, escribí un fragmento de código JavaScript que abría una segunda ventana pequeña del navegador web al abrir la página que había solicitado. Esta nueva ventana contenía un anuncio: el temido anuncio emergente. Durante los años siguientes, vi con horror cómo los anuncios emergentes se extendían por la web, adoptados por los peores anunciantes más intrusivos de la web. El anuncio emergente fue diseñado para resolver un problema real: mi compañía, Tripod, dejaba que las personas pusieran cualquier contenido que quisieran en una página de inicio gratuita. Para subsidiar el servicio, vendimos anuncios. Pero a los anunciantes no siempre les gustó el contenido de la página en la que aparecían, por lo que decidimos separar el anuncio del contenido del usuario. Por lo tanto, el anuncio emergente. Sabía que el anuncio emergente no era una buena solución cuando lo implementé. Verlo propagarse por la web fue como arreglar su automóvil con cinta adhesiva y ver a todos los demás en el camino arrancar unas tiras de las cosas plateadas para unirse a la diversión. Desde que lancé esta bestia impía en el mundo, escribí libros, lancé compañías, enseñé en universidades, pero la ventana emergente es por lo que me recordarán. Todavía espero recibir correos de odio cuando aparezca este artículo.
— Ethan Zuckerman, director del MIT Center for Civic Media

EL CÓDIGO QUE HIZO ILEGAL UNA CAMISETA
Año: alrededor de 1995
Idioma: Perl
Uno de los primeros ejemplos de código como activismo

            WARNING -- THIS LABEL IS CLASSIFIED AS A MUNITION
                    RSA IN THREE LINES OF PERL
 
HAVE YOU EXPORTED A CRYPTO SYSTEM TODAY? --&gt; http://www.cypherspace.org/~adam/rsa/
--rsa--------------------------------8&lt;-------------------------------------
#!/usr/local/bin/perl -s-- -export-a-crypto-system-sig -RSA-in-3-lines-PERL
($k,$n)=@ARGV;$m=unpack(H.$w,$m."\0"x$w),$_=`echo "16do$w 2+4Oi0$d*-^1[d2%
Sa2/d0X+d*La1=z\U$n%0]SX$k"[$m*]\EszlXx++p|dc`,s/^.|\W//g,print pack('H*'
,$_)while read(STDIN,$m,($w=2*$d-1+length($n||die"$0 [-d] k n\n")&amp;~1)/2)
-------------------------------------8&lt;-------------------------------------
TRY: echo squeamish ossifrage | rsa -e 3 7537d365 | rsa -d 4e243e33 7537d365
 
        FEDERAL LAW PROHIBITS TRANSFER OF THIS LABEL TO FOREIGNERS

Página de la camiseta Munitions

«ADVERTENCIA: esta camisa está clasificada como una munición y no se puede exportar desde los Estados Unidos ni mostrarse a un ciudadano extranjero», advirtia la camisa. Durante un tiempo, el gobierno de los Estados Unidos trató el cifrado fuerte como misiles tierra-aire: demasiado peligroso para caer en manos de los enemigos de Estados Unidos. La idea tenía sentido cuando el cifrado vivía en dispositivos pesados y caros, pero mucho menos cuando el Departamento de Estado intentó decirle a los investigadores de criptografía en la década de 1990 que no podían publicar su código en Internet. Pero el algoritmo de cifrado RSA, uno de los componentes básicos de la criptografía moderna, es lo suficientemente elegante como para que pueda escribirse en solo cuatro líneas densas de código Perl … lo suficientemente corto como para caber en una camiseta. Las camisas originales ahora son artículos de colección; los controles de exportación, aunque no han desaparecido por completo, se han reducido sustancialmente.

— James Grimmelmann, profesor de derecho en Cornell Tech y Cornell Law School

ALGORITMO DE PAGERANK DE GOOGLE
Año: 1996
Revolucionando la forma en que organizamos el conocimiento

import numpy as np
 
def pagerank(M, num_iterations=100, d=0.85):
    N = M.shape[1]
    v = np.random.rand(N, 1)
    v = v / np.linalg.norm(v, 1)
    iteration = 0
    while iteration &lt; num_iterations:
        iteration += 1
        v = d * np.matmul(M, v) + (1 - d) / N
    return v

Algoritmo creado por Google, esta implementación específica a través de Wikipedia

Antes del PageRank, los motores de búsqueda intentaban encontrar información en función de si nuestras palabras de consulta coincidían con las palabras del documento. Pero con PageRank, Larry Page y Sergey Brin tuvieron una idea brillante: el conocimiento era social; la búsqueda también debería serlo. Crearon un algoritmo que clasificó la importancia de una página en función de cuántas otras páginas en línea estaban vinculadas a ella. Esa visión única es responsable del enorme poder que Google disfruta hoy.

— Clive Thompson

GEOCITIES MOUSE TRAILS
Año: mediados de los 90
Podría hacer que incluso los elementos más mundanos de su sitio brillen

JSFX.FireSpark.prototype.changeColour = function()
{
  var colour="";
 
  r2= Math.random()*255;
  g2= r2;
  b2= 0;
 
  if(!(r2 | g2 | b2))
  {
    r2=255;
    g2=255;
    b2=0;
  }
 
  colour = "#" + dec2hex(r2) + dec2hex(g2) + dec2hex(b2);
  this.setBgColor(colour);
}

La invención del mouse/ratón por Douglas Englebart y Bill English a fines de la década de 1960 transformó la forma en que podíamos comunicarnos con las computadoras. Si bien el uso de un ratón era intuitivo, la tecnología de visualización en ese momento a menudo no podía mantenerse al día con los movimientos rápidos del mouse. Los desarrolladores del sistema operativo agregaron el rastro del puntero del raón: las imágenes momentáneas y sombrías que mostraban la posición anterior del cursor, lo que facilita su seguimiento y búsqueda.

A mediados de la década de 1990, GeoCities fue el primer servicio en ofrecer a los usuarios una forma fácil y gratuita de crear su propio contenido web. El editor WYSIWYGWYSIWYGAcrónimo de «What You See Is What You Get» (en español, «lo que ves es lo que obtienes»), es una frase aplicada a los procesadores de texto y otros editores de texto con formato (como los editores de HTML) que permiten escribir un documento mostrando directamente el resultado final. Wikipedia de GeoCities permitió a los creadores arrastrar y soltar contenido fácilmente y agregar fragmentos de código de personalización, incluido el código para personalizar el rastro del mouse que vieron los visitantes. En una página de GeoCities, su cursor puede dejar rastros de polvo de hadas, burbujas o pequeños murciélagos de Halloween a su paso. Estos píxeles llamativos y brillantes personificaron un momento en el que pudimos hacer nuestros “espacios web” propios. —Nikki Stevens, Ph.D. candidato, Universidad Estatal de Arizona

RSS
Año: 1999
Deje que la gente lea el New York Times, Gizmodo y Garfield Minus Garfield, todo en un solo lugar

<!--?xml version="1.0" encoding="UTF-8" ?-->
 
    This is an example of an RSS feed
 
    Mon, 06 Sep 2010 00:01:00 +0000 
    Sun, 06 Sep 2009 16:20:00 +0000
    1800
 
 
      Here is some text containing an interesting description.
 
      7bd204c6-1655-4c27-aeee-53f933c5395f
      Sun, 06 Sep 2009 16:20:00 +0000

Al llevar las noticias, blogs, blawgs, podcasts y otras formas de publicación web a un formato estándar, el código RSS (que significa Rich Site Summary o Really Simple Syndication, en español, Sindicación Realmente Simple) le permite consumir información publicada por una variedad de fuentes de una sola vez, de forma eficaz y eficiente. En su apogeo, desde aproximadamente el lanzamiento de Google Reader en 2005 hasta la trágica muerte en 2013 de Aaron Swartz, el activista por la libertad de Internet que trabajó en el desarrollo de RSS 1.0, RSS fue sinónimo de publicación en Internet descentralizada. Aunque Google Reader ya no existe, RSS se mantiene a la vanguardia de Internet utilizable, desde agregadores de noticias hasta aplicaciones de podcast.

— David S. Levine, profesor asociado, Facultad de Derecho de la Universidad de Elon.

EL ORBITADOR CLIMÁTICO PERDIDO EN MARTE
Año: 1999
Una misión frustrada por un error matemático

El 23 de septiembre de 1999, los científicos de la NASA perdieron la comunicación con el Orbitador Climático de Marte de $ 125 millones (112.812.500 €). Más tarde, una investigación determinó la causa: un contratista había escrito un programa para el orbitador utilizando unidades imperiales, como es estándar en los Estados Unidos, pero el software de la NASA utilizó el sistema métrico. Una simple falta de comunicación entre dos piezas de código había enviado al orbitador a volar a lugares desconocidos.

Es fácil descartar este error métrico-imperial como una casualidad, pero señala cuán débil es el mundo del software interconectado hoy en día. Todas las tecnologías conectadas (teléfonos, naves espaciales, exprimidores de robots, etc.) dependen de interfaces para definir cómo comunicarse con los demás. Las discrepancias más pequeñas pueden conducir al caos.
─ Charles Duan

EL CÓDIGO PARA ENGANCHAR UN MISIL HELLFIRE A UN DRON
Año: entre 2000–2001
Marcó el comienzo de la guerra de aviones no tripulados

La aplicación de armas de la versión inicial del dron Predator fue un momento emblemático no solo en la historia de la tecnología, sino también en la historia militar y política. Los sistemas no tripulados ahora proliferan en el campo de batalla, remodelando la forma en que los soldados luchan e incluso de dónde. El armamento del Predator también lanzó a los Estados Unidos a una era de «guerras de drones». Y, dados todos los problemas planteados por la robótica cada vez más autónoma y armada, solo estamos al principio. Ese programa simple puede haber abierto cuestiones legales, éticas y, sí, tal vez incluso preguntas existenciales.
— P.W. Cantante, autor de Wired for War: The Robotics Revolution and Conflict in the 21st Century

EL SISTEMA DE ORIENTACIÓN DE ROOMBA
Año: 2002
Estableció una nueva forma para que la tecnología (y los gatos) se muevan en el mundo físico

(define-behavior (bounce
:start-when (or (bump?)
bounce-trigger? )
:abort-when (bump-edge?)
:onetime? t
)
)

iRomba

Nunca olvides tu primera Roomba: el mío fue hace casi 17 años, en casa de un amigo. Me senté en un sofá riendo mientras daba vueltas alrededor de la habitación en ataques y arranques. Era el comienzo de una revolución robótica, una muy tonta y muy seria. (Es realmente sorprendente que un robot que comparte ADN con máquinas de barrido de bombas esté aspirando millones de hogares.) Su éxito también ha sido difícil de replicar desde entonces. El Roomba demostró que, si bien nuestra atención se inclina hacia el hardware, como los perros raros con las patas abiertas y las puertas abiertas, el software podría ser aún más importante para la adopción generalizada de un producto. El iRobot llamado Asimovian no creó el primer vacío robótico, pero el Roomba se convirtió en un nicho imprescindible no por lo bien que huele, sino por lo bien que navega por una habitación. Como pueden atestiguar miles de vídeos de gatos, en la era de la informática moderna, poco ha sido tan visceralmente satisfactorio (y desarmador) como ver un Roomba chocar contra una pata de una mesa, rotar y continuar.
— Lowen Liu, Slate

PROGRAMACIÓN EQUITATIVA PROPORCIONAL PARA REDES INALÁMBRICAS
Año: sobre el 2003
La solución que hace posible las redes de telefonía celular

[~, b_user] = max(drc(i, :)/_avg_thruput(i, :));
avg_thruput(i+1, :) = (i/(i+1))*avg_thruput(i, :);
avg_thruput(i+1, b_user) = (i/(i+1))*avg_thruput(i, b_user)+drc(i, b_user)/(i+1);

Sistema de receptor múltiple dirigido por transmisor que utiliza la diversidad de rutas para maximizar de manera equitativa el rendimiento, Patente de Estados Unidos N° 6449490, 10 de septiembre de 2002

En cualquier momento dado en un área determinada, a menudo hay muchos más teléfonos celulares que torres de estaciones base. Sin mediación, todas estas transmisiones interferirían entre sí y evitarían que la información se reciba de manera confiable. Por lo tanto, las torres tienen que resolver un problema de priorización: asegurarse de que todos los usuarios puedan completar sus llamadas, teniendo en cuenta el hecho de que los usuarios en lugares más ruidosos necesitan más recursos para recibir la misma calidad de servicio. ¿La solución? Un compromiso entre las necesidades de los usuarios individuales y el rendimiento general de toda la red. La programación equitativa proporcional garantiza que todos los usuarios tengan al menos un nivel mínimo de servicio al tiempo que maximiza el rendimiento total de la red. Esto se hace dando menor prioridad a los usuarios que se espera que requieran más recursos. Solo tres líneas de código que hacen que todas las redes celulares 3G y 4G de todo el mundo funcionen.

— Lav Varshney

BITCOIN
Año: 2008
El código que inspiró confianza en un tipo de moneda que no existiría sin él

double AttackerSuccessProbability(double q, int z)
{
double p = 1.0 - q;
double lambda = z * (q / p);
double sum = 1.0;
int i, k;
for (k = 0; k &lt;= z; k++)
{
double poisson = exp(-lambda);
for (i = 1; i &lt;= k; i++)
poisson *= lambda / i;
sum -= poisson * (1 - pow(q / p, z - k));
}
return sum;
}

Satoshi Nakomoto

Ya sea que sea un evangelista de Bitcoin, un escéptico o que no esté totalmente seguro de lo que es, probablemente sepa que es un gran problema. El propio Bitcoin ha acumulado cientos de miles de millones de dólares en inversión directa, pero quizás lo más importante es que el principio tecnológico subyacente, la cadena de bloques (blockchain), se ha investigado para aplicaciones aparentemente interminables, desde asegurar elecciones democráticas hasta poner fin a encuentros sexuales no consensuales.

Todo comenzó en 2008, cuando el seudónimo Satoshi NakamotoSatoshi NakamotoSatoshi NakamotoWikipedia publicó un libro blanco anunciando el lanzamiento de Bitcoin. Incluía estas líneas de código, que calculan la probabilidad infinitamente pequeña de que un atacante pueda hacerse cargo de la cadena de bloques de Bitcoin. Las matemáticas convencieron al mundo de que, sin embargo, se podía confiar en un sistema hecho de personas no confiables, allanando el camino para la creación de al menos otras 2777 criptomonedas.

— Elena Botella

GUSANO CONFICKER
Año: octubre de 2008 a 2009
Convierte las computadoras infectadas en un ejército de bots maliciosos, mientras evita a otros

; BOOL __cdecl HasUkrainianLocale()
                push    ebx
                mov     ebx, ds:GetKeyboardLayoutList
                push    ebp
                push    esi
                xor     ebp, ebp
                push    ebp
                push    ebp
                call    ebx
                mov     esi, eax
                cmp     esi, ebp
                jz      short loc_37680A

Los investigadores de seguridad Tillmann Werner y Felix Leder escribieron este código y lo probaron para determinar la equivalencia funcional en sus esfuerzos por comprender y combatir el gusano Conficker.

Hace una década, hasta 15 millones de computadoras estaban infectadas con Conficker, un virus que explota las debilidades en los sistemas operativos Windows. Se temía al virus, pero también se lo veneraba por su sofisticación: alistó a cada computadora como parte de un ejército gigante de robots, esperando órdenes, y evitó que las computadoras infectadas abrieran programas de seguridad o descargaran parches que pudieran eliminar el virus. Su primera versión también tenía una peculiaridad interesante y potencialmente reveladora: se autodestruía dentro de cualquier sistema que utilizara un teclado o dirección de Ucrania. Años más tarde, las autoridades e investigadores que realizaron ingeniería inversa del virus concluyeron que varios creadores de Conficker había sido realizado por ucranianos y habían diseñado el virus para evitar infringir las leyes de su propio país. Afortunadamente, los piratas informáticos nunca desplegaron su ejército de «botnets por enfermedad» y, a partir de 2018, se estima que 350 000 las computadoras que aún estaban infectadas con el virus, un recordatorio de cuán fácilmente los programadores expertos podrían desatar ataques internacionales, causando estragos selectivamente en los usuarios.

— Jane C. Hu

EL BOTÓN «ME GUSTA»
Año: 2009
Catalizó la economía de la vigilancia

{"__typename":"PageLikeAction","action_type":"LIKE","label":{"text":"Like"}

Sitio de Facebook.com en septiembre de 2019

Facebook vendió el botón «me gusta» como una forma de mostrarle al mundo que nos gustaban Los Simpson o las patatas fritas. Pero en realidad, aprovechó nuestros sesgos cognitivos y el poder del diseño para incitarnos a compartir aún más información. Nos siguió a través de Internet, gracias al píxel de seguimiento que Sara Wachter-Boettcher describió anteriormente, recolectando datos sobre nuestros hábitos de navegación. Facebook tomó esa información y vendió su algoritmo de orientación de comportamiento a los anunciantes. Si una compañía de productos al aire libre quería anunciar, Facebook sabía que debía apuntar a aquellos a quienes anteriormente les habían «gustado» las publicaciones sobre senderismo, visitaron sitios web de campamentos y tenían amigos que amaban el aire libre. Y cuando a esos usuarios les gustó la publicidad de una empresa, esa información retroalimenta el algoritmo de orientación. Y así continuó el ciclo de vigilancia y manipulación comercial. Todo por un pequeño pulgar azul hacia arriba.

— Ari Ezra Waldman, profesora, Facultad de Derecho de Nueva York.

SEGURIDAD DE TRANSPORTE ESTRICTO DE HTTP
Año: durante 2009
Protege tus datos por defecto a través de canales seguros a los sitios

Strict-Transport-Security: max-age=31536000; includeSubDomains

Guía para desarrolladores de Mozilla

Cuando envía información a través de un HTTP simple a un sitio web, es permeable: alguien podría interceptarlo y espiar su tarjeta de crédito, la información de su salud y el nombre de la mascota de su pareja. HTTPS encripta su tráfico de miradas indiscretas, pero durante mucho tiempo, el uso del protocolo más avanzado fue opcional. Ingrese HTTP Strict Transport Security, un desarrollo que garantizó que todo el tráfico web enviado hacia y desde los sitios esté encriptado desde el principio. Si intenta ir a http://google.com, automáticamente lo dirigirá a https://google.com. Eso es HSTS en acción.

HSTS todavía no está muy extendido: solo un 11.1 por ciento de los sitios web lo usan. Pero llegó un momento importante en la primavera de 2015, cuando el gobierno federal y los socios de la industria implementaron HSTS para 19 dominios gubernamentales, incluidos Whitehouse.gov, AIDS.gov y donotcall.gov. Poco después, se ordenó a todas las agencias federales que adoptaran el estándar.

— Rusty D. Pickens, ex director interino de nuevos medios para la Casa Blanca de Obama

HEARTBLEED
Año: Escrito 2012, descubierto 2014
Una de las vulnerabilidades de seguridad más generalizadas y perniciosas de la historia informática

buffer = OPENSSL_malloc(1 + 2 + payload + padding);
bp = buffer;
 
/* Enter response type, length and copy payload */
*bp++ = TLS1_HB_RESPONSE;
s2n(payload, bp);
memcpy(bp, pl, payload);
bp += payload;
/* Random padding */
RAND_pseudo_bytes(bp, padding);

Naked Security

En 2014, los investigadores de seguridad descubrieron una vulnerabilidad en OpenSSL, una biblioteca de código abierto muy popular utilizada por aproximadamente dos tercios de los sitios web, incluidos DropBox, Twitter, Yahoo y GitHub, para la comunicación en línea entre dos computadoras. Heartbleed podría haber permitido a los perpetradores robar información secreta no cifrada, incluidas las credenciales y las claves de cifrado, a través de una vulnerabilidad de sobrelectura del búfer que afectó a millones de dispositivos. Llamó la atención sobre los riesgos asociados con depender del software de código abierto para funciones de seguridad cruciales, así como los desafíos de identificar vulnerabilidades en el código que parece estar funcionando perfectamente durante años y años. En una nota más positiva, el descubrimiento de Heartbleed también desencadenó una respuesta global rápida y en gran medida efectiva, incluida la publicidad coordinada mundial y los esfuerzos para remediar el problema, que fueron mucho más allá de muchas campañas anteriores para vulnerabilidades anteriores.

─ Josephine Wolff, profesora asistente, Universidad de Tufts

BOEING 737 MAX
Año: Lanzado 2017
Un error de software, agravado por la avaricia corporativa, provocó cientos de muertes y la puesta a tierra de una flota de aviones.

En octubre de 2018, Lion Air Flight 610 cayó al mar poco después del despegue, en un accidente aparentemente extraño. Boeing aseguró al público que los aviones eran seguros y dijo que todo lo que se necesitaba era más capacitación de pilotos y una «actualización de software». Pero solo cuatro meses después, los pilotos de un vuelo de Ethiopian Airlines se esforzaron por levantar el morro unas 20 veces mientras el sistema automatizado del avión intentaba derribarlo. Minutos después del despegue, todos a bordo estaban muertos. En respuesta, las autoridades de aviación de todo el mundo pusieron en tierra los aviones. Las investigaciones revelaron que los accidentes fueron causados por el diseño del 737 Max, particularmente el software poco conocido y mal entendido que podría forzar al avión a caer en picado repetidamente.
— Mar Hicks, historiador de la tecnología y autor de Desigualdad programada.


Corrección, 15 de octubre de 2019: este artículo originalmente contenía dos caracteres adicionales en el código de «¡Hola, mundo!».

Corrección, 17 de octubre de 2019: un crédito en este artículo originalmente identificó erróneamente el Centro Nacional de Aplicaciones de Supercomputación como el Centro Nacional de Aplicaciones de Supervisión.

Del original The Lines of Code That Changed Everything

ÉCHAME UN CABLE
EN PATREON

ESTA ECHO PRIMO