¿Cuáles son los mejores ejemplos de errores de software que se convirtieron en características (también conocidos como errores)?

Vuelve al juego en línea de Diablo II LOD (antes de 2005), pero hubo esencialmente un error que permitió a los jugadores en línea adquirir demasiados Stones of Jordan (SoJ). Para animar a la gente a venderlos en grandes cantidades, los ingenieros de Battle.net crearon el monstruo de Uber Diablo que se generaría en los servidores si se vendieran suficientes SoJ a los proveedores (¿por qué los vendería?). Al matar a Uber Diablo se obtiene un hechizo Annihilus.

Este “error” se convirtió en toda una subcultura en el juego. Hubo (son?) Servidores de chat IRC dedicados a seguir los recuentos de venta de SoJ en los servidores de Battle.net. Todavía hay un programa llamado Kiss Clone Hunter que ayuda a los servidores que probablemente engendran a Uber Diablo (también conocido como Diablo Clone). Además, irónicamente, muchas personas comenzaron a clonar SoJs para convertirlos en amuletos Annihilus, por lo que la solución al error de una manera retroactiva. Pero la popularidad del juego creció en parte de la caza de clones.
Entonces, es un error que tenía un “parche” que creó otra dimensión del juego. Creo que muchos de los juegos en línea tienen este tipo de fenómeno, ya que es difícil saber cómo reaccionarán las comunidades y qué hará que un juego sea más popular.

Mi favorito no es sobre un error, sino sobre una característica molesta del hardware que se había perpetuado a propósito por el software.
La Mac original tenía una unidad de disquete que funcionaba sin ruido (como era habitual en las computadoras personales anteriores). Por lo tanto, el firmware se programó para imitar el ruido a través del altavoz, de modo que el usuario supiera que el disco tenía acceso y que la computadora no estaba inactiva. (No muy similar a la historia de “relámpago verde” más arriba.)


Estoy agregando a la respuesta del Usuario de Pac-Man’s Map 256 Glitch . El arcade original Pac-Man realizó un seguimiento de su nivel a través de un entero de 8 bits (máximo 255). Una falla en el juego da como resultado un desbordamiento a 256 después de completar el nivel 255, lo que resulta en un nivel confuso e inmejorable.

Adelantándonos al día de hoy, Bandai Namco elige a Hipster Whale , creador del exitoso Crossy Road , para construir un juego completo basado en este problema . Saldrá a finales de este verano (2015) para iOS como un título gratuito para jugar.

¿Sabes qué más es como convertir un error en una característica? Asesorar a un hacker autodidacta en un desarrollador profesional, ¡eso es lo que hace! En Bloc , contratamos a desarrolladores como para ayudar a los estudiantes a aprender sobre el desarrollo de Rails, Frontend, iOS y Android.

No sé si realmente puedes llamarlo un error, pero JSONP fue efectivamente una vulnerabilidad del navegador que se convirtió en una técnica estandarizada.

La política del mismo origen para los lenguajes de programación del lado del cliente del navegador se había implementado desde LiveScript en Netscape Navigator 2, y por una buena razón. No querías que las personas que ejecutan otros sitios web ejecuten el JavaScript arbitrario que querían en el tuyo.

A medida que Internet crecía y el intercambio de información de recursos entre sitios web se hacía más importante, esto se convertía en una limitación más que en una medida de seguridad. Los desarrolladores comenzaron a diseñar técnicas que superarían esta limitación, y surgió JSONP.

La etiqueta en HTML no tenía que respetar la política del mismo origen, y los desarrolladores apuntaron a eso como una forma de superar el problema y usaron técnicas DOM para agregar nodos con datos remotos a la página. Sin embargo, no se podría agregar nada entre esas etiquetas de secuencia de comandos, ya que solo se coloca un objeto JavaScript normal de esta manera:

 { "id": "123", "name": "Clarence" } 

Terminaría dando como resultado un error de sintaxis o no se asignaría a ninguna variable, dependiendo del navegador. En cambio, la solución sería la siguiente:

 parseUserData({ "id": "123", "name": "Clarence" }); 

Al finalizar los datos en una función que ya existía en la página , el intérprete de JavaScript básicamente llamaría a esa función con los datos remotos tan pronto como la etiqueta contenía se colocara en el DOM.

Esto se abrió a una amplia variedad de explotaciones de scripts entre sitios, pero como en teoría funcionaría solo si la persona que controlaba el servidor que devolvía los datos y la persona que controlaba el sitio web con los scripts del lado del cliente confiaban entre sí, todos estaban satisfechos con el resultado.

En 2005, JSONP se convirtió en una técnica estandarizada, y hoy en día, prácticamente todos los sitios web grandes (Facebook, Twitter, etc.) que brindan un servicio de datos también lo admiten. Ahora hay técnicas más nuevas que no requieren este truco, como CORS, pero JSONP sigue siendo la mejor manera de usar navegadores más antiguos que no lo admiten.

Aún así, los desarrolladores web que usan JSONP están colocando efectivamente una gran cantidad de fe en estos proveedores de recursos para no ejecutar JavaScript arbitrario en sus sitios web, pero es una cuestión de confianza.

JSONP es un hack, pero ha sido un hack que ha funcionado bien.

En la serie Civilization de Sid Meier, todos los líderes controlados por computadora tienen una cierta personalidad asociada a ellos, con variables para cosas como el énfasis en la economía, la cooperación, la tendencia de apuñalamiento, etc. En la Civilization original de Sid Meier , Gandhi se refería a los desarrolladores para ser El líder más pacífico. Gandhi fue, de hecho, el único líder cuya variable de agresión se estableció en 0.

Esto no habría sido un problema, excepto que para reflejar los desarrollos históricos del mundo real, el equipo de desarrollo decidió que una vez que una civilización adoptara la democracia como su gobierno, el valor de su variable de agresión debería disminuir 1. Para todos los demás civilización, esto funcionó bien, pero en el caso de Gandhi, la agresión a -1 dio como resultado un desbordamiento variable, lo que hizo que se restableciera al valor más alto posible.

Adoptar la democracia suele coincidir con el avance hacia la Era Moderna. Eso, a su vez, suele coincidir con el logro de capacidades nucleares, por lo que esto sucedió mucho:

Mohandas K. Gandhi, líder en la resistencia no violenta y amante de la paz, se convierte en el primer líder que lo amenaza con la aniquilación nuclear.

Los desarrolladores encontraron este error tan divertido que lo codificaron deliberadamente en los siguientes cuatro juegos.


En el Space Invaders original, el nivel se hizo más rápido cuando mataste a más alienígenas. En realidad, esto no fue por diseño, sino un producto secundario de la representación de gráficos que está limitada por el procesador. A medida que se mostraban menos elementos en la pantalla, el renderizado se hacía más rápido.
http://en.wikipedia.org/wiki/Spa

Gmail tiene un retraso de aproximadamente 5 segundos al procesar un mensaje de correo electrónico. Los desarrolladores de Gmail convirtieron este problema en una característica al implementar una opción de deshacer. Como los correos electrónicos ya tenían un retraso, Gmail simplemente permite a los usuarios detener los correos electrónicos antes de que se envíen de todos modos.

Por lo tanto, la función de deshacer aprovechó lo que podría considerarse un error (retraso) en el diseño de Gmail.

Fuente:
http: //www.searchenginejournal.c

Según Rob Pike, el comportamiento de UNIX de ocultar archivos cuyos nombres comienzan con un punto fue realmente un error.

Una lección de atajos.

Hace mucho tiempo, como el diseño del sistema de archivos Unix se estaba elaborando, las entradas. Y … apareció, para facilitar la navegación. No estoy seguro, pero creo que … entró durante la reescritura de la Versión 2, cuando el sistema de archivos se convirtió en jerárquico (tenía una estructura muy diferente desde el principio). Sin embargo, cuando uno escribió ls, aparecieron estos archivos, por lo que Ken o Dennis agregaron una prueba simple al programa. Estaba en ensamblador entonces, pero el código en cuestión era equivalente a algo como esto:
si (nombre [0] == ‘.’) continúa;
Esta declaración fue un poco más corta de lo que debería haber sido, que es
if (strcmp (nombre, “.”) == 0 || strcmp (nombre, “..”) == 0) continuar;
Pero oye, fue fácil.

Dos cosas resultaron.

Primero, se sentó un mal precedente. Muchos otros programadores perezosos introdujeron errores al hacer la misma simplificación. Los archivos reales que comienzan con puntos suelen omitirse cuando deben contarse.

En segundo lugar, y mucho peor, se creó la idea de un archivo “oculto” o “punto”. Como consecuencia, los programadores más perezosos comenzaron a colocar archivos en el directorio principal de todos. No tengo todas esas cosas instaladas en la máquina que estoy usando para escribir esto, pero mi directorio de inicio tiene aproximadamente cien archivos de puntos y ni siquiera sé qué es la mayoría de ellos o si todavía son necesarios. . Cada evaluación de nombre de archivo que pasa por mi directorio de inicio se ve ralentizada por este lodo acumulado.

Estoy bastante seguro de que el concepto de un archivo oculto fue una consecuencia involuntaria. Ciertamente fue un error.

¿Cuántos errores y ciclos de CPU desperdiciados e instancias de frustración humana (sin mencionar el mal diseño) han resultado de ese pequeño atajo hace unos 40 años?

Tenlo en cuenta la próxima vez que quieras cortar una esquina en tu código.

(Para aquellos que objetan que los archivos de puntos tienen un propósito, no lo cuestiono, pero contrarrestan que son los archivos los que tienen el propósito, no la convención de sus nombres. Podrían estar en $ HOME / cfg o $ HOME / lib, que es lo que hicimos en Plan 9, que no tenía archivos de puntos. Las lecciones se pueden aprender.)

https://plus.google.com/10196072…

Rascarse

Scratching es una técnica que los DJs y los turntablistas utilizan para producir un sonido muy distintivo común al Hip Hop y, más recientemente, a otros géneros más contemporáneos. Originada en la escena Hip Hop de mediados de los 70 en Nueva York, fue producida inicialmente moviendo un disco de vinilo de un lado a otro en un tocadiscos . Giradiscos, fonógrafos y gramófonos son, de hecho, lo mismo.

Cuando una mano está realizando un rasguño básico, la otra mano está rozando el registro en un movimiento como un lanzamiento. El registro se roza (o se desliza) en el medio del golpe del rasguño del bebé, y tiene el efecto de detener momentáneamente el registro, colocando el silencio entre dos notas.

Habilidades de DJ: la guía esencial para mezclar y rascarse por Stephen Webber

Grand Wizzard Theodore, un aprendiz de Grandmaster Flash y acreditado como el pionero de rascarse durante los años 80 en Nueva York, lo describe como

“nada más que la señal de retroceso que escuchas en tu oído antes de empujarlo [el sonido grabado] a la multitud”.

(Toop, 1991)

Grandmaster Flash rascándose en los 80s

Se dice que Grandmaster Flash ha perfeccionado las técnicas para rascarse, produciendo algunos de los trabajos fundamentales en él, incluyendo Las aventuras de Grandmaster Flash sobre las ruedas del acero [1981] . Se puede escuchar aquí:


Porque es un bicho

El rascado es esencialmente un movimiento hacia adelante y hacia atrás del disco en el giratorio para producir un efecto de sonido de “rayado” por el deslizamiento del cloruro de polivinilo del disco y la aguja de acero . Este efecto fue claramente no intencional; El tocadiscos fue originalmente construido puramente para reproducir música.

¿Por qué es una característica

Desde sus raíces, el scratching se ha convertido en un elemento musical ampliamente utilizado en Hip Hop, Disk Jockeying y , más recientemente, se ha trasladado a una amplia gama de géneros como Pop , Nu Metal y Alternative Rock. Desde entonces, el efecto de sonido original se ha replicado utilizando giradiscos, mezcladores, etc., modernos. Aquí hay una pequeña variedad de algunas de mis canciones favoritas que presenta el uso de scratching:

  • RUN-DMC – Camina por este camino
  • Ratón modesto – corazón cocina cerebro
  • Deftones – MX – w / pista oculta “Damone”
  • Linkin Park – Kyur4 Th Ich
  • Linkin Park – Sesión
  • Linkin Park – En el fin
  • Linkin Park – Un paso más cerca
  • [más Linkin Park]

En mi opinión, el rascado en sí puede no ser muy usado, pero ha sido la inspiración detrás de muchos sonidos y ritmos similares y una amplia variedad de instrumentos. Sin embargo, no pude demostrarlo.

Esta línea del libro de Stephen Webber, DJ Skills, resume mejor el error para presentar la transición de rascarse.

Una vez que esté raspando, ha cruzado la línea de usar el tocadiscos como dispositivo de reproducción, a usarlo como instrumento musical.

Nota: aunque esto no es realmente un error de software, creo que es relevante en el contexto.

GMail tenía un error que ignoraba los puntos en la dirección de correo electrónico al recibir correos / crear una cuenta.

Y eso se convirtió en una característica.

Lo que esto significa es que, de repente, todos tienen infinitas direcciones de correo electrónico. Si mi ID de GMail es “abcd”, tengo direcciones de correo electrónico como ” [correo electrónico protegido] “, ” [correo electrónico protegido] “, “a … .b … .c … [correo electrónico protegido] ” etc.
Interesante ¿no es así?

NB: Llamo a un problema original un error porque nunca se documentó hasta que se descubrió en público.

Simulador de cabra
Goat Simulator es un juego de perspectiva abierto en tercera persona (piense en GTA) en el que el jugador controla una cabra. La característica del juego es sus errores. Incluso lanzaron apropiadamente el juego el 1 de abril.

De la wikipedia
“El juego, inicialmente desarrollado como un prototipo de broma a partir de un atasco interno del juego y mostrado en un estado alfa temprano en los videos de YouTube, fue recibido con entusiasmo y atención, lo que llevó al estudio a desarrollar el juego en un estado de liberación, al mismo tiempo que conservaba varias “Rompiendo errores y fallas para mantener el valor de entretenimiento del juego”.

Coffee Stain Studios recuperó su dinero de los costos de desarrollo a los pocos minutos del juego ofrecido en Steam. En agosto de 2014, el estudio informó que se vendieron casi un millón de copias de Goat Simulator , superando a sus otros juegos en los últimos cuatro años. La versión móvil para sistemas iOS y Android alcanzó las 100,000 descargas dentro de los 6 días posteriores al lanzamiento. A mediados de enero de 2015, se vendieron más de 2,5 millones de copias del juego en todas las plataformas.

Este hecho es reconocido por los propios desarrolladores.

Desde el sitio web oficial
Goat Simulator es un juego pequeño, roto y estúpido. Se hizo en un par de semanas, así que no esperes un juego del tamaño y alcance del GTA con cabras. De hecho, es mejor que no esperes nada en realidad. Para ser completamente honesto, sería mejor que gastaras tus $ 10 en un aro de hula, una pila de ladrillos, o tal vez una cabra de la vida real.

¿Qué buggy es?

La pregunta se refiere a los errores de “software”, este es un hardware / software “error convertido en característica”, pero es mi favorito personal de todos los tiempos.

Se afirma (trabajé con uno de los integrantes del equipo del proyecto, así que creo que las acusaciones) que el “relámpago verde” en un terminal de gráficos IBM 3278 fue un error de hardware que se convirtió en una característica al escribir la documentación: ” mostró que la terminal estaba trabajando en algo “, como el reloj de arena giratorio o la rueda de la muerte del arco iris.

Wikipedia corrobora esta historia, por lo que vale. http://en.wikipedia.org/wiki/Gre

Un ejemplo famoso es el gran salto en el motor del terremoto y la fatalidad. Cuando comienzas a jugar a esos juegos, los saltos de aire parecen raros y no lógicos. Pero pronto encontrarás el juego mucho más divertido con esta ‘característica’.
http://en.wikipedia.org/wiki/Str

Un estimado de 8 billones de mensajes de texto fueron enviados en 2011. Trillones. Las redes GSM fueron diseñadas originalmente para ser optimizadas para llamadas de voz. Para configurar y derribar estas llamadas se utilizó una red de señalización entrelazada. A principios de la década de 1980, los investigadores comenzaron a enviar mensajes de texto cortos a través de la red, durante el tiempo no utilizado en las redes de señalización para que no hubiera ningún costo adicional. Originalmente, estos eran 128 bytes, luego se mejoraron a 140 bytes (160 caracteres de siete bits). Los mensajes de texto pueden costar hasta 25 centavos por mensaje, esencialmente un costo de casi $ 1900 por megabyte ($ 2M / GB). Hoy en día, muchos mensajes se transportan como datos a través de redes de datos, ya sea que lo conozca (utilizando iMessage, WhatsApp, etc.) o no (el operador implementó SMS sobre datos).

Esto no es exactamente un error, sino un uso totalmente involuntario de la red de señalización que se convirtió en un fenómeno masivo, una fuente de ingresos para los operadores móviles, y quizás la obsesión del mundo moderno con los mensajes fugaces y la mala ortografía.

Hay muchos ejemplos de juegos, como Missingno en Pokemon.
Y conejito saltando en Counterstrike.

En Tomb Raider (franquicia creativa), los enormes pechos de Lara Croft (personaje ficticio) también fueron originalmente un error.

Fuente: http://www.ign.com/articles/2008…

Texto relevante de la página anterior: “Mientras hacía ajustes de prueba a su figura de niña, un deslizamiento de su ratón convirtió un aumento previsto del 50% en el tamaño de su pecho en una ganancia del 150%. Obtuvo la aprobación inmediata del equipo antes de que pudiera corregirlo. eso.”

Para mí, el error más maravilloso fue uno en la calculadora científica HP-41 que permitía crear código que no estaba disponible por diseño. Toda una ecosfera de “programación sintética” evolucionó después. Permitió crear un código más corto, o simplemente uno loco (por ejemplo, en lugar de usar ‘goto label #’, simplemente podría cambiar literalmente la ubicación del puntero del programa interno del intérprete escribiendo en la memoria interna de la calculadora).
a veces era útil, pero sobre todo era realmente divertido 😉
solo cómo crear originalmente el ‘Byte Grabber’ que se necesita para comenzar todo …

Creación de un capturador de bytes
Puedes usar los siguientes pasos para crear un Byte Grabber. Asegúrese de seguir exactamente los pasos. Si no funciona la primera vez, inténtalo de nuevo. Tenga en cuenta que el primer paso es un borrado maestro, ¡así que guarde todo lo importante en tarjetas, cintas o discos ahora!

  1. Retire cualquier módulo accesorio.
  2. Haga una limpieza maestra manteniendo presionada la tecla de retroceso mientras enciende la calculadora. La pantalla mostrará MEMORY LOST.
  3. Asigne “+” a la tecla LN presionando ASN ALPHA + ALFA LN.
  4. Asigne “DEL” a la tecla LOG presionando ASN ALPHA DEL ALPHA LOG.
  5. Presione PRGM para cambiar al modo de programa. La pantalla debe mostrar 00 REG 45.
  6. Iniciar el catálogo 1 pulsando CATALOGUE 1 y presione R / S inmediatamente antes de que la pantalla parpadee. Si la pantalla parpadea, esperó demasiado tiempo. Repita este paso tantas veces como sea necesario para que se presione R / S antes de que la pantalla parpadee. (La pantalla mostrará la instrucción .END. Antes y después del parpadeo, pero debe presionar R / S antes del parpadeo).
  7. Presiona la tecla ALFA para entrar en modo Alfa.
  8. Presiona la tecla de retroceso. La pantalla ahora debe mostrar 4094 RCL 01.
  9. Presione ALFA para salir del modo Alfa.
  10. prensa GTO .005 y debería ver 05 LBL 03.
  11. Presione USUARIO (si es necesario) para ingresar al modo Usuario.
  12. Presione LOG 003, que usa la asignación que realizó anteriormente para los pasos DEL 3. Ahora debería ver 04 STO 01.
  13. Presione ALFA para volver al modo Alfa.
  14. Prensa ? AAAAAA (Todo después de la primera A probablemente se mostrará como “-” s). ¡Presiona exactamente 6 A!
  15. Presione PRGM para salir del modo de programa y ALPHA para salir del modo Alfa.
  16. prensa GTO. . (presiona ambos puntos)

El capturador de bytes ahora debe asignarse a la tecla LN. Presione y mantenga presionada la tecla LN que debería mostrar XROM 28,63. Mantenga presionada la tecla hasta que la calculadora muestre NULL porque no desea ejecutar el capturador de bytes ahora. Este sería un buen momento para guardar el estado de la calculadora en una tarjeta presionando XEQ ALPHA WSTS ALPHA en caso de que accidentalmente destruya el capturador de bytes más tarde.
Tenga cuidado al usar el capturador de bytes. Puede obtener un “MEMORY LOST” o bloquear la calculadora si la usa incorrectamente. Si esto último sucede, retire las baterías durante unos segundos y devuélvalas. Si eso no funciona, intente encender la calculadora varias veces sin las baterías o déjelas fuera durante varias horas.

[hpmuseum. org] Programación sintética HP-41C
[wikipedia. org] Programación sintética (HP-41)

Sorprendentemente, nadie mencionó un error de telefonía móvil, que podría ser utilizado por todos los usuarios de Nokia en los primeros días.

Flash SMS o SMS de pantalla o mensaje de clase 1, que muestra el sms directamente en la pantalla en lugar de guardarlo en la bandeja de entrada fue un error de software en el sistema operativo Nokia.

El descanso es historia.

Durante un torneo Super Smash Bros Melee, uno de los participantes intentó agarrar un objeto en el aire y se deslizó accidentalmente por la pantalla sin caminar ni correr.

La técnica, que ahora se conoce como un “wavedash”, es una hazaña física no deseada del juego que transfiere el movimiento del aire a un movimiento horizontal a lo largo del suelo. Es una habilidad requerida ahora para ser competitivo en el circuito profesional.

http : //super-smash-bros.wikia.co…

Wavedashing 101 –

ERMAC el personaje de Mortal Kombat fue un presunto problema técnico. El juego original fue escrito en macro para detectar errores de codificación también conocidos como er ror mac ro. Por lo tanto, cada vez que se producía un error durante un juego, se mostraba el texto ” ermac “, lo que provocaba la especulación de que se introduciría un nuevo personaje. Finalmente ERMAC fue introducido en Ultimate Mortal Kombat 3