Ostergeschenk für meine Eltern:
Handarbeiten-Schoenfeldt.de

Zu Ostern habe ich meinen Eltern endlich einen lang gehegten Wunsch erfüllt. Sie führen ein Handarbeitsgeschäft mit je einer Filiale in Wiefelstede und in Wilhelmshaven und wollten gern eine „Webseite“ haben. Es sollte sich dabei eher um eine Art Webvisitenkarte handeln, damit man Infos über Öffnungszeiten, Anschrift, etc. nicht nur auf Seiten von Fremdanbietern erfahren kann, sondern eine es eine „offizielle Quelle“ gibt. Es sollte einfach und klein sein, zumindest in der mobilen Version über quasi keine Ladezeit verfügen. Ich hab dann aus einfachem XHTML mit CSS handarbeiten-schoenfeldt.de gebastelt. Es ist eigentlich nur die Online-Version des Flyers, den sie seit Anfang des Jahres verteilen, doch wird seiner Bestimmung (kurz mal Kontaktdaten oder Öffnungszeiten nachschauen) hoffentlich gerecht.

Um ehrlich zu sein, würde ich etwas Warenkunde oder mehr Infos zum Angebot ganz gut finden, doch das wird entweder wartungsintensiv, oder impliziert dass es nicht erwähntes auch nicht gibt. Aus diesem Grund gibt es nur eine kleine Aufzählung mit Beispielen wie Strickgarne, Nadeln und Patchworkstoffe. Verbesserungsvorschläge nehme ich aber gern an.

GnuPG-Schlüsselstruktur

ilovefs-heart-small-enNeulich wurde mir gesagt, ich hätte „einen Haufen“ GPG-Keys. Da das stimmt, gibt es anlässlich des heutigen cryptovalentine’s day eine Aufstellung:

Für alltäglichen Mailverkehr interessant sind vor allem die beiden Keys, von denen ich jeweils einen für eine Mailadresse verwende:
Patrik Schönfeldt (mail@patrikschoenfeldt.de)
Fingerprint=89C4 340D 292A 5215 8389 BAAB 2DAC 3458 9558 2294

Patrik Schönfeldt (patrik.schoenfeldt@vdvc.de)
Fingerprint=DF1E 85A4 1E4B B9E0 3731 F47E E910 9892 D1E9 B3AD

Nur für Signaturen anderer Keys gibt es folgenden Key:
Patrik Schönfeldt
Fingerprint=922A E025 4C43 63F8 3D00 A306 8946 BCDE EADF 86F0

Dieser ist an einem sicheren Ort gespeichert und bestätigt z.B. die Echtheit der Primärkeys. Die Gültigkeit ist 2015/2016. Wer einen Schlüssel von mir signieren möchte: Dieser ist der beste für diesen Zweck.

Mein alter Key (damals einer für alles) wurde durch die bisher genannten abgelöst.
Patrik Schönfeldt (Key for 2011 to 2015, patrik.schoenfeldt@gmx.net)
Fingerprint=393B DD4B FA25 5092 68BC 9081 AD1B D149 64F8 EC43

Er wird dieses Jahr auslaufen, und hat noch Mailadressen angegeben, die ich eigentlich gar nicht mehr benutze. Da er aber häufiger signiert wurde als die anderen Keys, werde ich ihn nicht widerrufen, damit er mittelbar das Vertrauen in die neueren Schlüssel bestätigt.

Es gibt noch andere Schlüssel, aber dazu habe ich keine privaten Schlüssel mehr. Widerrufen ist ist also nicht mehr drin.

Games sind sexistisch!
Wo ist das Problem?

Aktuell schwappt (mal wieder) eine Sexismusdebatte um Videospiele durch das Internet. Diese gipfelt aktuell in Morddrohungen gegen die Feministin Anita Sarkeesien, die Sexismus in Videospielen kritisiert. Als intelligenter Computerspieler sollte man anerkennen, dass sie wahre Punkte anspricht. Wer die Filme auf Feminist Frequency als Beiträge gegen Videospiele ansieht, hat ohnehin einiges nicht verstanden. Einzig Vollblut-Sexisten dürfen sich kritisiert führen.

Sexismus ist in unserer Gesellschaft ein ernsthaftes Problem. Kein Problem allerdings ist, dass er in Videospielen auftaucht. Ich hatte gehofft, dass wir das in mehr als zehn Jahren Killerspieldebatte gelernt hätten. Wer würde ernsthaft bestreiten, dass es in Videospielen Gewalt gibt? Freunde virtueller Gewalt relativieren manchmal, wenn es um dargestellte Grausamkeit geht.

Virtuelle Gewalt ist OK, weil wir verinnerlicht haben, dass reale Gewalt es nicht ist. Wir sehen den Krieg – und wollen, dass er auf der anderen Seite des Bildschirms bleibt. Bei Sexismus ist es vielleicht nicht so einfach. Jeder ist nun mal ein bisschen sexistisch (oder so ähnlich). Und da dürfte es durchaus helfen, sich auch über Vorurteile in Videospielen bewusst zu werden. Problematisch ist, wenn wir Dinge als gegeben hinnehmen, sie nicht hinterfragen. Denn dann verfestigen sie womöglich unser Weltbild – samt aller damit verbundenen Probleme.

In diesem Sinne: Sexismus in Videospielen ist OK – solange er auf der anderen Seite des Bildschirms bleibt.

Kaffee, Junge!

Zwar habe ich nicht vor, unter die Foodblogger zu gehen, doch habe ich versprochen, einen Beitrag über meinen selbst gemörserten „Aztekenkaffee“ zu schreiben. Gekommen ist mir die Idee, als ich eben jene Kaffeemischung (gemischt mit Kakaoschalen) in einer Kaffeerösterei in Hamburg[1] entdeckt habe. Ich erinnerte mich an einen Besuch im Schokoladenmuseum in Brügge, wo unter anderem die traditionelle Zubereitung der Getränke aus Bohnen erwähnt wurde. Nunja, geröstet hat ursprünglich noch niemand, doch der Name der Kreation hat mich dazu verleitet, meinen Kaffee nicht mahlen zu lassen:

Bohnen im Mörser.
Die ganzen Bohnen habe ich von Hand zerkleinert.
Gemörserter Kaffee auf einer Küchenwaage
Für Nachkocher: Mengenangabe (für meine große Tasse) und Granularität
Aufgebrühter Kaffee
Da mein Kaffee nicht so fein ist, wie maschinell gemahlener, habe ich das Pulver im Wasser gelassen und (noch) keinen Filter verwendet.
Kaffee im Filter
Den Kaffeesatz wollte ich natürlich nicht trinken, also nachträglich filtrieren.
Eine leckere Tasse Kaffee
Eine leckere Tasse Kaffee. Mild, mit feiner Kakaonote und sehr koffeinhaltig.

Der fertige Kaffee war sehr mild im Geschmack – vermutlich begünstigt durch das nicht all zu fein gemahlene Pulver. Das Kakaoaroma ist nichtsdestotrotz durchgekommen. Da ich den Kaffee ein wenig habe ziehen lassen, war er sehr aufmunternd. Optimierungspotenzial besteht vor allem noch beim Filtrieren: Weil ich von einer Tasse in eine andere umgefüllt habe, war das Gießen nicht sehr einfach und ich hatte Angst, etwas zu verschütten. So Ist der Kaffee anfangs schnell und dann immer langsamer durchgelaufen. Vermutlich wäre der Kaffee sonst noch etwas kräftiger im Geschmack gewesen. So oder so: Dieser Kaffee war etwas ganz besonderes.

  1. [1]Kaffeerösterei Burg

Mehr Realismus: 4D-Engines

Die meisten Spiele setzen heutzutage auf 3D-Engines. Mit der neuen Konsolengeneration wird der Detailgrad noch einmal erhöht. Aber ist das Realismus? Gerade bei Weltraumshootern ergibt sich oftmals die geradezu absurde Situation, dass man sehen kann, wo sich die Gegner befinden – und nicht, wo sie sich befunden haben, als Licht von ihnen ausgesendet wurde. Und obwohl man angeblich mit nahezu Lichtgeschwindigkeit c durch den Raum jagt, bekommt man keine Farbverschiebung zu sehen.

Letzteres ist leicht zu realisieren: Man müsste einfach abhängig von der Relativgeschwindigkeit einen Farbfilter über das Bild legen. Klassische 3D-Engines berechnen aber immer alle Ereignisse, die im Moment der Anzeige passieren – und geben sie direkt auf den Bildschirm. Das klappt natürlich nicht, wenn man jeweils sieht, “was da mal war“.

Die Figuren bewegen sich fast mit Lichtgeschwindigkeit, sodass der Spieler zu T2 an einem Ort ist, an dem sich gerade das Licht befindet, dass der Gegner bei T1 ausgesandt hat (pinker Kreis).
Die Figuren bewegen sich fast mit Lichtgeschwindigkeit, sodass der Spieler sich zu T2 an einem Ort befindet (pinker Kreis), an dem sich gerade das Licht befindet, dass der Gegner bei T1 ausgesandt hat.

Für eine 4D-Engine könnte man also alles im Arbeitsspeicher behalten, was der Spieler noch sehen könnte. Oder aber man berechnet Ereignisse in der Vergangenheit erst, wenn sie für die Spielergegenwart relevant werden. Für statische Objekte ändert sich praktischerweise ohnehin nichts, Bewegungen müssen parametrisiert werden. Eine Kugel, die zu einem bestimmten Zeitpunkt abgeschossen wurde, ist ein sehr einfaches Beispiel. Wenn diese nicht zwischenzeitig mit anderen beweglichen Objekten zusammentrifft, ist ihre Position zu jedem beliebigen Zeitpunkt leicht zu ermitteln. Doch eine statische Welt, in der ohne Zutun des Spielers nicht passiert, ist eher langweilig, sodass auf Simulationen außerhalb der Sichtweite nicht verzichtet werden sollte.

Doch wie hält man den Speicherbedarf gering? Ständig von jedem Punkt virtuell Photonen aussenden zu lassen ist sehr aufwändig. Wenn man sie nur in solche Richtungen abstrahlen lässt, in die der Spieler kommen könnte, bevor das Licht diese Stelle passiert hat, reduziert sich der Aufwand merklich. Im Grenzfall eines sehr langsamen Spielers wäre man bei klassischem Raytracing angelangt. Ist der Spieler aber schnell, müsste man quasi Raytracing für alle Orte machen, an die der Spieler noch kommen könnte. Keine besonders effiziente Idee.

Rettung verspricht schließlich die gute alte Demo, wie man sie aus dem E-Sport kennt. Dort werden alle Bewegungen der Spielfiguren aufgezeichnet, um das Spiel im Nachhinein noch einmal ansehen zu können. Und zwar nicht nur aus der Perspektive des Spielers. Für eine 4D-Engine muss nun allerdings die Anzeige von der Berechnung der Bewegungen abgekoppelt werden: Was gerade passiert, hat auf dem Bildschirm nichts zu suchen. Angezeigt wird nur, was sich vor einer beliebigen Zeit T genau im Abstand c×T vom Spieler befunden hat.

Strafrecht und Überwachung aus Sicht des Datenanalytikers

Heute war die meine letzte Prüfung, im Rahmen meines Diplomstudiums: Es ging um Statistik und computergestützte Datenanalyse. Dabei ist mir spontan die Idee gekommen, die strafrechtliche Unschuldsvermutung als analog zu einem Bayes’schen Prior zu bezeichnen, der aufgrund einer Sicht auf die Gesellschaft angenommen werden soll. (Ja, ich mache in mündlichen Physik-Prüfungen Randbemerkungen zu sozialen und politischen Themen. Die Beispiele fallen mir halt ein und ehe ich nichts sage und planlos wirke, nehme ich lieber fachfremde Beispiele…)

Der Prüfer fand es nicht unbedingt super, quittierte meinen Exkurs mit einem „Im Strafrecht ist Bayes’sche Statistik untersagt“. Aussagen wollte ich, dass man die Unschuldsvermutung auf eine positive Weltsicht zurückführen könnte, in der jemand höchstwahrscheinlich keine Straftaten begeht. Erst, wenn kein Zweifel besteht, ist insgesamt die Irrtumswahrscheinlichkeit der Ermittler geringer als die Gesamtwahrscheinlichkeit, dass man den Täter hat. Dann wäre sie eben so ein Prior. Anderes Beispiel (mit erfundenen Zahlen, aber ähnlich der Vorlesung): Eine Krebsvorsorge erkennt eine bestehende Erkrankung mit 90%iger Wahrscheinlichkeit, doch in 5% der Fälle gibt es ein „positives“ Ergebnis, obwohl der Patient keinen Krebs hat. Angenommen, man kann sich sehr sicher sein, keinen Krebs zu haben, dann sollte man lieber keinen Test machen: Die Wahrscheinlichkeit, dass man durch den Test verunsichert wird ist deutlich größer als die, dass einem der Test hilft.

Aufbauend auf diesem Gedanken gibt es in der Klassifizierung zwei abgeleitete Größen: Die Reinheit und die Effizienz. Zwischen beiden Größen muss man abwägen, beides gleichzeitig geht nicht. Die Reinheit gibt an, wie viele Fehleinschätzungen sich in der Gruppe der positiv klassifizierten befinden. (An dieser Stelle bin ich in der Prüfung wieder auf Teilchenidentifikation umgeschwenkt.) In unserem Strafrechtsbeispiel gibt die Reinheit also an, wie viele Gefängnisinsassen tatsächlich Straftaten begangen haben. Die Effizienz ist die entgegengesetzte Größe, sozusagen die Aufklärungsqote. Der Rechtsstaat ist im Bild des Datenanalytikers bemüht, bei der Klassifikation von Verbrechern eine große Reinheit zu erzielen.

Effizienz-Reinheit-Plot (Purity-Efficiency-Plot)
Effizienz-Reinheit-Plot. Möglich sind nur Kombinationen auf der grauen Linie (oder schlechtere), mehr Infos zu Purity-Efficiency-Plots z.B. auf dieser Seite über Klassifikation mit neuronalen Netzen.

Das ändert sich beim Präventionsstaat: Wer Verbrechen verhindern will, auch wenn es sich nur um eine bestimmte Klasse handelt, muss notgedrungen mehr Effizienz wählen, die Reinheit leidet. Vor eben dieser Fragestellung stehen wir momentan gesellschaftlich: Wollen wir Verbrechen verhindern, indem wir in großen Datenbergen Indizien sammeln? Das kann funktionieren. Doch selbst wenn jeglicher Missbrauch ausgeschlossen werden kann, bleibt es eine Entscheidung hin zu mehr Fehlverurteilung: Auch wenn man nichts zu verbergen hat, kann man fälschlicherweise für einen Terroristen gehalten werden. Somit steht nicht nur Freiheit gegen Sicherheit, sondern in Wirklichkeit auch Sicherheit vor Terrorismus gegen Sicherheit vor staatlichen Fehlentscheidungen.

Pokémon (Serienreboot)

Nachdem die Pokémon-Reihe nun den X-ten (und Y-ten) Neuaufguss der immer gleichen Spielmechanik erlebt hat, ist es in meinen Augen Zeit für einen Reboot der Serie. Hier ein paar Gedanken:

Kernkonzepte und Schwächen
Die zentralen Elemente sind das Fangen und das Kämpfen. Beide müssen erhalten bleiben, um den Charakter des Spiels nicht zu zerstören. Auch Weiterentwicklung und Erlernen von neuen Attacken sind nicht zu ersetzen. Als Mechanismus hierfür wurde bisher der Levelzuwachs der Pokémon genutzt. Trotz EP-Teiler bereitet das „Trainieren“ der Pokémon oftmals eher Arbeit als Vergnügen. Vor allem, wenn man in Anfangsgebiete zurückkehrt, nervt die Differenz der Level. Auch vom Storytelling ergibt es keinen Sinn, dass die Trainer aus den verschiedenen Regionen im oder gegen den Uhrzeigersinn stärker werden. Warum ist die Göre aus der letzten Stadt deutlich stärker als der fünfte Arenaleiter? Das ergibt einfach keinen Sinn… Dass dagegen ein gut trainiertes Pokémon auch gegen eigentlich bevorteilte Typen gewinnen kann, ist durchaus eine valide Designentscheidung.

Fitness: Level Down
Die Lösung wäre die Abschaffung der bisherigen Level. Pokémon, die nicht trainiert werden, verlieren wieder Level. Um das neue Konzept greifbar zu machen, könnte man es „Fitness“ nennen. Gut trainierte Pokémon kämpfen besser, legt man sie nur in die Box (und sie sich auf die faule Haut), werden sie so träge, dass Vögel selbst im Kampf gegen Käfer versagen. Man könnte noch implementieren, dass sich träge Exemplare leichter fangen lassen, um das bisherige Fanggefühl nachzubilden. Das im Spiel zentrale Kämpfen funktioniert mit Fitness sogar besser als mit Levels: Die absurde Situation, dass die Pokémon je nach Region um Größenordnungen unterschiedlich stark sind, würde behoben.

Orden
Die Orden, die es im Spiel für das Besiegen von Arenaleitern gibt, ermöglichen einem bisher, Pokémon mit einem höheren maximalen Level zu kontrollieren. Das ergibt mit der Fitness nur noch begrenzt Sinn: Es ist nicht unbedingt motivierend, sein Team nur bis zu einem bestimmten Fitness-Level trainieren zu dürfen und sie dann wieder verfetten zu lassen. Fitness soll sich ja viel schneller verändern als das bisherige Level. Möglich wäre hier, das maximal erreichbare Fitness-Level mit der Zeit zu erhöhen: Pokémon von Anfänger-Trainern werden nicht so fit wie die von Profi-Trainern. Eine vermutlich bessere Alternative wäre, den Fitness-Zuwachs pro Kampf zu erhöhen und die Abnahme zu reduzieren. Oder man führt Autorität ein: Zuneigung der Pokémon zum Trainer ist ja schon seit der ersten Generation (gelben Edition) Spielelement. Ein fittes Pokémon wird einem Trainer, dem es vertraut, weiterhin gehorchen. Misstraut es dem Trainer, muss dieser eine gewisse Autorität ausstrahlen (sprich: Orden haben), damit es seinem Ruf folgen.

Weiterentwicklung und neue Attacken
Nicht direkt von Levels auf Fitness übersetzt werden sollte das Erlernen von neuen Attacken: So müsste man sein Team nur ein mal fit machen, damit es alle Attacken beherrscht, bei späterem Training würde nichts mehr passieren. So würde das Spiel sehr langweilig, wenn man nicht ständig Pokémon auswechselt. Noch absurder wird es mit den Weiterentwicklungen: Entweder die Entwicklung kostet Fitness oder es würden bei mehreren Stufen alle direkt nacheinander erfolgen. Danach wäre auch hier Langeweile angesagt.

Im Pokémon-Reboot bietet hier ein bisher nicht erwähntes Kernelement der Serie die Lösung: Der Zufall. Man könnte noch nur die erscheinenden Gegner im hohen Gras (und in Höhlen, etc.) auswürfeln, sondern auch gelernte Attacken und Weiterentwicklungen. Je nach Fitness-Level variiert die Wahrscheinlichkeit, eine bestimmte Attacke zu erlernen oder sich weiter zu entwickeln. Es können natürlich noch weitere Einflussgrößen hinzu kommen, um das Spiel interessanter zu gestalten: Beherrscht der Gegner eine Attacke, verdoppelt sich die Wahrscheinlichkeit, dass das eigene Pokémon die Attacke selbst erlernt. Hat sich ein Pokémon noch nicht entwickelt? Motiviere es, indem du es mit guten Beispielen (höheren Entwicklungen von anderen Pokeḿon) umgibst! Und zu guter Letzt könnten natürlich auch die Orden – also der Fortschritt des Spielers – eine Rolle spielen. Damit wäre das Spielgefühl fast wieder klassisch.

Das Erweitertes-Triforce-Problem

Eigentlich sollte ich mich zur Zeit vor allem mit der Wiederholung von Datenanalyse (mathematisches Nebenfach im Physikstudium) beschäftigen, doch eine mathematische These, die mir während des Übens in den Sinn gekommen ist, lässt mich nicht mehr los:

N = (n+1)·n/2 beliebig in einer Ebene verteilte Punkte lassen sich jeweils paarweise so durch gerade, sich nicht kreuzende Linien verbinden, sodass

  1. an 3 Punkten je zwei,
  2. an 2·(n-2) Punkten je vier und
  3. an den übrigen Punkten je sechs Linien enden.

Nach einigen Diskussionen mit Freunden und Kollegen hat das Ding mittlerweile den Namen „Erweitertes-Triforce-Problem“ bekommen, aber leider noch keine Lösung. Der Name geht darauf zurück, dass sich für eine gleichmäßige Anordnung mit n=3 ein bekanntes Bild ergibt.

(cc-by-nc-nd) Jordi Gomara
TRIFORCE (cc-by-nc-nd, Jordi Gomara)

Nach mehreren Stunden Überlegung habe ich nun eine gute Idee für einen „Entknotungsalgorithmus“, der – sollte er funktionieren – das n-stufige Triforce auf ein (n-1)-stufiges zurückführt. (Ein Hoch auf die vollständige Induktion!) Falls jemand ein Gegenbeispiel oder einen Beweis hat, ehe ich einen finde: Diejenige Person, die das Problem löst, bekommt ein Bier von mir. Ansonsten wird dieses Problem mich vermutlich noch deutlich länger beschäftigen: Der Entknotungsalgorithmus müsste schließlich auch bewiesen werden, das Problem ist also nur verlagert.

Serverumzug (snft.de)

Um Verwunderung vorzubeugen: Ich bin von patrikschoenfeldt.de auf die Vier-Buchstaben-Domain snft.de umgezogen. Der Grund hierfür ist der Wechsel meines Webspace-Anbieters: Ich wollte den Umzug ohne (zusätzliche) Downtime gestalten, nachdem ein Problem beim alten Provider schon für ein paar Tage offline gesorgt hat. Vermutlich wird die URL aber wieder zurück gesetzt, sobald alles zufriedenstellend läuft. Die etwas merkwürdig abgekürzte Form meines Nachnamens ist ja nicht unbedingt intuitiv – zumindest wenn man nicht Pokémon („PKMN“) gespielt hat.

Update (29. Oktober): snft.de ist jetzt der URL-Shortener für meine längere Domain.