Recientemente, Eugene kaspersky escribió en su blog un post titulado ‘Gran regreso de los programadores de malware de la vieja escuela’. Tengo edad suficiente para recordarlos a ellos y a su brillante trabajo; no necesariamente me refiero a creadores de malware, sino programadores, codificadores y ensambladores. Son casi como los Jedi y los Sith, los cuales eran considerados por todos los héroes de la saga Skywalker, mucho más poderosos y hábiles en el uso de los Lightsabers (no es broma, pregúntenle a Yoda). Y pensé… rayos… vivimos tres personas de las que presenciamos el verdadero poder de estas personas (Kaspersky, Bill Gates y yo).
En verdad, es realmente difícil entender lo que un hacker de la vieja escuela es capaz de hacer, así que decidí mostrarles un poco de lo que Eugene hablaba, para que puedan decidir si, como pienso, son noticias verdaderamente aterradoras.
Entrenamiento extremo para calculadoras estúpidas.
En 1992, las computadoras eran básicamente calculadoras inteligentes con pantallas grandes (no es broma, chicos). Sin embargo, existían muchos grupos de entusiastas que estaban más que felices de enfrentar retos con el software existente: algunos programadores se las arreglaron para crear un código que utilizara cada byte de memoria, cada función del procesador, registrar cada comando del SO y, lo más importante, el 100% de poder del hardware, exprimiendo hasta la última gota para obtener resultados. Tengo que señalar que para lograr esos resultados, uno debía ser muy creativo, beber mucho café (o fumar mucha mota, siendo honestos) y tener un nivel de IQ de miedo. El movimiento comenzó alrededor de 1988, básicamente, más o menos al mismo tiempo que la primera versión de MS-DOS. No tenía nombre oficial, pero de acuerdo con las leyes de la evolución, tarde o temprano los involucrados tendrían que competir. Y de esta manera nació The Assembly en 1992.
Future Crew vuelve del futuro.
En 1992, un grupo de programadores llamado Future Crew, junto con grupos amigos de programadores en Complex y Amiga, organizaron un evento llamado The Assembly, para compartir los resultados de su trabajo con Assembler y competir por el título de Mejor Programador del año. Existían muchas disciplinas, pero las dos más interesantes eran los demos de plataforma (PC, Amiga, C64) y PC de 64k. La primera tenía como objetivo demostrar las más elegantes soluciones y habilidades de programación del hardware con código optimizado y minimalista. La segunda era más complicada: los programadores estaban limitados a 64kb -su código compilado (o sea, archivos read2work)- y no podía pesar más de 64kilobytes. Por esto, esta disciplina se volvió un concurso de elegancia en programación.
“Un demo de codificación es básicamente una serie de eventos programados con secuencias de comandos para demostrar las capacidades de hardware y / o las mejores soluciones de software para una tarea específica, como cálculos físicos complejos “.
En 1992, los Future Crew ganaron la competición con su demo ‘Unreal’. Aquí lo pueden ver, (cabe destacar que es 1992 y aún no existia Windows). Este demo se llamó ‘Unreal’ (irreal) por una razón: nadie había logrado algo así antes.
Ellos fueron los primeros enmostrar un ambiente de trabajo en 3D, capas gráficas y complejos cálculos físicos y de iluminación. Y lo más impresionante, todo el
código compilado pesaba 1mb incluyendo la música (y en aquel momento no existía la compresión en mp3). La única manera de lograr estos resultados, era dominando Assembler que, en mi opinión, es uno de los lenguajes de programación más complejos. Para que tengan una idea de lo que es Assembler, esto es lo que los chicos de Future Crew me dijeron hace ya muchos años:
Aprender a codificar demos es un proceso largo y difícil, que puede llevar años. Una buena manera de comenzar es con un lenguaje de alto nivel como Pascal o C y luego experimentar con Assembler. Toma mucho tiempo y experimentación para mejorar y no existen los atajos. Lo principal es tratar de entender qué es lo que haces para tratar de cambiar el programa y ver qué puedes obtener, y ganar sabiduría para saber cuál es la mejor manera de hacer las cosas. Aprender a programar bien requiere mucha paciencia, mucho entusiasmo y mucho tiempo. No es nada fácil.
Básicamente aquellos que estaban comprometidos con la competición, se volvieron la máxima fuente de inspiración para todos los desarrolladores de software. No digo que la gente se robara las ideas, sino que todos estaban adoptando su visión creativa. Muchos productos que tenemos hoy en día, TODOS LOS VIDEOJUEGOS, Gráficos de Adobe y productos de video, GPS, Google Earth… todos esos productos que valen billones de dólares, se insipiraron en Assembly en algún punto. Por cierto, filmar y tomar fotos estaban estrictamente prohibido dentro del saloón de la competición , y quienes violaran esta regla serían expulsados para siempre.
1993 – El año de Second Reality y Eclipse.
El evento The Assembly resultó tener tal éxito, que el siguiente año el número de asistentes y demos presentados se duplicó (la tendencia fue bastante constante, ya que desde 1999 The Assembly se realiza en el campo de fútbol más grande en Helsinky, que alberga más o menos a 5.000 personas de todo el mundo).
En 1993, Future Crew presentó algo fantástico, algo que elevó ó el estándar de calidad para concursos venideros y cambió el mundo de la programación para siempre: el demo Second Reality:
Es esencial entender que este demo fue creado ANTES de que Intel presentara sus procesadores Pentium: Intel los presentó el 22 de marzo y las primeras PCs con Pentium comenzaron a enviarse antes de 1994. The Assembly generalmente se celebra en verano, lo que significa que Future Crew lo presentó al menos medio año antes de que comenzara a comercializarse Pentium. Esto significa que todas estas gráficas fantásticas y sonidos estaban disponibles en CPUs x486 con Sound Blasters primitivos y SIN tarjetas de video. Este demo enloqueció al jurado y a la comunidad de programadores: demostró los resultados que se podrían logradr en niveles pro de Assembler con un acercamiento minimalista (el código complilado de Second Reality era de 1.5mb). Ese año, los Future Crew se hicieron famosos.
Este es un video Behind the Scenes de Future Crew cuando estaban trabajando en Second Reality.
Otra victoria simbólica de 1993 es el demo Eclipse del grupo EMF. Este código fue el número 1 en la nominación de 64kb máximo:
En 1994, el demo Verses, del grupo EMF, ganó el primer lugar.
Básicamente, ellos mostraron al mundo que se pueden hacer cálculos de física de líquidos de manera realista, y cualquier transformación de objetos 3D usando Pentium es cosa fácil.
Y este ganador de 64kb, Airframe, del grupo Prime, es la madre y el padre de todos los simuladores modernos de aviación en 3D:
Para que se hagan una idea de lo rápido que evolucionó el código, aquí hay una lista de los ganadores de 1995 a 2012.
Ganador de The Assembly de 1995: Stars, del grupo NoooN.
Ganador de The Assembly de 1996: Machines of Madness, del grupo Dubius.
Ganador de The Assembly de 1997: Boost, del grupo Doomsday.
Ganador de The Assembly de 1998: Gateways, del grupo Trauma.
Por cierto, estos son los ancestros de la realización visual de World of Warcraft. Aquí nacieron los visuales en 3D para los MMORPG.
En 1999, la tecnología 3DFX cambió los gráficos para siempre. El demo de MatureFunk llamado Virhe volvió locos a todos los asistentes.
Assembly revisado.
En el 2000, las reglas cambiaron un poco: en lugar de competir en tres categorías, Amiga, PC y C64, se crearon categorías como Demo Combinado, Demo Oldschool y Límite de 64kb. La competición en 64kb quedó obsoleta en 2010, pero al final de este post podrán ver algunos ejemplos fantásticos de lo que un programador ensamblador nivel pro puede lograr con 64kb.
Esta es la lista de ganadores en la categoría Demo Combinado, que es la más brillante en términos de dominio de Assembler:
En el 2000, el ganador del primer lugar fue Spot, del grupo Exceed.
No se pierdan los efectos de iluminación, son increíbles (y no olviden que son tecnologías de hace 13 años).
En el 2001, el ganador fue Lapsus, del grupo MatureFunk.
En el 2002, el ganador fue Liquid…Wen?, del grupo Haujobb.
Tengo que destacar que todos los gráficos, incuyendo las caras y personajes en todos los demos de Assembly, están dibujados usando solamente el código, no son archivos de imágenes insertados en el demo.
En el 2003, el ganador fue Legomanía, de Doomsday. ¡Saluden a todos los juegos de las consolas 3D! Además, estoy seguro de que en este momento es cuando nació la visión del Nintendo Wii:
En el 2004, el ganador fue Obsoleet, del Unreal Voodoo.
En el 2005, el ganador fue Lconoclast, del grupo ASD.
En el 2006, el demo Starstuck, de The Black Lotus impresionó a todos por el nivel de sofisticación de la programación gráfica. Definitivamente elevaron bastante todos los estándares:
El ganador de 2007 fue Life Force, de ASD. Otro fantástico trabajo de Assembler.
El 2008 fue el año de Within Epsilon, de Pyrotech.
El ganador del 2009 es uno de mis favoritos: Frameranger, de los grupos Fairlight, CNCD y Orange.
En el 2010 “Happiness is right around the bend” ,de ASD nos enseñó un tanque fantástico 🙂
El ganador del 2011 fue Spin, de ASD.
El 2012 fue fenomenal: Spacecut de Carillon y Cyberiad, de CNCD.
Los mejores ejemplos de la categoría de 64kb máximo
Para que se hagan una idea de lo que un programador profesional puede hacer con 64kb, este es el mejor, el del 2005: Che Guevara, der Fairlight.
Y lo repito: esto es código ensamblador de 64kb. Ni un byte de más.
Pero tres años después, en 2008, el mismo grupo demostró un inmenso progreso en tecnología y se las arregló para hacer un demo como este de 64kb, ganando el primer premio con Panic Room.
Pero el mejor demo de 64kb de la historia fue “X marks the spot”, de Portal Process , ganador en 2010.:
Ahora bien, déjenme presentarles el siguiente panorama… todos estos demos, especialmente los limitados a 64kb, demuestran el trabajo y talento de los programadores de la vieja escuela y lo que pueden lograr cuando se lo proponen, pero, y lo que es más importante, cuando dominan completamente Assembler, algo que no es muy común, ya que casi todos los productos son creados con lenguajes de programación de alto nivel, como Visual C y Object C.
Imagina sólo por un segundo que un programador de estos o un grupo como Future Crew decide mandar a paseo todo el proceso creativo, 3D, música y cálculos físicos y enfocarse en un solo objetivo: crear un pequeño código que robe tu información financiera o ayude a recalibrar un Reactor Nuclear. ¿Qué te parece ?, ¿Lo lograrían? ¿Cuánto tiempo más vas a creer que 64kb es más son suficientes? ¿Podrían encontrar una manera de romper los sistemas integrados de Seguridad de Windows o de Apple? ¿Son móviles, flexibles? ¿Tienen el financiamiento para que esto sea real tras hacer eventos gratuitos para 5.000 asistentes durante 20 años?
No les quiero decir la respuesta. Tienen que decidir por sí mismos. Pero cuando oigo a alguien decir: “Mi PC no necesita protección”, no puedo sino recordar el Second Reality y comenzar a rezar.
Gracias a Dios que los chicos que eran Future Crew están ahora muy ocupados 😀 Si tú eres el mejor en programar demos, ¿por qué no hacerlo en tu negocio? La próxima vez que corras una prueba 3DMark en tu PC piensa en Unreal, Second Reality y Future Crew. Future Crew, como equipo, no presentó nada más después de Scream Tracker 3 (en diciembre de 1994). Nunca se separaron de manera oficial, pero sus miembros se dispersaron en la segunda mitad de la década de los 90 . Compañías como Futuremark (3DMark), Remedy (Death Rally, Max Payne, Alan Wake), Bugbear Entertainment (FlatOut, Glimmerati, Rally Trophy), Bitboys (compañía de hardware) y Recoil Games (Rochard) comenzaron con miembros de Future Crew.
Quiero dar las gracias a todos ellos: cambiaron el mundo para siempre y nos demostraron que todo es posible si te centras en ello. Incluyendo Kaspersky Internet Security.
Gracias por su inspiración, chicos. Y en el fondo de mi corazón espero que ninguno de los programadores que fueron sido parte de The Assembly usen nunca sus habilidades con propósitos malignos.