Versteckte Witze und Humor in den offiziellen Android-APIs
(voxelmanip.se)- In den öffentlichen Android-APIs sind humorvolle Methoden und Konstanten versteckt
- Zu den bekanntesten Beispielen gehören Methoden wie isUserAMonkey() und isUserAGoat(), die neben ihrem tatsächlichen Zweck auch scherzhafte Elemente enthalten
- DISALLOW_FUN, Log.wtf() usw. enthalten in den offiziellen APIs scherzhafte Beschreibungen oder ein amüsantes Verhalten
- Einfallsreiche Benennungen oder Parodien (z. B. TWEET_TRANSACTION, GRAVITY_DEATH_STAR_I) tauchen häufig in offizieller Dokumentation oder im Code auf
- Solche Elemente verschaffen Entwicklern Freude und kleine Entdeckungsmomente
Witze und humorvolle Elemente in den öffentlichen Android-APIs
In den offenen Android-APIs sind neben echter Funktionalität verschiedene geistreiche Scherze und Easter Eggs für Entwickler enthalten
ActivityManager.isUserAMonkey()
- Eine Methode, die erkennt, ob das Entwicklerwerkzeug UI Exerciser Monkey gerade läuft
- Sie wurde dafür entworfen, in Umgebungen mit simulierten Zufallseingaben in der UI bestimmte Aktionen einzuschränken, um Apps unter Last zu testen
- Sie wurde eingeführt, damit wichtige Funktionen (z. B. Notrufe) eingeschränkt werden können, wenn statt eines echten Nutzers ein Monkey die App bedient
- Wurde in Android 2.2 (Froyo, API 8) zur öffentlichen API hinzugefügt
- Hat ihren Ursprung darin, dass in der Frühzeit von Android tatsächlich versehentliche Probleme gelöst werden mussten
UserManager.isUserAGoat()
- In der offiziellen Dokumentation wird sie als Prüfung beschrieben, ob der Nutzer ein Ziel für Teleportation ist, was jedoch ein Scherz ist
- Anfangs gab sie immer false zurück, wurde nach Erscheinen von Goat Simulator jedoch so geändert, dass bei installiertem Spiel true zurückgegeben wurde
- Seit Android 11 (API 30) ist der Rückgabewert aus Datenschutzgründen dauerhaft auf false festgelegt
- Es gab eine Logik zur Erkennung der Goat-Simulator-App, diese wurde jedoch wegen Änderungen an den Richtlinien für den Zugriff auf App-Listen angepasst, um Informationslecks zu vermeiden
- Inspiriert wurde dies von einem Easter Egg im Google Chrome Task Manager
UserManager.DISALLOW_FUN
- Bezeichnet eine in Android 6 Marshmallow (API 23) hinzugefügte Richtlinie zum Einschränken von Spaß
- In der offiziellen Dokumentation wird dies so beschrieben, dass man Nutzern Freude oder Vergnügen verwehren könne
- Tatsächlich wird die Richtlinie verwendet, damit der Gerätebesitzer bestimmte Nutzerfunktionen blockieren kann
- Einige Apps oder auch das System selbst können diese Richtlinie erkennen und dadurch Easter Eggs oder andere „unterhaltsame“ Funktionen deaktivieren
- Sie kann etwa in Bildungseinrichtungen genutzt werden, um ablenkende Funktionen zu deaktivieren
Chronometer.isTheFinalCountdown()
- In Android 8 Oreo (API 26) wurde die Methode isTheFinalCountdown hinzugefügt
- Beim Aufruf startet sie automatisch das YouTube-Video von Europe mit „The Final Countdown“
- Sie hat keinen unmittelbaren praktischen Nutzen und ist ein offensichtlicher Scherz bzw. Verweis
- Dies wird im Code durch die Intent-Anweisung klar sichtbar
- Sie bietet Entwicklern eine kleine spielerische Einlage
PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND
- Eine in Android 2.3 Gingerbread (API 8) hinzugefügte Konstante für die Unterstützung von Multitouch
- Der Name ist eine Parodie auf Jazz Hands, die bekannte Geste aus Musik- und Bühnenperformances
- Gemeint ist die Fähigkeit, bis zu fünf Finger gleichzeitig zu erkennen
Log.wtf()
- Kürzel für What a Terrible Failure und gedacht zum Protokollieren von Situationen, die niemals eintreten sollten
- Wird als schwerwiegendes Log auf Assertion-Niveau eingestuft
- Gehört zu den unter Entwicklern bekanntesten scherzhaften APIs
AdapterViewFlipper.fyiWillBeAdvancedByHostKThx()
- Hinzugefügt in Android 3.0 Honeycomb (API 11)
- Eine inoffizielle und heitere Benennung für einen Aufruf, wenn die View durch den Host weitergeschaltet wird
- Entstand vermutlich aus einer bewusst komischen Idee während der Benennung
- Bringt auf witzige Weise das klassische Problem der Informatik zum Ausdruck: wie schwer Benennung ist
IBinder.TWEET_TRANSACTION
- Ein in Android 3.2 Honeycomb (API 13) eingeführter Transaktionstyp
- Deutet auf das Senden eines Tweets hin, tut tatsächlich aber nichts; die Längenbegrenzung von 130 Zeichen verweist auf die frühere Twitter-Regel
- Der Name selbst ist eine reine Parodie
IBinder.LIKE_TRANSACTION
- Eine in Android 4.0.3 ICS (API 15) hinzugefügte LIKE-Transaktion
- Dient dazu, ein Signal zu senden, dass der Aufrufer die App mag; eine tatsächliche Aufzeichnung oder Zählung gibt es nicht
- Es gibt eine scherzhafte Beschreibung, dass damit das Selbstwertgefühl der App gesteigert werde
SensorManager.SENSOR_TRICORDER
- Eine Konstante, deren Name vom Tricorder aus Star Trek stammt
- Existierte schon seit Android 1.0, wurde später jedoch als deprecated markiert
- Ein Tricorder ist ein fiktives Sci-Fi-Gerät, was Entwicklern ein Schmunzeln entlockt
SensorManager.GRAVITY_*
- In SensorManager gibt es mehrere Konstanten mit Gravitationswerten verschiedener Himmelskörper (Sonne, Pluto usw.)
- Darunter sind GRAVITY_DEATH_STAR_I (der Todesstern aus Star Wars) und GRAVITY_THE_ISLAND (die Insel aus der Serie LOST) als Scherz gemeint
- Einige davon haben eher parodischen als praktischen Nutzen
<blink> Tag
- Im Android-View-Layout-System existiert ein verstecktes
<blink>-Tag - Es lässt Child-Views wie das alte HTML-
<blink>blinken - In der offiziellen Dokumentation wird es nicht beschrieben, wurde aber 2011 per Commit hinzugefügt und ist bis heute in AOSP enthalten
- Ob es tatsächlich verwendet wird, ist umstritten
Fazit
In den offiziellen Android-APIs sind an vielen Stellen bewusst Witze, Parodien und Easter-Egg-Elemente eingebaut
Solche Elemente bereiten Entwicklern kleinen Spaß und die Freude an Entdeckungen und zeigen ein Stück der Community-Kultur und der heiteren Seite von Android
2 Kommentare
Hacker-News-Kommentare
Bei FB gab es über viele Jahre die Konvention, riskanten oder bereits ausgemusterten Tokens Suffixe wie
_DO_NOT_USE_OR_YOU_WILL_BE_FIREDzu geben. Jeder kannte diesen Witz, aber nach der Pandemie, als der Anteil neuer Mitarbeitender hoch war und Remote-Onboarding oft unzureichend lief, gab es auch Beschwerden, dass solche internen Witze Angst oder Unsicherheit auslösen. Das gilt nur für den Bereich, den ich selbst erlebt habeIch erinnere mich, dass ich Namen wie Reacts
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIREDschon früher amüsant fand, weil sie so verspielt und übertrieben lang waren. Leider verschwindet solcher „Humor“ in letzter Zeit immer mehr zugehöriger PRFrüher gab es bei Google irgendwo im Netzwerk-Stack einen riesigen Codeklumpen, der schwer zu verstehen und noch schwerer zu ändern war, und er wurde immer größer. Unser Team hat diesen Code in "[Foo]Sorcery" umbenannt. Dank dieses irgendwie unheimlichen und seltsamen Namens wollte niemand mehr neue Dinge in diesen Code einbauen, und gelegentlich hat jemand Teile aufgeräumt und gelöscht. Ich glaube, das lustige Naming hat tatsächlich funktioniert
Meine liebste geistreiche Funktion im Android-Quellcode ist
android.os.Handler.runWithScissors(), aber leider ist sie nicht Teil der public API Link zum QuellcodeIch musste über den Kommentar zu dieser Funktion lachen: „@hide It is dangerous to make this API public because it can be called from the wrong thread. If added, it should probably have a less funny name, such as runUnsafe().“
Ein bisschen schade, dass diese Funktion im Artikeltext fehlt. Sie gehört zu meinen absoluten Lieblingsfunktionen
Das erste Beispiel, das mir bei X11 einfällt, ist die globale Variable
party_like_its_1989Code-Link, und im Changelog der DRI2-Erweiterung wimmelt es von Ausdrücken wie "Awesomeness!", "True excellence" und "Enlightenment attained" Link zum ChangelogIn BeOS (und Haiku) gibt es Funktionen namens
is_computer_on()undis_computer_on_fire(), und ihre Beschreibung ist wirklich großartig Referenz-LinkIn Delphi gibt es die Exception
EProgrammerNotFound, und auch die offizielle Dokumentation transportiert einen sehr trockenen, aber ernsten Humor Link zur DokumentationNatürlich ist klar, dass solche Namen zum Spaß gedacht sind, aber auf modernen Computern mit fortgeschrittenem Energiesparen sind solche Zustände ziemlich häufig. Das Betriebssystem muss selbstverständlich mit Dingen wie dem Aufwachen aus tiefen Schlafzuständen oder einer Mainboard-Temperatur von 200 Grad umgehen können
is_computer_on_fire()wäre noch lustiger gewesen, wenn man es als asynchronen eventbasierten Trigger verwendet hätteFür Neugierige gibt es auch einen Link zum zugehörigen Quellcode Code-Link
Ich finde es schön, dass sich so ein Sinn für Humor in den Codebasen großer Unternehmen erhalten hat. Wenn man nur APIs benutzt, merkt man das nicht, aber wenn man den Quellcode direkt liest, lassen einen solche Easter Eggs gelegentlich ganz deutlich spüren, dass hier wirklich Menschen den Code geschrieben haben. Software wirkt heute oft zu kühl, und gerade dieser Kontrast fühlt sich irgendwie warm an. Ehrlich gesagt wünschte ich, es gäbe mehr davon
Falls jemand Dinge wie isUserAGoat oder isUserAMonkey auf Android selbst testen möchte: Ich habe eine kleine App gebaut und veröffentlicht, die genau solche Funktionen anbietet Link zur App. Ich möchte später vielleicht noch mehr Easter Eggs ergänzen
Etwas wie eine Prüfung der Richtlinie
DISALLOW_FUNeinzubauen, könnte ziemlich witzig sein. Ich habe auf GitHub nach zugehörigem Code gesucht, aber meistens wird das nur verwendet, um das Versions-Easter-Egg in der systemeigenen Settings-App zu verstecken. Vielleicht wäre ich tatsächlich der Erste, der diese Funktion in einer Drittanbieter-App praktisch nutztAllerdings lässt sich die App unter Android 15 nicht installieren. Es wäre gut, wenn du sie aktualisieren könntest, denn Google verlangt inzwischen, dass das minimum compileSdk passend gesetzt ist
Im Chrome-Task-Manager gab es einmal eine versteckte Spalte, die die „Anzahl der vom Browser-Prozess teleportierten Ziegen“ anzeigte. Diese Funktion gibt es inzwischen nicht mehr, aber in einem alten Screenshot kann man sie noch sehen. Früher gab es dort sogar 234 Spalten, jetzt sind es nur noch 16, was ein wenig schade ist
Ich vermisse die Zeit, als Tech-Produkte voller Easter Eggs waren. Heute wirkt alles so durchkommerzialisiert, dass diese Kultur verschwunden zu sein scheint
Ich würde Antworten in diesem Thread gern zu einer Pflichtfrage im Bewerbungsgespräch machen. Einschließlich bei Interviews mit mir selbst. Das ist wirklich so ein Moment von „Es gibt zwei Arten von Menschen auf der Welt“
Es geht hier darum, dass es in technischer Dokumentation Humor und Witze gibt. Viele sehen das eher negativ, aber ich persönlich mag Humor in Dokumentation sehr. Ich habe dazu schon einmal etwas geschrieben
Wurde der Ausdruck „Yuumor“ etwa von einer KI übersetzt ...? zitter