Die Nerd Enzyklopädie 40 - isUserAMonkey

Googles Betriebssystem Android bietet über Schnittstellen eine Vielzahl von Methoden an, um den Entwickler:innen die Arbeit zu erleichtern. Eine dieser Methoden heißt isUserAMonkey. Die Methode prüft, ob die Benutzeroberfläche von einem Affen manipuliert wurde [ANDRO1]:

Returns “true” if the user interface is currently being messed with by a monkey.

Das klingt danach, als würde Google sich einen Spaß erlauben, aber es gibt tatsächlich ein Tool, das pseudo-randomisierte Ereignisse simuliert: Monkey erzeugt wahllos Clicks, Wischgesten und vieles mehr, um eine Benutzeroberfläche auf Herz und Nieren zu prüfen. Und mit der Method isUserAMonkey findet man heraus, ob das eigene Programm gerade von eben jenem Hilfsmittel „bedient“ wird.

Die Nerd Enzyklopädie 39 - Der Kerzen-Controller

Eine Infrarot-Fernbedienung funktioniert nach einem einfachen Prinzip: Die Fernbedienung erzeugt Signale im Infrarot-Bereich, die der Empfänger im Fernseher verarbeiten kann. Lichtblitze, wenn man so will, die für das menschliche Auge nicht sichtbar sind.

Die Spielekonsole Wii von Nintendo nutzt dieses Prinzip, um mit dem Controller, der Wiimote, zu kommunizieren. In einer Leiste, die am Fernseher platziert wird, befinden sich zwei Infrarot-Sender, die als Referenzpunkt dienen. So können die Controller ihre Position im Raum bestimmen und Objekte auf dem Fernseher anvisieren.

Die Nerd Enzyklopädie 38 - Du Idiot

You fool. You absolute, unmitigated, unadulterated, complete and utter, fool” [GIST2]

Das ist die unverblümte, ungeschönte und zeitlose Reaktion von Robert J. Hansen, einem Entwickler von OpenPGP, nach einen Angriff auf das SKS - Netzwerk. Er richtet sich damit an diejenigen, die diesen Angriff zu verantworten haben.

Das SKS-Netzwerk (Synchronizing Key Server) speichert öffentliche Schlüssel, die sich z.B. für die vertrauenswürdige Kommunikation über E-Mail nutzen lassen. Die Server nutzen dazu eine in OCaml entwickelte Software, die von Yaron Minsky im Rahmen einer Doktorarbeit geschrieben wurde und eigentlich nur als Proof Of Concept gedacht war.

Die Nerd Enzyklopädie 37 - Mehrdeutige Bilder

Ein Bild ist ein Bild ist ein Bild. Ob in der realen Welt oder auf dem Computer. Oder? ODER? Du ahnst es schon: Die Sache hätte keinen Haken, wenn ich es nicht so betonen würde.

Ein Bild auf dem Computer muss „interpretiert“ werden, denn schließlich handelte sich dabei um nichts anderes als eine Datei voller verrückter Zeichen — Nullen und Einsen. Es gibt verschiedene Formate, um Bilder in Dateien zu speichern, allen voran JPG, GIF und PNG.

Die Nerd Enzyklopädie 36 - Das kik & left-pad Drama

NPM (Node Package Manager) ist ein Paket Manager für JavaScript und eine Plattform für Pakete, also Software, um die Funktionalität von JavaScript zu erweitern. Es gibt einige Pakete, die sehr populär sind und in vielen JavaScript-Programmen verwendet werden. Dass das nicht nur praktisch ist sondern auch kritische Abhängigkeiten erzeugt, demonstrierte Azer Koçulu im Jahr 2016.

Koçulu stellte damals über NPM eine Vielzahl von Paketen zur Verfügung, darunter auch kik, ein kaum bekanntes Paket, um Templates zu erstellen. kik ist aber auch der Name einer Messenger-App mit seinerzeit rund 270. Mio. aktiven Nutzer:innen.
Eines Tages erhielt Koculu Post von Bob Stratton, einem Rechtsanwalt, der die Interessen von Kik interactive vertrat, dem Unternehmen hinter dem Messenger. Stratton bat darum, dass Koculu sein Paket umbenennt, verwies dabei auf die eingetragene Handelsmarke und bot im Gegenzug sogar 30.000 Dollar an.

Die Nerd Enzyklopädie 35 - JavaScript Bananas

Nerd-Enzyklopädie #35

Auf den ersten Blick steckt JavaScript voller Mysterien. Erst wenn man etwas genauer hinschaut, erkennt man die Eleganz einer gewissen Regeltreue. Zu welchem Ergebnis könnte z.B. diese Anweisung führen:

  "b" + "a" + +"a" +"a";

Richtig, es ist baNaNa! Aber warum und wieso nicht einfach baaa? Die Details spielen hier eine wichtige Rolle und damit ist diese Frage prädestiniert für das nächste JavaScript-Bewerbungsgespräch: Dem zweiten “a” wird das Plus-Zeichen ohne Leerzeichen vorangestellt. Damit handelt es sich um einen „unären Operator„, mit dem das darauf folgende Zeichen als numerischer Wert interpretiert wird. Das “a” ist aber kein numerischer Wert, sprich not a number. Die Kurzform dafür lautet NaN und die Anweisung ergibt somit ausgeschrieben:

Die Nerd Enzyklopädie 34 - JavaScript wurde innerhalb von 10 Tagen entwickelt

JavaScript ist eine der am weitesten verbreiteten Programmiersprachen der Welt und für die Funktion und Popularität des WWW von großer Bedeutung. Während HTML die statische Darstellung von Inhalten im Browser ermöglicht, lassen sich dank JavaScript diese Inhalte dynamisch darstellen und modifizieren. JavaScript hat in den letzten Jahrzehnten eine beeindruckende Entwicklung hingelegt, angefangen als Script-Sprache innerhalb des Browsers bis hin zur Grundlage für eine leistungsfähige Webserver-Architektur.

Es gibt zahlreiche Anwendungsgebiete, sei es als Sprache innerhalb des Datenbanksystems MongoDB, für die Entwicklung von Spielen und Anwendungen oder als serverseitige Applikation [THEN1].

Die Nerd Enzyklopädie 33 - GCJ-02

WGS steht für World Geodetic System und beschreibt ein Referenzsystem für die Kartographie und Vermessung der Welt. Das WGS spielt unter anderem für die Navigation mit GPS eine wichtige Rolle.

Nicht jedoch in China. Dort wurde in 2002 der Standard GCJ-02 eingeführt, der zwar auf WGS basiert, aber einen Algorithmus implementiert, der dafür sorgt, dass Längen- und Breiten-Angaben anders berechnet werden [ABST1].

Dadurch ergeben sich im Vergleich zu WGS Abweichungen von bis zu 500 Metern, in Ausnahmefällen sogar mehreren Kilometern [GITH3]. Die Motivation für diesen Standard ist laut offizieller Stelle die nationale Sicherheit. In der Realität führt das dazu, dass „nicht lizensierte“ Navigationssysteme dich an den falschen Zielort schicken.

Die Nerd Enzyklopädie 32 - Was haben PHP, Visa und Mandelbrot gemeinsam?

PHP ist eine der populärsten Sprachen im WWW. PHP steht für PHP: Hypertext Preprocessor und ist damit ein rekursives Akronym. Ursprünglich stand PHP für Personal HomePage Tools. Ab Version 3 gab es allerdings grundlegende Änderungen, weshalb man sich von dem Vorgänger absetzen wollte und daher genau diesen Namen wählte. In der IT gibt es viele mal mehr oder weniger populäre rekursive Akronyme, wie z.B.

  • WINE: WINE Is Not an Emulator (Software),
  • cURL: cURL URL Request Library (Software),
  • RPM: RPM Package Manager (Paketmanager),
  • GNU: GNU is not UNIX (Betriebssystem,
  • ATI: ATI Technologies Inc. (Hardwarehersteller),
  • NANO: Nano’s Another editor (Texteditor)

…und viele mehr, unter anderem auch VISA für Visa International Service Association.

Die Nerd Enzyklopädie 31 - Der allererste Bug

Als ein Bug wird ein Fehler in einem Programm verstanden. Am 9. September des Jahres 1945 soll es sich zugetragen habe, dass der Mark II, ein Computer der Harvard University, eine Fehlermeldung≤ ausgab. Selbst Universitäts-Computer sind davor nicht gefeit.

Man öffnete im Rahmen der Fehlersuche also den Computer — die waren zu der Zeit ja etwas größer als die Smartwatch an unserem Handgelenk — und fand die offensichtliche Ursache des Problems: Eine Motte! Sie wollte es sich im Panel F im Relay 70 gemütlich machen und hat dieses wagemutige Vorhaben mit dem Leben bezahlt - die Todesursache ist leider nicht überliefert.