Seehofer sucht Schuld für Terroranschlag bei Spielern
Sunday, 13. October 2019
Das perfide an Horst Seehofers Schuldsuche in der Gamerszene ist, dass er damit Denkweisen des Naziterroristen kopiert. Nein, er plant keinen Anschlag. Aber er sucht die Schuld für etwas bei Menschen einer vermeintlichen Gruppe, zu der er nicht gehört und die er nicht versteht.
Dabei ist diese Gruppe überhaupt keine homogene und hat sie natürlich nichts damit zu tun, für was diese beiden Männer Schuldige suchen.
Nicht minder perfide ist dieser Versuch der Ablenkung in diesem kritischen historischen Moment. Hey, hier laufen Nazis herum und erschießen Menschen, versuchen Juden in Synagogen zu ermorden! Ihr habt eine Nazipartei im Parlament, die Umfragen und Wahlen gewinnt! Und der zuständige Minister wettert gegen Menschen, die digitale Spiele spielen. Das ist doch unfassbar. Wie stark müssen da alte Feindbilder der konservativen Technikfeinde eingebrannt sein, wie stark die Verteidigungsstrukturen gegen die Erkenntnis, dass die BRD ein Naziproblem hat? Das seit vielen Jahren besteht und immer ignoriert wurde, jetzt aber nicht mehr ignoriert werden kann?
Warum ist Seehofer überhaupt immer noch im Amt? Nach seiner Freude über die 69 abgeschobenen Afghanen zum Geburtstag wäre es bereits an der Zeit gewesen zu gehen.
Es muss Schluss sein mit dieser Hetze, ob sie jetzt von Seehofer oder von Künast kommt. Millionen Deutsche spielen, 34 Millionen, ein Drittel des Landes. Was von dieser Masse einer organisierten Szene ähnelt hat schon lange gezeigt, dass solche Angriffe nicht geduldet werden (siehe auch die harten Worte von Jörg Langer bei GamersGlobal). Wenn Politiker angesichts der Herausforderungen dieser unsteten Zeit, bei Naziterroristen, immer noch in den Feindbildern der 90er denken, wenn sie zu Schablonen des Antiprogressismus des Ende der Geschichte greifen statt sich auf Antiterrorismus zu konzentrieren, dann haben sie offensichtlich die Fähigkeit zur Analyse der Situation verloren, sind sie in Machtpositionen ungeeignet.
Seehofer muss zurücktreten. Eine solchen Terrorangriff für konservative Feindbildpflege zu missbrauchen ist verantwortungslos, es ist unfähig, es ist unerträglich.
Meine schwarze Liste
Sunday, 13. October 2019
Aber alle Unternehmen müssen doch immer den Gewinn maximieren! Nein, müssen sie nicht. Unternehmen müssen abwägen, zwischen kurzfristigen und langfristigen Zielen, aber auch zwischen gesellschaftlicher Verantwortung und Profitstreben. Und davon abgesehen, Unternehmen wie uberspace und manitu zeigen, dass man trotz Profitstreben einen guten Umgang mit Kunden pflegen kann. Andere verarschen ihre Kunden oder verhalten sich schlichtweg böse. Welche Unternehmen haben es sich so weit mit mir verdorben, dass ich mit ihnen und ihren Produkten definitiv gar nichts zu tun haben will? Welche versuche ich zu meiden wenn möglich? Beide Arten von Unternehmen liste ich hier.
Lenovo (plus Medion und Motorola)
Meine Auseinandersetzung mit Lenovo ist hier im Blog nachzulesen. In Kurz: Der Laptop ging nach wenigen Monaten kaputt, Lenovo weigerte sich den kaputten Bildschirm zu reparieren, weil ein USB-Anschluss ebenfalls kaputtgegangen war. Genau.
Abgesehen von der eigenen Erfahrung wäre die vorinstallierte Malware wie Superfish sowieso ein Grund, Lenovo auf diese Liste aufzunehmen.
Mit Lenovo im Boot sind Motorola und Medion, weil beide Teil des Konzerns. Medion insbesondere war für die Reparatur zuständig und hat das falsche Reparaturgutachten geschrieben.
Inwiefern schränkt mich das ein? Ein bisschen. Lenovo macht ein paar ordentliche Tablets, Motorola vernünftige Telefone mit Android. Aber das Wissen, eine schlechte Firma zu vermeiden und bei Lenovoprodukten ohne Garantie dazustehen macht die Alternativensuche einfach.
Apple
Mein einziger echter Kontakt mit Apple war in einem Schülerpraktikum, als die Macs im Redaktionsraum der Lokalzeitung wirklich fürchterlich zu bedienen waren, außerdem keinen ordentlichen Browser hatten. Aber das ist nicht der Grund für den Eintrag hier. Es gibt zwei andere: Das Herausgeben der Verschlüsselungskeys an die chinesische Regierung und die Verbannung von HKmap.live aus dem App-Store, das von Demonstranten in Hongkong in ihrem Freiheitskampf genutzt wurde.
Gegen Apple spricht noch viel mehr: Die konstante Beschränkung der Nutzerfreiheit zugunsten des Einsperrens in das eigene Ökosystem, die schlechte Qualität der Produkte (kaputte Tastatur, Flexgate) und die absurden Preise.
Inwiefern schränkt mich das ein? Gar nicht. Produkte von Apple wären sowieso keine Option für mich.
Bioware
Da baut der früher beste Rollenspielproduzent eine epische SciFi-Trilogie mit einem Fokus auf Entscheidungen und verspricht, dass alle Entscheidungen die Spielwelt und das Ende beeinflussen werden. Anders als in anderen Spielen werde es keine Ende geben, bei dem der Spieler schließlich zwischen drei Knöpfen und so das Ende auswählt. Und baut dann im Finale der Trilogie ein Ende, bei dem der Spieler mit einem von drei Knöpfen das Ende auswählt.
Das Ende hatte noch viel mehr Probleme. Vor allem: Anstatt die Konsequenzen von Entscheidungen zu zeigen (z.B. wie die geretteten Kroganer in einer kritischen Situation durch eine Wand brechen, oder eben wenn verfeindet nicht) wurde ein Highscore hochgezählt. Dazu kommen die Lügen über die Abzock-DLCs. Widerlich.
Inwiefern schränkt mich das ein? Da Biowares Spiele nach Mass Effect 3 alle richtig schlecht waren scheinbar gar nicht. Und das Studio ist wohl tot, dass von dort nochmal ein gutes Spiel kommt unwahrscheinlich.
Microsoft
Klar, die Feindschaft gegen Linux war hier der Auslöser. Linux sei ein Krebsgeschwür, mit dieser Haltung kann man wunderbar eine Feindschaft beginnen. Aber hat Microsoft sich davon nicht inzwischen distanziert? Scheinbar, ja. Und Microsoft alte Feindschaft nicht nachzutragen war eine kurze Phase lang auch meine Position. Aber seitdem habe ich nochmal reflektiert, wie meine Erinnerungen an Windows sind und warum ich eine massive Ablehnung verspüre, wenn ich das nutzen soll oder wenn jemand um mich herum das nutzen will. Und der Grund ist simpel: Ich vertraue der Software des Unternehmens nicht.
Windows ist unfrei und spioniert den Nutzer aus. Unter Windows XP fing es an, dass verschiedene Spionagefunktionen ausgeschaltet werden sollten. Mit Windows 10 ist diese Entwicklung auf eine Spitze getrieben, mit Werbung in der Oberfläche, nicht mehr abschaltbaren Spionagefunktionen und dem zunehmenden Zwang, das lokale Betriebssytem mit einem Online-Nutzeraccount zu verbinden. Sprich: Proprietäre Software von einer Firma, die keinen Respekt vor der Privatsphäre ihrer Nutzer hat.
Inwiefern schränkt mich das ein? Ich bin Linuxer, auf der Ebene also gar nicht. Github gehört jetzt zu Microsoft, aber bisher waren da noch keine negativen Entwicklungen zu verspüren. Microsoft macht manchmal gute Hardware, da ist meine Ablehnung nicht absolut.
Bei Google ist die Ablehnung auch nicht absolut. Denn Google fand ich mal richtig toll. Don't be evil, ich glaubte ihnen das. Doch dann wurde diese Zuneigung mehr und mehr enttäuscht. Das Abschalten von Google Reader, die nutzerfeindliche Positionierung in den Nymwars (als Google G+-Nutzer zwingen wollte, ihren realen Namen anzugeben und gleichzeitig diesen Account mit Youtube etc. zu verknüpfen versuchte, was zu massiven Problemen führte), die Ablehnung des freien Netzes zugunsten von eigenen geschlossenen Plattformen (z.B. die abgeschaltete XMPP-Verbindung von Gtalk/Hangout), dass von mir genutzte APIs entweder wegfielen oder nur mit hinterlegter Kreditkarte unter enormen finanziellen Risiko nutzbar wurden. Und ja, auch die Position pro Diskriminierung beim Google-Memo lehne ich ab.
Außerdem wurde mir klar, wie gefährlich Google für mich werden kann, wenn alle meine Zugänge und Emails über einen Google-Account laufen, Google aber mittlerweile mehrfach Accounts sperrte und damit Netzexistenzen vernichtete. Seitdem ist soviel wie möglich von mir nicht mehr bei Google, was jetzt schon seit Jahren sehr gut funktioniert.
Inwiefern schränkt mich das ein? Gar nicht, weil es kein Komplett-Boykott ist. Die Webmastertools, die benutze ich z.B. noch, weil es keinen anderen Zugang zu diesen wichtigen Daten gibt. Und zu Android gibt es noch keine bessere Alternative, wobei mich ein Android ohne Google-Dienste sehr ansprechen würde.
VW
Ich habe kein Auto, aber wenn ich ein Auto kaufen würde wäre es kein VW. Illegale Abschaltvorrichtungen zu installieren und sich dann zu weigern, die Autos zu ersetzen oder zurückzunehmen – in Deutschland zumindest, weil hier durch die Verflechtungen mit der Politik die Chance bestand, damit durchzukommen. Unfassbar, und ich halte das für ein Musterbeispiel für bestehende Art von Korruption in diesem Land. Mal schauen, was die Musterfeststellungsklage bewirkt.
In meinen Augen gehören da noch sehr viele Leute ins Gefängnis, sehr viele Autos müssten weg von der Straße, und der Konzern gehört zerschlagen.
Inwiefern schränkt mich das ein? Gar nicht.
RWE
Die Staatsgewalt einen Wald wegen Brandschutz räumen lassen, der danach gerodet werden soll? Zynischer kann man nicht vorgehen. Auch RWE zeigte die Korruption in Deutschland, da hier ein Unternehmen eine Landesregierung die eigenen Interessen durchsetzen lassen kann, bis kurz vor den Bürgerkrieg. Dementsprechend kein Unternehmen, mit dem ich etwas zu tun haben will, selbst wenn RWE den Machtkampf bisher verloren hat.
Inwiefern schränkt mich das ein? Gar nicht.
Amazon
Zum Abschluss noch etwas, was mich direkter betrifft. Meine Entfremdung von Amazon konnten Blogleser nachverfolgen. Die Fälschungen auf der Plattform, die schlechte Suchfunktion, die unbrauchbaren Reviews. Es gipfelte in einem Supportversagen, seit dem ich das Unternehmen definitiv meide.
Allerdings geht es nicht so weit, dass ich Amazon auch von pc-kombo entfernt habe. Dafür sehen das zu viele Leute noch anders, und meine Ablehnung hier ist nicht fundamental.
Inwiefern schränkt mich das ein? Wenn etwas gekauft werden soll muss ich eben nach anderen Shops suchen. Bisher war das (wie von Dee prophezeit) kein Problem, Käufe aber auch sehr selten.
Louis Begley: Die Schmidt-Trilogie
Tuesday, 8. October 2019
Begleys Reihe über Schmidt hatte ich vor Jahren schonmal gelesen, den dritten Teil angesichts seines Erscheinungsdatums vor nicht zu langer Zeit, aber jetzt nochmal im Original und alle hintereinander.
Der erste und der zweite Teil fließen ineinander. Der dritte unterscheidet sich deutlicher. In allen ist Schmidt ein alter Mann, ein ehemaliger Anwalt. Seine Frau ist gestorben. Seine Tochter Charlotte ist grenzdebil und ihm gegenüber feindlich eingestellt, ihr Ehemann und seine Familie passen dazu. Einen Freundeskreis glaubt er nicht zu haben (es wird angedeutet, dass das nicht stimmt und die Isolation selbstgewählt ist), abgesehen von einem jüdischen Filmemacher, ein Studienfreund.
Spoilerwarnung
Dieses Szenario wird in About Schmidt beschrieben. Trauer, Isolation und Zurückweisung würde ich als die Hauptthemen sehen. Interessant: Schmidt ist kein sympathischer Charakter. Er ist nicht amoralisch, anders als ein dem Buch angehängter Reviewauszug ihn beschreibt. Er betrog seine Frau und sieht darin auch kein echtes Problem, vll ist das damit gemeint, vielmehr aber bewertet er das einfach nach angerichtetem Schaden und Diskretion. Nein, da ist schon eine Moral, aber er hat gleichzeitig immer wieder Kommentare, Gedankengänge und Verhaltensweisen drauf, die ihn zu einem Unsympathen machen. Zum Beispiel wenn er den Mann seiner Tochter verachtet, weil er nur arbeitet und nichtmal versucht Bücher zu lesen, er selbst allerdings in dem Alter auch nur arbeitete und immer noch jedes mal nach drei Seiten seines Buches einschläft. Gleichzeitig ist da aber diese berechtigte Verletztheit, die Ungerechtigkeit der Welt und seiner Familie ihm gegenüber, sein Suchen nach Besserung – als Leser gewinnt er einen dann doch.
Wiederkehrendes Motiv Begleys ist Schmidts frühere Firma, die immer wieder sein Denken bestimmt, Teil seiner Identität, aber auch Ort mehrfachen Verrats (der alte Freund, der ihn rausdrängte; die Pensionsbezüge, die vertragswidrig gekürzt werden sollen).
Stark ist dieses Bild, wie er in seiner Küche sitzt und aus Einsamkeit und Zuneigung gerne Charlotte und ihren Mann im Gästehaus besuchen würde, es aber aus Selbstrespekt und Sturheit nicht tut, weil er ja nicht eingeladen wurde. Und aus dieser Zwickmühle nicht rauskommt.
Zwischendurch lernt er Carrie kennen, eine zwanzigjährige Kellnerin mit …ungewöhnlichem(?) Sexualverhalten. Mit ihr beginnt er gegen Ende einen neuen Lebensabschnitt und entwickelt dabei so etwas wie Unabhängigkeit, eine Existenz außerhalb des familiären Dramas.
Schmidt Delivered erzählt die direkte Folgezeit. Wie prophezeit endet die Beziehung mit Carrie, wenn auch nicht im großen Streit. Seine Tochter durchlebt ein paar Höhen und Tiefen, aber sie bleibt ihm fremd, wobei sie gegen Ende einen Neuanfang vereinbaren. Er gewinnt einen neuen Freund, einen Milliardär. Dieser hat eine Stiftung (angelehnt an George Soros?) und bietet die Leiterrolle Schmidt an. Der zögert erst, ein größerer Diskussionspunkt, nimmt dann aber doch an. So bekommt er einen neuen Lebensinhalt.
Dieser Abschnitt ist so kurz, weil im Grunde im zweiten Roman nicht viel passiert. Das Hauptinteresse hier ist, dass unklar bleibt was passieren wird. Schmidt lernt, er kämpft, mit sich selbst und seiner Vergangenheit, mit seiner Moral und der Amoral seiner missratenen Tochter, mit eigenen Fehlern und Fehlern anderer. Entsprechend ist sein Zögern ob der Leiterrolle ein großes Thema: Was steckt dahinter? Berechtigte Angst vor dem Einfluss des Milliardärs, will der wirklich nur mit ihm spielen wie befürchtet, oder ist da echte Freundschaft? Begley selbst hat einen Gastauftritt als Gast des Milliardärs, als Autor mit ähnlichem Hintergrund, sozial unfähigen Widerling (wenn Begley sich selbst wirklich so sieht erklärt das viel) und einer bald ihm untreuen Ehefrau. Auch dieser Auftritt passt zu der aufgebauten Spannung: Was (welches Grauen) verbirgt sich dahinter? Wie sollten sich Menschen anderen Menschen gegenüber verhalten?
Schmidt nötigt dem Leser insgesamt Respekt ab, wie er die Demütigung des Alters und der Zurückweisungen durch Carrie nicht nur erträgt, sondern in eine positive Beziehung umwandelt. In der Diskussion der kurzen Handlung lernt er, er bessert sich, legt die Grundlage für die Erwachsenwerdung im Finale. Am Ende und nach dem verabredeten Neuanfang mit seiner Tochter klopft er in Paris an eine Haustür; überdeutlich, dass hier mit besagtem Finale ein neuer Lebensabschnitt anfangen wird.
Schmidt Steps Back beginnt mit einer Frau namens Alice, die ihn besuchen kommt – sie wartete hinter der Tür in Paris. Retrospektiv wird dann erzählt, wie es zu dem Besuch kam. Die Handlung umfasst mehr Jahre als die vorherigen Bücher, Schmidt ist deutlich älter. Diese Erzählperspektive macht den Roman anders als die vorherigen, aber auch Schmidt ist gewandelt. Dadurch ändert sich die Wahrnehmung: Vorher war nicht klar, ob die angeheiratete Familie seiner Tochter wirklich so furchtbar war oder Schmidt nicht vielmehr ein Arsch. Jetzt wird deutlich, dass sie bis auf den Vater tatsächlich widerwärtig waren, sie sein Geld stehlen und dafür die gestörte Tochter instrumentalisieren wollten. Dementsprechend eskaliert die Beziehung zu ihr, der Neuanfang scheitert zuerst. Doch nach einer Fehlgeburt landet sie in der Psychatrie, was diese Dynamik aufbricht.
Die Beziehung mit Alice scheitert zunächst ebenfalls, denn im Gegensatz zu seiner Idealisierung (was er mit Frauen immer macht, sie hochzuidealisieren, wenn ein alter Körper ihn nicht zu sehr anekelt – was er erst mit Alice im Greisenalter überwindet) lügt sie ihn mehrmals an, womit er schlecht umgeht. Doch wir wissen ja schon, dass sie am Ende doch zu ihm reist.
Furchtbar: Wie Charlotte stirbt, nachdem sie sich aus ihrer Depression gerissen und von den Manipulatoren befreit hatte und anfing, eine positive Beziehung zu Schmidt und einem neuen Mann aufzubauen. Wobei Begley diese Entwicklung meisterhaft andeutet, indem ihre Annäherung über Katastrophen in den Nachrichten als Gesprächsthema stattfindet. Beim ersten Lesen verpasste ich die Offensichtlichkeit darin, aber es erschafft auch dann eine üble Vorahnung.
Mehr noch als die ersten beiden Romane ist der dritte Teil durch diesen Kniff ein Gesellschaftsroman. Schmidt bekommt die großen Ereignisse der USA mit – der Bombenanschlag in Oklahoma, Clintons Impeachement, Bushs Wahlsieg, 9/11, prophezeit die folgenden Kriege, freut sich über Obamas Wahlsieg (ein großer Schritt im Vergleich zum jüngeren Schmidt aus dem ersten Teil), unwissend über die Katastrophe namens Trump, welche die USA später erleiden wird. In der Reaktion Schmidts auf diese Geschehnisse kommentiert Begley die Entwicklung der amerikanischen Gesellschaft.
Und dann ist da Schmidt selbst. Er sagt es auch: Er sei erwachsen geworden. Und man muss zustimmen. Der Schmidt im dritten Teil ist ein kompletterer Mensch als im ersten. Er löst sozial schwierige Situationen, ohne auf die Führung einer Frau angewiesen zu sein. Er weiß, wann er schweigen muss, wann er Geld geben sollte und wann es besser verweigert wird. Wie erwähnt, sein Rassismus ist verschwunden. Vor allem aber ist da der Gegensatz zum Schmidt vor der Rente, der in einem kaputten Scheinleben vor sich hin arbeitete, unglücklich in der Arbeit, der Ehe, seinen Affären, im Bett und im Sozialen – jetzt aber eine Frau als Erlösung akzeptiert, die sich der Rolle der perfekten Ehefrau und Gastgeberin explizit verweigert. Auch für ihn selbst bedeutet das eine andere Auffassung von Lebenszweck und Glück.
Alle drei Romanen funktionieren gut. Begleys Charaktere sieht man so sonst nicht. Und er beschreibt auf der einen Seite ein Vorzeigeleben, um es dann zu vernichten, indem er die Grausamkeiten und den fehlenden Lebenssinn von Schmidt vor seiner Rente zeigt. Dann aber folgt – auch nicht besser – die Einsamkeit und die Isolation im Alter, verstärkt durch die widerliche Familie seiner Tochter und ihr unmögliches Verhalten. Das ist nachvollziehbar, als Leser fühlt man diese existentiellen Probleme und Ausweglosigkeiten. Und doch gibt es Erlösung. In dem Ganzen ist auch eine Offenheit, eine Klarheit im Denken, die man sonst zu selten findet. Typisch für Begley ist eine eher widerliche Sexualität, die sich durch alle drei Romane zieht. Ob man die akzeptieren kann wird vom Leser abhängen. Auch dieses extrem reiche Leben – keiner hier hat ernsthafte Geldsorgen – wird den wenigsten Lesern bekannt sein, aber Begley porträtiert diese Klasse ja auch und macht damit ihr Denken verständlicher.
Im Nachvollziehbarmachen eigentlich sehr ferner Lebenssituationen liegt Begleys enormes Talent, das in allen drei Schmidt-Romanen voll durchschlägt. Entsprechend großartig und lesenswert sind sie dann auch.
Woran scheitern Software-Nutzer wirklich?
Sunday, 6. October 2019
Teil meiner derzeitigen Arbeit ist es, Software zu testen. Weniger, ob sie funktioniert, sondern ob Nutzer mit ihr zurechtkommen. Wenn ein Unternehmen eine neue Lagerverwaltungssoftware einführt könnte es uns beauftragen, zu testen ob die Angestellten im Lager mit dieser Software zurechtkommen. Oft geschieht das dann mit einem Nutzertest, in dem die Testnutzer mehrere typische Aufgaben zu erledigen versuchen.
Wenn die Aufgabe nicht erledigt werden kann, woran scheitern die Leute? Eigentlich nie an sich selbst, der Fehler liegt fast immer bei der Software. Und viele Probleme sind typisch, sie finden sich immer wieder. Hier ist eine Auswahl:
1. Flat Design
Ist dieser Designtrend nicht längst vorbei? Doch trotzdem sehe ich es noch, und alle damit verbundenen Probleme. Das Problem ist das Weglassen von Tiefeninformationen – Flatness eben. Wird das schlecht umgesetzt, sehen Buttons nicht mehr wie Buttons aus, sondern es werden einfach die Symbole, die sonst in den Buttons wären, auf der Oberfläche verteilt.
Doch ein Symbol hat keine Affordance. Ein Button schon. Sieht ein Nutzer einen Button weiß er: Da kann ich draufklicken! Er weiß nicht unbedingt was der Button dann bewirken wird, aber zumindest die Bedienung ist klar. Bei schlecht umgesetztem Flat Design ist nicht klar, welche Symbole angeklickt werden können. Effekt: Der Nutzer sitzt ratlos vor dem Bildschirm und weiß nicht was er tun soll.
Diese Kritik ist so alt wie der Designtrend selbst. Doch sie ist nicht theoretisch, sondern vielfach beobachtete Realität.
2. WTF-Momente
Stell dir vor, du willst ein Bild des Firefox-Logos speichern. Du gehst auf die Webseite, rechtsklickst, wählst Speichern unter, vergibst einen Namen und drückst auf Speichern. Doch mitnichten: Stattdessen taucht eine Meldung auf, "Der Dateiname muss mit Bild oder Textdatei beginnen." Absurd? Ja, ein echter WTF-Moment. In einer ähnlichen Situation innerhalb der getesteten Software weigerten sich die Testnutzer, der Meldung glauben zu schenken. Sie wurde gelesen und ignoriert und nach einer anderen Möglichkeit gesucht, das Element zu speichern. Bis wir eingriffen und erklärten, dass der Meldung wirklich gefolgt werden muss.
Die Nutzer konnten Deutsch, sie hätten die Meldung verstehen können. Aber ihr Inhalt war so abstrus, dass die Nutzer sie instinktiv ignorierten. Bewegt sich Software so völlig außerhalb des Erwartbaren, hören Nutzer auf zu denken und verweigern die Kooperation.
3. Falsche Führung
Eine Liste mit wichtigen Messwerten, ein neuer Wert soll eingetragen werden. Das ist nicht ganz einfach: Ein per Flat Design versteckter Hinzufügen-Knopf am äußersten Rand muss gefunden werden. Was ist einfacher? Einen Listeneintrag anklicken. Wodurch ein neues Formular aufgeht, in dem ein Wert eintragbar ist, der dann aber den alten Messwert überschreibt. Völlig ohne Warnung.
Die Firma hätte massenhaft an Daten verloren. Da die falsche Interaktion einfach war, und die richtige schwieriger.
4. Fehlende Führung
Problematisch ist auch, wenn einfach nicht klar ist wie die Aufgabe zu erledigen ist. Das passiert gerne bei Software, die im Grunde eine Aneinanderreihung von Formularen ist, aber auch wenn etwas erschaffen werden kann. Wie fange ich an? Wo muss ich hin? Besonders wenn die Oberfläche sowieso schon kompliziert ist sollte zumindest das deutlich sein.
5. Einklappbare Elemente
Das verbindet sich manchmal mit Flat Design, ist aber auch ansonsten problematisch. UI-Elemente wegklappen zu können funktioniert nicht. Bei Zusatzinformationen noch angemessen, gibt es manchmal Interfaces, in denen ganze Abschnitte ein- und ausgeklappt werden können. Spart Platz und macht die Software anpassbarer, aber die Orientierung gerade am Anfang sehr viel schwieriger.
So zum Beispiel
Wenn jetzt hier nicht nur weiterer Text folgen würde, sondern ein ganzes Formular, dann wäre das wahrscheinlich verwirrend.
6. Text als Eingabewidget
Ich meine damit diese Formulare, in denen die Eingabefelder als Text angezeigt werden, erst bei Hovern und Anklicken werden sie transformiert. Sehr verwirrend, weil nicht klar wird welche Texte Eingabefelder und welche einfach nur Labels sind. Die Affordances werden verschluckt. Dann muss einzeln gelernt werden, wie das Formular aufgebaut ist, anstatt es auf einen Blick erkennen zu können.
7. Und besonders: Falsche Benennung
Das ist das wirklich große Problem: Nicht die Sprache der Nutzer sprechen. Wenn ich in einer Bahnapp meine Bahntickets suche, schaue ich unter Tickets. Nicht unter Ressourcenbelegungen. Gerade wenn schon bestehende Software abgelöst werden soll oder wenn es feststehende Begrifflichkeiten gibt macht die falsche Sprache die Nutzung von Software sehr schwierig. Das geht dann so weit, dass in manche Programmpunkte nicht hineingeschaut wird, weil es so falsch benannt ist, dass es in den Augen der Nutzer etwas ganz anderes sein muss. Ich würde ja auch nicht unter Kalender nach meinen gekaufen Bahntickets suchen.
Wie gesagt, nur ein Auszug. Es gibt noch eine Reihe typischer Probleme mehr – nicht zurückgehen können zum Beispiel, Übergänge nicht anzeigen, aber auch wenn Software schlicht zu langsam ist. Für mich war es interessant zu sehen wie die Probleme sich ähneln und wie verdammt effektiv es ist, in relativ einfachen Tests echte Nutzer vor die Software zu setzen. Alle diese Benutzungsprobleme lassen sich dann finden. Man muss nur vorher herausfinden, welche Aufgabe mithilfe der Software erledigt werden soll.
Meine besten Schuhe
Sunday, 29. September 2019
Waren ein Verlegenheitskauf in Frankreich bei minelli:
Meine alten waren kaputt, ich brauchte und wollte auch definitiv neue. Ich hatte schon alle anderen Herrenschuhe im Laden anprobiert, aber keiner passte. Die im Bild zu sehenden hatte ich vorher direkt aussortiert: Zu labbrig, nicht was ich suchte. Dann probierte ich das Paar am Ende eben doch an – und es saß perfekt. Daher kaufte ich diese Schuhe, trotz des ungewohnten Stils.
Dass sie weich sind ist das besondere an ihnen. Das Leder an der Oberseite ist weich, die Sohle ist dünn und weich. Dazu sind sie schmal, was mir zugute kommt. Als schmaler Schuh nah am Fuß, aber gleichzeitig so weich dass da nichts wehtun kann: Mir war vorher nicht klar, dass ich danach suchen sollte (deswegen schreibe ich auch hier drüber). Besonders die Sohle: Schuhe mit einer weicher Oberseite findet man schonmal. Aber die flexible Sohle, das ist selten. Beides zusammen ist noch seltener. Es ist kein Wunder, dass ich die Jahre vorher nicht über soetwas gestolpert bin – und jetzt im Vergleich weiß ich, wie selten ich komfortable Schuhe hatte.
Der Kauf ist schon etwas her, ich habe bereits nach Nachfolgern gesucht. Das war richtig hart. Turnschuhe gehen in die richtige Richtung da weich, aber ihre gefederten dicken Sohlen sind wieder komplett verkehrt, vom Stil mal abgesehen. Formellere Lederschuhe haben nie die richtige Sohle (oder gibt es da einen Typ Schuh, der meinem Paar hier entspricht und mir bisher nur entging?). Mokassins wollte ich vom Stil nicht.
Aber weiche dünne Sohle, die dafür sorgt dass man den Schuh kaum spürt: Das klingt doch wie diese Barfußschuhe! Vivobarefoot fand ich zuerst und wurden mir überzeugend empfohlen. Aber in derem Konzept sind Schuhe vorne richtig breit, damit konnte ich mich einfach nicht anfreunden. Daher landete ich letzten Endes bei einem Barfußschuh von leguano, dem city blue. Vom Laufen her klasse, da ähnelt er wirklich sehr meinen bisherigen, wobei die Sohle mit ihren kleinen Kugeln mehr noch den Boden spüren lässt. Nachteil: Es darf nicht regnen.
Daher sind die oben gezeigten immer noch praktischer. Doch das eigentlich tolle an ihnen: Durch diesen Zufallsfund weiß ich jetzt, welche Art von Schuh ich haben will und worauf ich achten muss. Das macht Schuhe kaufen nicht einfacher, aber doch weniger frustrierend, denn vorher wahllos nach dem Aussehen durchzuprobieren und fast nie richtig glücklich mit der eigenen Wahl zu sein ist ja schon ätzend gewesen.
Gute Restaurants in Düsseldorf
Thursday, 12. September 2019
Nach Düsseldorf hat es mich gerade der Arbeit wegen für ein paar Tage verschlagen. Hotelabende bedeuten Essen gehen und ich hatte dabei enorm viel Glück: Alle Restaurants waren gut. Hier ist die Liste, in Reihenfolge des Besuchs:
Limas RestoBar
Das peruanische Restaurant in Hotelnähe war ziemlich voll (gutes Zeichen: und voller spanischer Stimmen), aber glücklicherweise war noch Platz für uns. Jalea Mixta war mein Essen, Fisch und Meeresfrüchte paniert mit Beilage. Gut, aber richtig toll war das Getränk: Chicha morada, ein alkoholfreies Maisgetränk, super erfrischend, süß aber nicht zu süß, ganz leicht malzig(?) – schwer zu beschreiben, aber eben super. Ich ging daher besonders zufrieden raus. Ich fand aber auch sonst alles einfach richtig nett. Allerdings war das Essen nicht ganz günstig.
Beispielfoto von young shanahan from Bogotá, Colombia - Chicha Morada., CC BY 2.0, Direktlink
Die Kurve
Ein israelisches Restaurant mehr in der Stadt. Wir trafen hier einen Freund von mir und da ein freudiges Ereignis musste dann ja auch das Essen schmecken. Gut war es auch, was wohl viele dachten, ohne Reservierung hätten wir keinen Tisch bekommen. Pargit, ein Hähnchen-Spieß, passte, das probierte Laffa-Brot war hervorragend. Die Tajine sei gut gewesen, aber in Troyes sah sie noch besser aus. Preise wieder eher höher.
eat TOKYO Nordstrasse
Sushi und mehr! Die Webseite ist absurderweise tatsächlich größtenteils auf japanisch. Ich war noch nicht in Japan und weiß daher nicht wie authentisch das Essen war. Aber ich habe in Europa öfter mal Sushi und Ramen gegessen und damit verglichen war das einwandfrei. Die von mir gewählte Sushi-Bentobox war noch dazu enorm, sie brachten mir erst nur eine Hälfte und ich hätte mich ohne die zweite nicht beschwert gehabt! Dass ich einen Teil eine der enthaltene Speisen (weiße runde Streifen im Salat, die ich nicht einordnen konnte – Nudeln?) nicht mochte trübte den positiven Gesamteindruck nicht. Und ich war pappsatt. Der Preis dafür war mehr als okay.
Lunitas
Im Lunitas – wieder mehr noch in Hotelnähe als die letzten beiden – gab es Empanadas. Und tatsächlich gibt es dort auch nur Empanadas, mit Beilagen und Getränken. Das ist ein kolumbianisches Gericht bestehend aus einer frittierten Maisteighülle mit Füllung. Die Füllungen sind divers, klassisch mit Reis und Fleisch und auch mit einigen sicher nicht authentischen Varianten (wobei ich die Variante Hawaii ziemlich gut fand!), manche mit Käse, manche sogar süß. Dazu kommen mehrere Soßen.
Das Essen kam sehr schnell an, die Leute hinter der Theke sprachen definitiv spanisch. Frittierte Maisteigtaschen mit Käsefüllung sind natürlich nicht leichtgewichtig, wollte man das entschärfen sollte man sich an die anderen Varianten halten. Die hausgemachten Getränke waren gut, wobei ich im Nachhinein gerne noch das kolumbianische Malzbier (Pony Malta) probiert haben wollte. Naja, vielleicht nächstes mal. Das Menü aus drei Empanadas, zwei Soßen und einem Getränk war das günstigste der Abendessen, aber es war keinen Deut schlechter.
Die Toten Hosen - Der Bofrostmann
Wednesday, 11. September 2019
Andromeda
Friday, 6. September 2019
Andromeda ist eine SciFi-Serie der Nullerjahre. Sie lief damals nach Stargate auf RTL 2 und damit zu spät für mich um sie oft zu sehen, aber früh genug um Teile davon mitzubekommen. Insbesondere den Anfang, der ziemlich toll in das Szenario einführt: Captain Dillan Hunt ist mit seinem Schiff, der Andromeda – gleichzeitig eine KI und später ein Android – im Einflussgebiet eines schwarzen Lochs gefangen. 300 Jahre später wird er geweckt. Doch das Universum ist nicht mehr wie er es kannte: Statt einem an die Föderation aus Star Trek angelehnten Commonwealth herrscht Anarchie, technologisch ist die Andromeda allen jetzigen Schiffen haushoch überlegen. Also macht er sich daran, mit seiner neuen Crew das Commonwealth wieder aufzubauen.
Was ein Szenario! Ein schöner Gegensatz zu Star Trek. Und im direkten Gegensatz zu Stargate war Andromeda hübscher, hatte mehr Scifi-Elemente, wirkte trotz seiner Seltsamkeit etwas erwachsener. Insbesondere die Protagonisten sind anfangs interessanter, sie haben Konflikte und Geheimnisse.
Aber dann schaut man heutzutage die Serie und sie ist einfach nicht gut.
Andromeda hat einen starken Anfang (evtl blendet da auch etwas die Nostalgie) aber hält das Niveau nicht. Die Serie zerfasert. Wo anfangs mit der Commonwealth-Wiederbelebung und dem Konflikt mit den Nietzscheans ein klares Szenario die Drehbücher vorgibt herrscht später Chaos. Auf einmal gibt es mystische schwarze Kräfte, die Böses wollen. Übernatürliches wird eingebaut und damit zersplittert auch die Konsistenz der Handlung. Ganze Folgen werden surreal, nicht in einem positiveren Sinne, sondern weil sie unverständlich und schlecht geschnitten sind. Teils sind sie klar als Theaterstück geschrieben, aber als Theaterstück ohne Budget für Kostüme oder Kulissen. Besonders krass wird das in der letzten Staffel, die in einer Art Paralleluniversum spielt, in der die Schreiber sich vollständig von der Idee entfernt haben eine verständliche Geschichte zu erzählen.
Aber schon vorher treten die Probleme zutage. Auf der einen Seite wird von Anfang an versucht, Konsistenz in der Erzählung herzustellen – Geschehnisse in vorherigen Folgen werden referenziert, die Hintergrundgeschichten der Charaktere werden nach und nach enthüllt. Auf der anderen Seite wird an der Hintergrundgeschichte willkürlich herumgedoktort. Dann hat Beka Valentine, erst allein im Universum mit ihrer Crew und dann so etwas wie die Partnerin von Dillan, auf einmal hier noch einen Bruder, dort einen Onkel, da eine Drogenabhängigkeit, schließlich statt dem toten Schugglervater einen lebenden mit völlig anderem Hintergrund (aber praktischer Verbindung zur Hauptstory, oder was davon zu dem Zeitpunkt noch übrig ist). Es gibt unzählige Personen, die storygemäß wichtige Figuren in der Handlung sein müssten – als langjähriger Bösewicht oder Verbündeter – die in einer Folge eingeführt und direkt wieder entsorgt werden. Als Zuschauer verliert man so schon vor dem Drift ins Absurde den Zugang zur Serie. Das Grundszenario interessant, die Charaktere nett und das Schiff (beide Aspekte von ihr) hübsch zu finden reicht dann nicht mehr.
In S03E06, Slipfighter the Dogs of War scheint plötzlich das Budget erhöht worden zu sein. Die Folge wäre ohne die vielen Weltraumszenen gar nicht möglich gewesen, trotzdem ist sie dann da. Andromeda war schon vorher im Vergleich zu anderen Scifi-Serien auf eine gewisse Weise effektlastiger, aber bis hierhin war das nur Getrickse. Beispielweise wurde im Grunde immer die gleiche Kulisse benutzt. Auch die Außenansichten der Andromeda und Splitstream-Szenen waren einfach Wiederholungen, ähnlich wie das andere alte SciFi-Serien ja damals auch handhabten. Doch in dieser Folge war praktisch jede Weltraumszene neu. Die CGI wird nicht plötzlich gut und die Drehbuchprobleme werden ab hier nur prominenter, aber doch tat dieser Schub der Serie für einen Moment gut. Denn außer solchen Szenen hatte die Serie zu diesem Zeitpunkt schon nicht mehr viel.
Doch absurderweise für eine Serie ohne tragfähige Story (ab Staffel 3) leidet Andromeda gleichzeitig sehr unter einer schlechten Inszenierung, und das lag nicht am Budget. Beispielweise wenn die Helden, besonders Tyr, in den Feuergefechten ohne Deckung im offenen Gelände stehen können, weil die Feinde immer(!) unter Zielstörungen leiden, reißt das einen halbwegs aufmerksamen Zuschauer einfach raus.
Spätestens ab der vierten Staffel ist die Serie so richtig tot. Man hört es auch direkt: Auf einmal gibt es eine sehr schlechte, total unpassende Hintergrundmusik. Die Story wird noch unzusammenhängender, wenn esoterische Unsinnsstories vorher einzelne Ausrutscher waren häufen sie sich nun. Passend zu dem Quatsch: Es gibt einen neuen Bösewicht, der angeblich seit vielen Jahren die Crew der Andromeda sabotiert und den alle gut kennen, wovon der Zuschauer genau gar nichts weiß. Weil die Figur amateurhaft aus dem Nichts gestampft wurde, anstatt sie ein paar Folgen vorher einzuführen oder ihr Wirken anzudeuten.
Dabei war genau da Potential. Nachdem 3 Staffeln lang das neue Commonwealth sich nicht ein einziges Mal von einer guten Seite gezeigt hat, sondern immer nur Werkzeug, um Dylan korrupte Politiker gegenüberzustellen oder um durch Sabotage zu zerbrechen, fällt ihm in der vierten Staffel auf, dass da vielleicht etwas nicht stimmt. Was ja eigentlich interessant ist: Die naive Vorstellung einer grundguten Sternenflotten-Föderation aus der ersten Staffel wird zum realpolitischen Monster. Aber dass keiner der Protagonisten das vorher auch nur ansatzweise bemerkte ist wieder einmal die schlechte Schreibe der Serie. Geplant hätte der Kniff gut sein können, aus dem Ärmel geschüttelt schadet er nur. Ach so, natürlich ist es auch nicht diese Art von Geschichte, es gibt keine Politik – sondern da wirken esoterische böse Kräfte.
Und so geht es dann langsam zu Ende. Leider ohne Stil, ohne Besserung, wird die Serie schlechter und schlechter um dann viel zu spät auszuplätschern. Erwähnenswert ist da nur noch, wie in der kaputten fünften Staffel völlig ohne Begründung Charaktere an zwei Schauplätzen gleichzeitig auftreten (=wie schlecht geschnitten die Staffel ist) und wie, tatsächlich wohl durch Zauberhand, die Crew auf einmal keine Crew mehr sein will und aus irgendeinem Grund sauer aufeinander ist, ohne dass dies auf in der Serie stattfindender Handlung oder ihrer vorher angelegten Persönlichkeit basiert.
Als ich die Serie auskramte hatte ich wirklich erwartet, dass ich damals den Großteil einer interessanten Serie verpasst hatte und sie nun nachholen könnte. Aber dem war nicht so: Ich hatte damals die Anfänge einer Serie gesehen, die gut hätte werden können, die dafür aber nach dem Anfang viel zu schlecht geschrieben und gemacht war. Schade.
Rubys Twitter-Gem: Rate Limit exceeded vermeiden
Saturday, 31. August 2019
Wenn man mit dem Twitter-gem sucht, ist es einfach in das Rate-Limit zu rennen. Nicht nur, dass man sich darum selbst kümmern muss nicht zu viele Abfragen zu starten: Selbst dann noch löst ein Suchvorgang viele Requests auf einmal aus.
Twitters API nutzt cursoring, das heißt sie gibt dir erstmal nur 100 Ergebnisse und dann einen Verweis auf die nächste Seite, auf der wieder 100 Ergebnisse stehen können, und so weiter. Jeder Abruf einer Seite ist ein Request, und der Twitter-Gem folgt diesem Cursor automatisch:
# @return [Enumerator] def each(start = 0) return to_enum(:each, start) unless block_given? Array(@collection[start..-1]).each do |element| yield(element) end unless last? start = [@collection.size, start].max fetch_next_page # hier each(start, &Proc.new) end self end
Leider gibt es im Gem keinen Parameter um das zu vermeiden. Also musste ich den Code selbst anpassen: In lib/twitter/search_results.rb wird aus
# @return [Boolean] def last? !next_page? end
ein
# @return [Boolean] def last? true end
Dann wird zumindest bei Suchabfragen keinem Cursor gefolgt. Das begrenzt dann auch die Suchergebnismenge auf 100, aber das ist in meinem Anwendungsfall okay.
The Kitchen, offensiv schlecht
Tuesday, 27. August 2019
In The Kitchen führen drei Frauen die kriminellen Geschäfte ihrer Männer weiter, nachdem diese nach einem Raubüberfall ins Gefängnis wandern. Mehr noch, sie übernehmen die Kontrolle der irischen Mafia in Hell's Kitchen, schmieden Allianzen, müssen Gewalt einsetzen und finden ihre Rollen zueinander.
Und all das könnte ein guter Film sein. Stattdessen ist es leider nur eine Ansammlung von Klischees, gefangen in einer hanebüchenen Story. Auffallend auch, wie stark der Film daran scheitert die Entwicklung der Frauen zu zeichnen. Von unterwürfigen Hausfrauen werden sie in einer etwa dreiminütigen Sequenz zu durchgestylten Mafiosi, die problemlos Schutzgelder erpressen, mitleidslos morden und morden lassen und sich dann durch die Mafia wälzen. Dabei wäre genau hier die Story, der langsame Weg vom angepassten Bürger zum skrupellosen Gangster das eigentlich interessante. Stattdessen wird Krise um Krise mit Morden gelöst.
Wobei das nicht heißen soll, dass man die drei in tollen Actionsequenzen sieht. Oder in sonstigen Gangsterszenen. Oder dass sie sonst etwas machen. Nein, nachdem sie am Anfang einmal Geld eingesammelt haben wird über alles weitere nur geredet. Die Action passiert ebenso wie die Charakterverwandlung in kurzen Sequenzen. Im eigentlichen Film reden die Frauen nur über vermeintliche Gangstertaten, und andere reden darüber was die Frauen alles gemacht haben oder reagieren auf sie als seien sie nun Mafiosi. Aber ohne dass man davon irgendetwas sieht, mit wenigen Ausnahmen.
Hat der Film so wirklich gar nichts? Doch, da sind ein-zwei gut gemachte Szenen dabei und die Schauspieler sind nicht verkehrt. Elisabeth Moss ist sogar fast toll, auch wenn ihr Charakter manche Aspekte ihrer typischen Rollen seit Mad Man recycelt, aber wenigstens ist da ein Charakter. Aber ansonsten ist The Kitchen eben offensiv schlecht, wie ein Kinobegleiter richtig bemerkte.
Serendipity 2.3.1
Wednesday, 21. August 2019
Mit 2.3.1 gibt es ein gar nicht so ganz kleines Patch-Release kurz nach der Veröffentlichung von 2.3.0. Es sind vor allem Schönheitskorrekturen wie das nun wieder mögliche Löschen mehrerer Mediendatenbankeinträge auf einmal. Gerade deswegen ist ein höchsterfreuliches Release, das Thomas in seinem Blog zusammen mit weiteren Entwicklungen näher beschreibt.
Verschwörungen und Epstein
Friday, 16. August 2019
Den Tod von Epstein nutzt die Zeit, um gegen Verschwörungstheorien zu wettern. Der Autor Skudlarek vergisst dabei jedoch, dass es manchmal einfach angemessen ist, einen Verdacht zu hegen und eine Missachtung des regulären Ablaufs anzunehmen.
Um das erst einmal klarzumachen: Wer jetzt ohne weitere Fakten brüllt "Der da hat Epstein deswegen ermordet" ist ein Verschwörungsheoretiker, und ein besonders blöder noch dazu. So wie Trump. Und doch: Sich auf die Grundannahme zu stellen, dass da doch höchstwahrscheinlich etwas nicht mit rechten Dingen abgelaufen ist, das ist richtig.
Epstein war nunmal suizidgefährdet und sollte unter Beobachtung stehen. Das schließt mit ein, in einer Zelle zu sein in der Selbstmord sehr schwierig ist, dazu kommen regelmäßige Kontrollgänge, ein halbstündiges in die Zelle schauen. So berichtet auch die Zeit und das verlinkt Skudlarek sogar. Und das passt einfach nicht zusammen mit seinem Tod. Entweder hat da jemand geschlampt, oder jemand hat dafür gesorgt das geschlampt wird, oder jemand hat Epstein direkt umgebracht. Wir wissen es schlichtweg nicht. Aber wir können uns durchaus überlegen, was hier wahrscheinlich ist, wovon wir ausgehen, welchen Informationen wir in dieser Situation vertrauen sollten. Da spielen dann Überlegungen wie "Wer hatte welches Interesse an diesem Geschehen" einfach rein. Das ist auf einer gewissen Ebene vielleicht Spekulation, aber andererseits ist es genau das was jeder immer machen muss um Informationen zu bewerten.
Und das ist berechtigt. Das ist richtig. Es ist überlebensnotwendig. Wir machen es die ganze Zeit: Wenn jemand etwas vielleicht nur deswegen vertritt, um sich selbst zu schützen, ziehen wir seine Aussage erstmal in Zweifel. Und prüfen doppelt. Wenn eine Partei über ihre Regierungsbilanz berichtet orientieren wir uns lieber an Experten, um die tatsächliche Situation einschätzen zu können. Wenn Michael Roth Waffenlieferungen nach Mexiko verteidigt und offensichlich keine Ahnung hat von der politischen Situation in dem Land, dann glauben wir ihm seine Argumente nicht. Das ist dann nicht der kritische Geist eines Verschwörungstheoretikers, sondern einfach nur tatsächlich kritisches Denken. Das ganz normale Abwägen von Informationen.
Und genau so läuft es auch bei Epstein. Fast jedem der sich die Sache anschaut wird klar: Es ist wahrscheinlich, dass einflussreiche Leute an Epsteins Tod Interesse hatten. Das ist die simple Grundlage der dann weitergehenden, absurden Verschwörungstheorien. Aber diese Grundlage ist eben da. Sie nicht wahrzunehmen und zu sagen "Lass das mal die US-Ermittlungsbehörden machen, denen glauben wir dann vorbehaltlos" – das ist genauso eine Verschwörungstheorie. Die völlig unberechtigte Theorie – bar jeder Grundlage, wider dem was wir über die USA wissen – dass man diesem Regime vertrauen könne aufgrund des Wirkens irgendwelcher höheren Mächte. Dass in dieser gescheiterten Demokratie solch eine Situation glaubwürdig aufgeklärt werden würde.
Warum sollte diese Position in irgendeiner Form intelligenter sein als sich einen Schuldigen zu überlegen und sich darauf festzulegen? Es ist es nicht, beides ist bescheuert. Nur dass Skudlarek nicht merkt, dass genauso wie die Verschwörungstheoretiker von Fakten nicht erreicht werden können, das Ausschalten des eigenen Denkens anfällig zum Falschwahrnehmen der Realität macht.
Es gibt in jeder Situation eine Grundannahme eines jeden. Bei mir in dieser: Der wurde ermordet. Das weiß ich natürlich nicht mit irgendeiner Form von Gewissheit, aber gegeben was über den Fall bekannt ist halte ich es für am wahrscheinlichsten. Jetzt werden die Folgeberichte und was die Ermittlungsbehörden verlauten lassen mich entweder von dieser Position abbringen oder nicht. Aber erstmal stehe ich hier.
Und bin damit kein Spinner – sondern Skudlarek und die Zeit ist unberechtigt unkritisch.
Serendipity 2.3
Tuesday, 13. August 2019
Die neue stabile Version 2.3 von Serendipity war nötig. PHP bricht einfach immer mehr als stabile Grundlage weg, überspitzt ausgedrückt – die Versionen werden weniger lange unterstützt und die neuen haben gravierende Änderungen. Also muss Serendipity angepasst werden und die Version mit diesen Anpassungen auch zeitnah erscheinen. In meinem Kopf ist 2.3 solch eine erzwungene Version. Denn nun kann Serendipity mit PHP 7.2, 7.3 und 7.4 laufen, bevor 7.1 wegbricht.
Andererseits ist das der neuen Version gegenüber gar nicht fair. Denn einige der Änderungen – weniger zur Alpha, sondern zur letzten stabilen Version – sollten ziemlich bedeutsam sein und Serendipity deutlich verbessern. Mehr noch, wenn sie in der Zukunft noch mehr Feinschliff erhalten und sich alles mehr noch zu einem organischen Ganzen zusammenfügt. Wo ich mitspielte meine ich damit unter anderem: Die Galleriefunktion (Interface), responsive images (Feintuning), den Maintenance-Modus (für Upgrades) und den neuen voku/simple-cache (Redis!).
Was auch für das Release spricht ist die Commitliste: Es sind viele Verbesserungen vieler Autoren drin. Unter anderem, jeweils ein Beispiel: Mario hat das Timeline-Theme unter PHP 7.2 repariert, Don Chambers es generell aktualisiert, Thomas hat an mehr Stellen Patches beigesteuert als mir klar war (und nebenbei den Überblick behalten auch für 2.1.x sowie das Release gestemmt!), hannob Sicherheitslücken aufgedeckt, Matthias das HTML der Bildunterschriften modernisiert, Garvin die Überarbeitung der Mediendatenbank fertiggestellt und so überhaupt erst möglich gemacht, Mitch hat den Trackbackfresser gefunden und Stephan Brunker nl2br/nl2p verbessert.
Froscon 2019
Sunday, 11. August 2019
HeuteGestern war ich auf der Froscon! War der Anlass eigentlich nur, Dirk über den Weg zu laufen (der am Sonntag einen Workshop über Regexpressions halten wird) besuchte ich doch auch drei Vorträge.
Daniel Fett erklärte viel zu OAuth, argumentierte gegen eine Variante (den implicit Grant) und zeigte generell Sicherheitsprobleme und Lösungen. Supergut vorgetragen und für mich hochspannend, weil das größtenteils auch OIDC und damit das von Portier verwendete Protokoll betrifft. War ein toller Start in die Konferenz.
Oleg Fiksel erklärte was Matrix ist und was sich im letzten Jahr getan hat. Für mich ein Blick über den Tellerrand (und vielleicht etwas für eine Integration in Pipes?) und ein ordentlicher Vortrag, als Nicht-Matrixnutzer für mich nicht ganz so spannend wie die OAuth-Erklärungen. Aber trotzdem nett.
Die Vortragende redete weniger über Pricacy by Design als vielmehr über die Auswirkungen der DSGVO auf Softwareentwicklung im Unternehmen. Ohne gemein sein zu wollen: Das war mir ein bisschen zu unstrukturiert und zu wenig auf die Softwareprojekte anwendbar, an denen ich arbeite. Mit der Verordnung habe ich mich vorher durchaus schon befasst und ich konnte daher hier wenig neues lernen. Erschwerend: Die Publikumsfragen und Diskussionsversuche fand ich teilweise dem Thema nicht angemessen. Aber ist vielleicht auch schwierig bei einem Thema, das als juristisches außerhalb der Komfortzone der Teilnehmer einer IT-Konferenz liegen dürfte und bei dem das Wunschdenken stark ist. Doch so funktionierte der Vortrag für mich leider nicht.
Ansonsten wollte ich noch den Geany-Leuten am Stand Hi sagen und sie für den tollen Editor loben (und vorschlagen, die Funktion mehrere Zeilen auf einmal zu editieren auszubauen), der Platz war aber leider nicht besetzt. Dafür war das Zusammensitzen, Essen und Trinken am Abend ziemlich nett.
Pipes, Stripe und die SCA-Richtlinie
Friday, 9. August 2019
Strong Customer Authentication (SCA) – schon vor einer Weile hatte Stripe vielen Kunden und auch mir geschrieben, dass dadurch Änderungen anstehen. Zukünftig werde das vorgeschrieben sein (schon im September) und daher musste die Stripe-Integration von Pipes angepasst werden. Heute kam noch einmal solch eine sehr warnende Email, ich habe mir das angeschaut und tatsächlich den Bezahlvorgang angepasst.
Aber trotz eigentlich geringen und positiven Entwicklungsaufwands war der Gesamtprozess nicht toll. Stripe verweist auf diese Dokumentation und erklärt dort ganz viel, aber wenig konkretes. Mich interessieren doch nur zwei Dinge:
- Was muss ich tun, damit Nutzer von Pipes weiterhin ein Abonnement abschließen können?
- Muss ich etwas tun, damit bestehende Abonnements weiterhin monatlich/jährlich abgebucht werden?
Das ist für Stripe sicher schwierig im Voraus zu beantworten, weil die Antwort nicht bei jedem Kunden gleich ist. Aber die Dokumentation scheint mir auch nicht auf die Beantwortung dieser Fragen ausgelegt. Damit bin ich etwas unzufrieden.
Wie auch immer, der erste Schritt war in meinem Fall relativ einfach. Pipes nutzt Stripe Checkout. Das ist eine recht komfortable Softwarelösung, ein bisschen Javascript und etwas Servercode und schon hat man dieses vielleicht bekannte Kreditkarteneingabefenster und kann damit bezahlen bzw Zahlungen entgegennehmen. Also wird das automatisch aktualisiert und Checkout-Integratoren müssen nichts machen? Nein! Stattdessen ist das kleine Fenster jetzt die Legacy-Variante, das neue Checkout funktioniert etwas anders, löst aber die Authentifizierung.
Und genau das hätte mir Stripe in der Email oder der SCA-Dokumentation auch direkt sagen können. Stattdessen ist es in der Checkout-Doku versteckt.
Dabei ist die neue Lösung nichtmal schlecht. Sie sieht hübsch aus und es ist weniger eigener Code notwendig.
Es gibt eine vernünftige Wechselanleitung. Aber im Grunde wechselt man erstmal das Javascript aus. Vorher basierte das auf einem Formular:
<form action="/subscribe" method="POST"> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="pk_test_..." data-name="pipes.digital" data-description="Regular Plan" data-amount="20" data-currency="eur" > </script> </form>
Jetzt wird eine Funktion aufgerufen:
<script src="https://js.stripe.com/v3"> <button id="checkout-button">Subscribe <script> var stripe = Stripe('pk_test_...'); var checkoutButton = document.querySelector('#checkout-button'); checkoutButton.addEventListener('click', function () { stripe.redirectToCheckout({ items: [{ plan: 'regular_v1', quantity: 1 }], customerEmail: 'customer@example.com', successUrl: 'https://pipes.digital/sub_success', cancelUrl: 'https://pipes.digital/pricing' }); }); </script>
Klar, bei mir liegt das alles in erb-Templates und sieht daher etwas anders aus.
Vorher musste auf dem Server dann noch das Abonnement angelegt werden:
post '/charge' do customer = Stripe::Customer.create( :email => authorized_email, :source => params[:stripeToken] ) subscription = Stripe::Subscription.create( :customer => customer.id, :items => [ { :plan => params[:plan] }, ], ) end
Nun:
Das entfällt völlig! Da das neue Checkout auf eine Seite bei Stripe weiterleitet wird alles dort erledigt.
Trotzdem muss noch auf dem eigenen System darauf reagiert werden, dass der Nutzer etwas bestellt hat. Bei Pipes wird ein Datenbankeintrag angelegt. Dafür gibt es einen Webhook (einen Ort, an dem ein anderer Server einen POST hinsenden kann), der in der Doku wieder gut erklärt wird. Prinzipiell aktiviert man ihn im Stripe-Dashboard und fängt ihn dann so:
# webhook endpoint for stripes post '/webhook' do payload = request.body.read event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks/signatures for more information. sig_header = request.env['HTTP_STRIPE_SIGNATURE'] begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload warn "invalid webhook payload" status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature warn "invalid webhook signature" status 400 return end # Handle the checkout.session.completed event if event['type'] == 'checkout.session.completed' session = event['data']['object'] # Fulfill the purchase: plan = session['display_items'][0]['plan']['id'] if plan == 'regular_v1' User.new(email: session['client_reference_id']).promoteToRegular(subscription_id: session['subscription']) end end status 200 end
Es gibt natürlich noch viel mehr Events, die man mit diesem Webhook fangen könnte, zum Beispiel wenn Zahlungen fehlschlagen.
Und die zweite Frage? Ob bestehende Abonnements weiterlaufen blieb mit bisher unklar. Es gibt da zwar einen Abschnitt für, aber ob dieses Grandfathering passieren kann hängt wohl davon ab, ob das Abo so erstellt wurde:
Ihr saht den Code oben, ist das bisher passiert? Der verlinkte Beispielcode sagt ja, aber nichts davon wird explizit im Code erledigt.
Meine jetzige Annahme ist, dass beim Erstellen von Abonnements gemäß des alten Checkout-Verfahrens die Zahlungen weiterlaufen sollten. Man müsste aber wohl eigentlich auf Nummer sichergehen und eine Seite bauen, die über die Stripe-API den Kunden die Möglichkeit gibt, die Authentifizerung nachzuholen. Eine so simple Lösung wie Checkout gibt es dafür aber nicht. Im Fall von Pipes würde sich das Abtauchen in die API kaum lohnen, im Fall der Fälle würde ich dann eher die Nutzer bitten, nochmal neu zu abonnieren.
Naja, spätestens im September wird sich das aufklären.