Wordpress hat schlimmen Code, andere aber auch

07 09 2009

Wer ernsthaft beruflich oder auf hohem Niveau in seiner Freizeit mit PHP arbeitet und älter als 15 ist, dem stehen wahrscheinlich beim Blick in den Quellcode von Wordpress die Haare zu Berge. Code is art ist ein wunderschöner Wordpress-Slogan, der in dem Kontext aber wirklich mehr als unangebracht ist. Schlimmer als der zusammengezimmerte Kern von Wordpress, der aktuell mal wieder mit einem notdürftigen Flicken gegen den grassierenden Wordpress-Wurm repariert wurde, sind aber die meisten PlugIns. Viele sind offenbar von blutigsten PHP-Anfängern schnell und ergebnisorientiert runterprogrammiert worden, was von Wordpress ja geradezu provoziert wird und was auch großen Anteil an der Beliebtheit des Systems trägt. Jeder ahnungslose Anwender kann mit ein paar Zeilen PHP-Code schnell das erreichen, was er gerade braucht. Das erinnert mich an meine Anfänge mit PHP im Jahr 2001 mit dem damals herausragenden phpBB 1.4. Hier war im Grunde alles hartkodiert und wenn einem irgendwas nicht gefiel, hackte man irgendwie im Quellcode herum. Ein Templatesystem wurde erst mit Version 2 eingeführt und auch hier hackte man noch alle möglichen MODs in das System, was ein Update praktisch unmöglich machte. Folge waren haarsträubende Sicherheitslücken, die nicht gestopft wurden. Wordpress vermeidet dieses Modding immerhin mit einem sehr flexiblen PlugIn-System, der Zugang für Dilettanten und Anfänger wurde dadurch aber noch einfacher. Das Ergebnis sehen wir zur Zeit, Gerrit van Aaken hat das schon zusammengefasst: Bei Wordpress hilft nur ein schmerzhafter Neuanfang, so wie TYPO3 das momentan auch vollzieht und wie phpBB das auch schon zwei mal hinter sich hat.

Nun will ich nicht so viel auf Wordpress rumhacken, wenn ich es selber gar nicht benutze. Im Grunde ist das System großartig, wenn man die miese Codebasis ignoriert. Ich will auf etwas ganz anderes hinaus, nämlich die Codequalität von Serendipity-PlugIns. Wann immer ich ein Seitenleisten-PlugIn installiert habe, musste ich dessen Code bearbeiten, weil die HTML-Ausgabe standardmäßig schlimm aussah oder gar fehlerhaft war. Das PlugIn-System von S9Y ist auf den ersten Blick recht kompliziert, was totale Dilettanten vom PlugIn schreiben abhält; das ist schon mal gut. Trotzdem ist die Codequalität der PlugIns oft eher mäßig. Fast überall wird zum Beispiel der HTML-Code mit echo direkt da ausgegeben, wo er anfällt, natürlich mit irgendwelchem HTML-Code drumherum, den der Autor gerade für angemessen hielt. Kein Wunder also, dass der Output nicht immer angemessen ausfällt. Ich habe vor einiger Zeit ein eigenes Seitenleisten-PlugIn für Twitter geschrieben, weil das alte u.a. genau dieses Problem zeigte. Ein Kernfeature meines PlugIns war der Einsatz einer Templating-Engine. Die zu implementieren war PHP-seitig ein Kinderspiel für jeden halbwegs erfahrenen PHP-Programmierer. Die Frage ist nun, warum zur Hölle von den paar offiziell verfügbaren PlugIns noch fast keines so ein Templating-System mitbringt? Es täte S9Y wirklich immens gut, wenn sich mal jemand hinsetzen würde und ein paar der PlugIns auf den aktuellen Stand bringen würde. Also zumindest eine Templating-Engine einbauen und die Ausgabe entsprechend anpassen, aber auch manch andere Routine könnte mal überarbeitet werden. Gegenüber Wordpress ist das Jammern auf hohem Niveau, aber auch S9Y ist merklich in die Jahre gekommen, vor allem seine PlugIns.

Wenn ich sowas lese, pflege ich zu antworten, derjenige soll nicht jammern, sondern selber anpacken. Das gilt auch für mich, sicher. Allerdings habe ich immens schlechte Erfahrungen mit meinem Twitter-PlugIn gemacht. Das einzige konstruktive Feedback kam vom unglaublich engagierten Chefprogrammierer selber, der mir meinen ursprünglich geplanten Arbeitsaufwand mit Änderungswünschen um das Mehrfache aufgeblasen hat. Am Ende war das neue PlugIn wirklich großartig geworden, ich bin richtig stolz darauf. Die ganzen angeforderten Änderungen kreisten alle um funktionale Anpassungen an das alte PlugIn, so dass mein neues PlugIn alle Funktionen des alten hatte, nur eben diesmal in gut. Dann kam das Problem: Es gab kein Feedback von Dritten und stattdessen hat mir ein ätzender Troll auch noch ans Bein gepisst und einen extra Thread im Forum aufgemacht, um mich als Schnösel zu dissen (weil ich PHP4 Nutzer, die PHP4 Kompatibilität einfordern, als Ewiggestrige bezeichnet habe und er sich davon angesprochen fühlte). Ich habe mein Engagement für S9Y daraufhin nach ein paar Tagen Diskussion eingestellt, denn für kostenlose und gute Programmierarbeit möchte ich echt alles andere haben als von irgendwelchen undankbaren Typen beschimpft zu werden. Mein PlugIn ist übrigens nie im Repository erschienen und stattdessen gibt es ein funktional wirklich krasses anderes PlugIn; hoffentlich ist wenigstens meine Arbeit da eingeflossen und war nicht völlig umsonst. Wie auch immer: Ich werde keine Arbeit mehr zu S9Y beitragen; wenn ich etwas neu baue, reiche ich das im Forum ein und wenn sich niemand drum kümmert, soll mir das egal sein.


Mal wieder: Wie sollte man mit den IE6-Nutzern umgehen?

15 07 2009

So viel wurde schon zum IE6 geschrieben, so viel Hass wurde ausgeschüttet und so viele Erklärungsansätze für den noch immer beschämend hohen Marktanteil dieses Fossils wurden gebracht. Nun muss ich noch mal etwas dazu loswerden. Warum gerade jetzt? Zu einen habe ich zuletzt mehrere Tage unbezahlt mit IE6-Debugging verbracht, zum anderen hat YouTube angekündigt, den Support für den IE6 ab sofort auslaufen zu lassen. Das ist eine großartige Entscheidung, denn bisher hat sich kaum ein reichweitenstarkes Webangebot zu diesem Schritt durchringen können. Die Begründung halte ich für sehr stichhalting: YouTube sagt, dass sie der Support des IE6 glasklar messbar und nicht zu knapp Geld kostet und dass einige neue und praktische Funktionen mit vollem IE6-Support nicht machbar sind. Genau das ist der Punkt. Danke an Google für diesen mutigen Schritt. Denn nur durch Leidensdruck seiner Nutzer wird der IE6 aus den Statistiken verschwinden. Solange die Inhaltelieferanten die teilweise massiven Mehrausgaben bei der Entwicklung für den IE6 tätigen, wird sich an der Situation nichts ändern.

Ein viel gehörtes Argument ist ja, dass viele Nutzer an Firmen-PCs nur den Internet-Explorer 6 benutzen können/dürfen und so ja jetzt ausgeschlossen sind. Das stimmt. Na und? Eine reichweitenstarke Seite wie YouTube verliert dadurch vielleicht ein paar Prozent seiner Nutzer. Noch mal: Na und? YouTube ist wichtig genug, dass diese Leute im Zweifel schon einen Weg finden werden, sprich einen anderen Browser installieren. Oder sie lassen YouTube eben bleiben. Man darf nicht vergessen, dass da jemand mit einem Programm unterwegs ist, zu dessen Erscheinungszeitraum Videodienste wie YouTube noch unfassbare Zukunftsmusik waren. Woher kommt die Erwartungshaltung, dass das ohne Einschränkungen klappen muss? Ich denke, man muss sich einfach der Realität stellen. Es gibt genug Alternativen und keine davon kostet etwas.

Aber das CRM-System in unserer Firma (oder Intranet-Anwendung-XY) läuft nur mit dem Internet Explorer! Auch das höre ich immer wieder und ich habe zwei Antworten darauf: Erstens würde ich mich fragen, ob meine Intranet-Anwendung eine gute Anwendung ist, wenn sie die vorletzte Version eines so wichtigen Programmes als Zugangsvoraussetzung hat, aber da rede ich Firmen ungerne rein. Zum anderen aber spricht meiner Meinung nach nichts gegen den Paralleleinsatz von IE6 als Zugangsprogramm fürs veraltete Intranet und einem modernen Browser für das Internet. Selbst wenn es unbedingt der Internet Explorer 8 sein muss, gibt es Mittel und Wege, parallel einen IE6 zu betreiben. Zu viel Administrationsaufwand? Nun, so ist die Welt. Man denke im Firmeneinsatz übrigens auch an die haarsträubenden Sicherheitslücken des IE6, die nicht mehr behoben werden.

Aber was ist mit der Barrierefreiheit? Nutzer auszuschließen widerspricht dem Barrierefreiheitsgedanken, klar. Aber ist das hier wirklich so? Dafür muss ich eine Analogie bemühen: Man stelle sich vor, es gäbe ein Gesetz, das die Beschaffenheit von Rollstuhlrampen regelt. Alle Hersteller von Rollstühlen halten sich an diese Vorhaben und fahren prima damit. Nur der klare Marktführer hat bei früheren Modellen einmal diese Regeln anders ausgelegt und die Räder als Vielecke statt als Kreise ausgelegt. Das ist anfangs vielleicht Stand der Technik gewesen, technisch sinnvoll war es aber nie. Auf standardkonformen Rollstuhlrampen ist die Fahrt für Nutzer solcher Rollstühle dadurch etwas unbequem, weswegen alle Gebäudebetreiber ihre Rollstuhlrampen bisher sehr teuer in mechanisch sehr aufwändigen und vor allem technisch unsinnigen Varianten gebaut haben. Für die Nutzer standardkonformer Rollstühle gäbe es längst Entwicklungen, die die Nutzung von Rollstuhlrampen wesentlich bequemer und einfacher gestalten würden, aber diese sind mit den Vieleckrädern nicht oder nicht sinnvoll in Einklang zu bringen. Der Marktführer würde daher schon lange ein kostenloses Austauschprogramm für seine alten Modelle anbieten. Macht es hier Sinn, von einer Barriere zu sprechen, wenn man bei neuen Gebäuden die sich bietenden Vorteile nutzt und die Nutzer der veralteten Rollstühle zwingen würde, das kostenlose Austauschprogramm des Herstellers zu benutzen? Ich habe da meine Schwierigkeiten mit. Es geht ja nicht darum, dass der alte Rollstuhl die Rampe gar nicht mehr benutzen kann, es würde für etwas holpriger werden.

So sehe ich das auch beim IE6: Wer der Meinung ist, mit einem Browser aus dem Jahr 2001 im Jahr 2009 alle Funktionen moderner Websites genießen zu können, leidet unter massivem Realitätsverlust. Eine Website sieht komisch aus? Nun gut, da könnte man denken, der Seitenbetreiber wäre ein Idiot. Wenn aber immer mehr Websites komisch und kaputt aussehen und mir einhellig sagen, dass sie meinen veralteten Browser nicht mehr unterstützen, kann ich die alle doof finden oder mich der Realität stellen und ein Update machen. Genau deswegen braucht es Seiten wie YouTube, die die Eier haben, dieses doof gefunden werden einstecken zu können und im Zweifel ein paar Nutzer zu verlieren.

Hier kommt wieder der Geldaspekt ins Spiel. Mal angenommen, die Implementierung einer modernen Funktion ist im IE6 nicht möglich. Dann wird YouTube durchrechnen, was für einen finanziellen Wert die neue Funktion hätte. Dann wird YouTube gegenrechnen, was der Ausfall von einer angenommenen Zahl an IE6-Nutzern, die nicht umsteigen, sondern YouTube den Rücken kehren, kosten würde. Dann wird YouTube einrechnen, wieviel es wert ist, wenn x Prozent der ehemaligen IE6-Nutzer auf den Google-Browser Chrome umsteigt. Dann wird YouTube einen großen Strich unter die Rechnung machen und den IE6-Support sofort einstellen. Die Dimension, dass auch andere Google-Dienste vom Tod des IE6 profitieren, habe ich hier noch gar nicht einbezogen. Eine ähnliche Rechnung tut sich auf, wenn man die Entwicklungskosten für IE6-Zurechtbiegen gegen den Imageverlust durch etwas komisch aussehende Websites gegenrechnet.

Bei einem eigenen Projekt würde ich keinesfalls Geld in die Kompatibilität mit dem IE6 stecken und auf tolle neue Funktionen für alle anderen verzichten. Wer das Geld weiterhin ausgeben möchte, kann das ja weiterhin tun.

P.S. Ich muss dazu sagen, dass ich bei meinem letzten Auftrag einen Pauschalpreis veranschlagt und dabei u.a. die für das IE6/IE7 Debugging nötige Zeit völlig falsch eingeschätzt habe. Insgesamt habe ich nun mehrere Tage komplett unbezahlt (das entspricht meinen Fixkosten für einen ganzen Monat) da rein stecken müssen, was mich ernsthaft ärgert. Merke: Keine Pauschalpreise für so einen Mist und wenn doch, dann nicht so knapp kalkuliert.


jQuery Stolperstein: hover() und slideUp()/slideDown()/animate()

21 06 2009

Gelegentlich möchte ein CSS Dowpdown-Menü um eine kleine Animation erweitert werden, die bei der Gelegenheit auch den Suckerfish für den IE6 übernimmt. Natürlich macht man sowas mit jQuery, wenn man das sowieso eingebunden hat, in etwa so (natürlich alles innerhalb von $(document).ready()):

$('#mainMenu>li').hover(
  function(){
    $(this).find('>ul').slideDown(150);
  },
  function(){
    $(this).find('>ul').slideUp(50);
  }
);

Nun kommt es dabei immer wieder zu den selben Problemen:

Fährt man mit der Maus schnell mehrmals über einen Punkt, werden alle nötigen Animationen in eine Warteschlange gepackt und nach und nach gemütlich abgearbeitet. Das lässt sich noch leicht und logisch beheben, indem man jeweils mit einem stop() vor slideDown() und SlideUp() die Animation erst einmal stoppt, bevor man das Gegenstück ausführt. Das gleiche passiert auch bei animate() und vergleichbaren Sachen und lässt sich da auf die gleiche Weise beheben. Soweit kein Problem und nach ein paar Sekunden Google-Recherche gefunden.

Ein weiteres Problem ist das Handling der Animation bei der ersten Berührung mit der Maus: Scheinbar wird das jQuery hover Event erst bei der zweiten Berührung genutzt, bei der ersten klappt das Menü ganz normal mit der im CSS definierten Methode aus. Auch hier hilft eine Google-Recherche schnell weiter und bringt die Lösung frisch auf den Tisch: Vor der ersten Berührung (also zweckmäßiger Weise in $(document).ready()) müssen die UL-Elemente der Untermenüs mit einem beherzten Aufruf von hide() versteckt werden, auch wenn sie durch das CSS eigentlich schon versteckt sind. OK, das muss man wissen und kommt nicht von alleine drauf.

Perfide ist das dritte Problem bei Animationen mit den Ausmaßen der Untermenüs, also slideDown()/slideUp() und animate() in Kombination mit height() oder width(): Nutzt man diese innerhalb der hover() Funktion und verlässt das Element noch während die Animation läuft, speichert jQuery den zu diesem Zeitpunkt aktuellen Wert der animierten Abmessungen zwischen und animiert fortan nur noch bis zu diesem Maximalwert. Verlässt man den Menüpunkt also sofort wieder, wird das Menü bis zum Seitenreload nie wieder erscheinen, denn es ist ja nur noch etwa einen Pixel hoch und wird entsprechend auch nur bis zu einem Pixel animiert. Hier habe ich keine Lösung bei Google gefunden, weil ich nicht wusste, wonach ich suchen sollte. Also habe ich mich mit dem Firebug auf die Lauer gelegt und das Problem in der beschriebenen Form analysieren können. Ich weiß nicht, ob das ein Bug ist oder volle Absicht, aber ich kann mir nicht wirklich eine Situation vorstellen, wo dieses Verhalten gewünscht wäre. Die Lösung dafür liegt aber auf der Hand: Ein unscheinbares height('auto') vor der ausklappenden Animation behebt das Problem sehr zuverlässig.

So sieht nun also das komplette Menüscript aus, das sich endlich so verhält, wie man es auch erwartet:

$('#mainMenu>li>ul').hide(); // needed to prevent CSS-only behaviour on first contact
$('#mainMenu>li').hover(
  function() {
    $(this).find('>ul').stop().height('auto').slideDown(150); // the height('auto') prevents the menu from memorizing an incorrect height-value forever when leaving the menu while the animation is running
  },
  function() {
    $(this).find('>ul').stop().slideUp(50);
  }
);

An anderer Stelle half mir height('auto') aber nicht weiter, was also tun? Die Lösung lag zunächst auch hier auf der Hand: Beim Laden der Seite müssen die initialen Werte des Elements in einer Variablen gespeichert werden, zu denen die Animation dann jeweils zurückkehren kann. Das schien mir immens unelegant, weil ich nicht den globalen Scope mit solcherlei Variablen vollmüllen wollte. Mein Bruder brachte dann den entscheidenden Tipp: Man kann die Werte prima als Attribute des Elements im DOM ablegen. Beliebige Attribute sind in HTML zwar nicht erlaubt, aber wenn das Dokument erst mal ins DOM eingelesen wurde, sind die Limitierungen von HTML völlig gleichgültig. Kurz gesagt: Ist das Ding im DOM, ist es kein HTML mehr. Die Denke muss man sich erst mal klar machen. Gut, also schreibe ich die Werte in $(document).ready() fix als Attribute ins DOM und alles wird gut. Doch da hatte ich nicht mit der strengen, aber korrekten Auslegung des ready()-Events in Opera gerechnet: Dort stehen zu diesem Zeitpunkt die gewünschten Werte nicht zur Verfügung, weil es sofort gefeuert wird, sobald das DOM fertig eingelesen wurde, aber eben noch bevor die Engine irgendetwas rendern konnte. Abmessungen sind also nicht bekannt. Die Lösung lautet hier $(window).load(). Dieses Event wird gefeuert, sobald die Seite gerendert wurde, mithin also auch alle Abmessungen bereit stehen. So sind die Events spezifiziert, aber Opera scheint der einzige Browser zu sein, der sie auch so handhabt. Die komplette Lösung für dieses Problem lautet also in etwa so:

$(window).load(function(){
  $("#elementId").attr('origHeight', $("#elementId").height());
});

Ausgelesen wird auf die gleiche Weise, also $("#elementId").attr('origHeight').


Der Staat ist zum Problem geworden - Revolution oder so

10 05 2009

In letzter Zeit reift bei mir, getrieben von und zusammen mit verschiedentlichem Input, die Idee eines neuen Generationenkonfliktes heran. Stellvertretend für all das seien hierzu mal Cem Basman und Johnny Haeusler verlinkt (die übrigens beide das Internet nicht mit der Muttermilch aufgesogen haben). Wer Blogger doof findet, kann sich ja bei den Zeitungen bedienen, herausragend Lesenswertes aktuell im Tagesspiegel und in der Zeit. Das ist übrigens der Verdienst der Petition, die zwar politisch irrelevant versickern wird, aber für einen gewissen Presserummel sorgt.

Aber worum geht es mir hier? Es geht um alles, was in den letzten paar Jahren schief gelaufen ist, hier in Deutschland und anderswo. Es geht um die Mosaiksteine, die den Staat zum Problem machen für Leute wie mich, für Leute, die das Internet als zentrales Medium in ihr Leben aufgenommen haben. Es geht um das große Ganze, das sich in arg lobbyfreundlichem Urheberrecht, Vorratsdatenspeicherung, Hackerparagraph, Netzzensur, Killerspieldebatte und zuletzt der Paintball-Farce manifestiert. Es geht um einen neuen Generationenkonflikt, der ausgefochten werden muss, wie bereits die 68er und die Grüne Bewegung zuvor ihren Generationenkonflikt ausgefochten haben.

Die gute Nachricht vorab: Das ganze Ungemacht wächst sich raus. In 5, 10 oder 15 Jahren wird man Chroniken schreiben und Dokus verbreiten, in denen Wolfgang Schäuble und Ursula von der Leyen eine zentrale Rolle spielen werden als die Antagonisten, die Leitfiguren, stellvertretend für das, wogegen wir zunehmend lauter kämpfen.

Einige haben es schon bemerkt: Wir sind die neuen 68er, wir gehen nur nicht auf die Straße mit unserem Protest. Brauchen wir auch nicht, denn wir werden gewinnen, irgendwann. Revolution? Starkes Wort, aber immer wenn der Staat zum Problem wurde, gab es etwas revolutionäres, das aus der nachwachsenden Generation emporkam. 1848 zum Beispiel, ein besonders im Hinblick auf staatliche Kontrolle zunehmend mit heute vergleichbares Szenario. Aber ich will nicht darauf hinaus, dass brennende Barrikaden das Ziel sein sollen, das ist total oldschool. Und Unruhen, die die Gesundheit von irgendjemandem bedrohen, kann niemand wollen. Wir sind Pazifisten, das haben wir von den Vorgenerationen übernommen und unser Hang zu Killerspielen ermöglicht es uns, Aggression woanders abzubauen1. Unser Instrument ist intellektueller, was eine wirklich glückliche Fügung der Geschichte ist. Denn unser Werkzeug, das Internet, hat uns erst in diese Lage versetzt und deswegen stehen wir gerade jetzt auf, wo dieses Werkzeug unserer Generation in seinen Grundfesten bedroht ist. Das freie Internet ist unsere Basis und nach unserem Verständnis von Demokratie ist dieses freie Internet das beste, was der Demokratie in den letzten Jahrzehnten passieren konnte. Staatstheoretisch gesehen zumindest, man schaue sich nur mal die lange Reihe der Staatstheoretiker und Philosophen der letzten paar hundert Jahre an und bilde deren Ideen auf das Internet ab.

Aber wie wird die Revolution dann aussehen? Wird es eine neue RAF geben? Die schlechte Nachricht ist: Es wird eine neue RAF geben, denn das ist eine natürliche Reaktion. Aber gut ist das deswegen noch lange nicht. Diese neue RAF wird immerhin (hoffentlich) kein Blut vergießen, sondern es werden Hacker sein, die sich der Computersabotage bedienen. Aber das ist doch verboten?, werden einige jetzt denken. Ja, genau deswegen ja. Diese neue RAF wird – wie die alte RAF – der Bewegung letztlich mehr schaden als nützen, weil sie die Integrität untergräbt und die Bewegung angreifbar macht. Aber sie wird auch ein wichtiger Bestandteil sein, um der Bewegung Gehör zu verschaffen. Und sie wird sich aus der Berliner Szene herauskristallisieren. Denn so global wir auch vernetzt sind, so lokal und urban sind unsere persönlichen Netzwerke. Aber genug fabuliert, vielleicht kommt es auch ganz anders. Hoffen wirs.

Denn was ist anders, als bei unseren Vorgenerationen? Die 68er haben sich gegen ihre Elterngeneration gewendet, weil die Nazis waren und weil die festgefahren waren in allerlei gesellschaftlichem Ungemach, das den Werten der nachwachsenden Generation zuwider war. Die Front aber wurde eröffnet von der nachwachsenden Generation. Heute ist es weitgehend anders herum: Mit den Alten, den Konservativen, den Festgefahrenen hätten wir erst mal kein Problem. Unsere Eltern haben uns frei erzogen und uns tolle Werte mitgegeben, die wir im großen und Ganzen mit ihnen teilen. Aber was ist dann schief gelaufen? Die Elterngeneration hat sich von sich aus gegen die Nachwachsenden gewandt. Sie haben sich bedroht gefühlt vom Internet und der plötzlichen Freiheit, derer sie nicht Herr werden, weil sie die Prinzipien nicht verstehen. Das ist ein unbehagliches Gefühl, das verstehen wir gut. Aber die Konsequenz kann nicht sein, dass ein Establishment, weil es im Lauf der technischen Fortentwicklung nicht mehr mithalten kann und will (das ist wichtig!), versucht, diese Fortentwicklung rückgängig zu machen.

Das Internet steht auch Euch offen, ehrlich. Ihr seid herzlich willkommen, Ihr müsst nur die hier herrschenden Prinzipien akzeptieren, wie wir das getan haben. Mehr nicht. Stattdessen seid Ihr gegen uns, versucht uns, die wir schon "drin" sind, wieder zurück zu holen. Aber wir wollen das nicht, wir wissen um den Wert des Netzes und werden es verteidigen, so gut wir können. Noch seid ihr am Drücker und lügt Euch Gründe für Euer Tun zusammen, um eine Mehrheit zu bekommen. Ihr ruft Euresgleichen zusammen, die Ihr noch in der Mehrheit seid, uns einzudämmen. Aber Eure Argumentation basiert auf Populismus, Übertreibung und dreisten Lügen. Das mag kurzfristig funktionieren, aber niemand lässt sich gerne manipulieren; über kurz oder lang fallt Ihr auf die Nase damit. Nicht jetzt, aber in fünf bis zehn Jahren seid Ihr raus aus dem Spiel. Die unappetitliche und zynische Instrumentalisierung des Themas Kinderpornographie für Eure Zwecke wird für Euch zum Bumerang werden, denn damit seid Ihr zu weit gegangen.

Ursprünglich hattet Ihr eine tolle nachwachsende Generation: Gesetzestreu, pflegeleicht, unpolitisch wie noch nie zuvor eine Generation war. Wir waren friedlich und haben keinen Ärger gemacht, alles hätte so leichtfüßig sein können. Aber dann habt Ihr angefangen, uns mit immer neuen Gesetzen aus der Gesetzestreue zu werfen. Wir hatten nie vor, mit dem Gesetz in Konflikt zu geraden, aber plötzlich sind wir alle unter Generalverdacht, weil die Gesetze sich geändert haben, nicht wir. Es gab noch nie in der Geschichte der BRD so viele Hausdurchsuchungen aus derart nichtigen Gründen, wie in den letzten Jahren. Wir mögen die Grundrechte und die Verfassung und wir sehen mit an, wie sie tagtäglich mit Füßen getreten werden. Wir sehen, wie wöchentlich neue Unfassbarkeiten an die Öffentlichkeit dringen, die uns direkt oder indirekt betreffen. Und wir sehen, wie ahnungslos, falsch und populistisch die Argumente dafür sind. Aber jemanden fragen, der sich damit auskennt? Das wären dann ja wir und wir sind das Problem in Euren Augen.

Die Folge ist, dass wir zum Problem werden für den Staat, weil der Staat ein Problem für uns geworden ist. Der Staat schreit förmlich nach revolutionärem Handeln. Also handeln wir: Wir werden politisch. Und wie wir politisch werden! Eine Partei mit dem albernen Namen "Piratenpartei" hat immensen Zuspruch und auch Zulauf, trotz des doofen Namens. Plötzlich gehen wir alle wählen und da wählen wir alle, nur nicht Euch, liebe CDU und (in Teilen auch) SPD. Ihr werdet das jetzt wahrscheinlich noch nicht merken, dafür habt Ihr die Medien noch zu gut im Griff, dass sie Euren Populismus stützen. Aber was würde passieren, wenn sich die Hartz-4-Frustrierten mit uns zusammentun? Was würde passieren, wenn wir die Presse auf unsere Seite ziehen, gar die von uns so verhasste BILD es opportun finden würde, unsere Position zu vertreten? Unrealistisch meint Ihr? Darauf würden wir es gerne ankommen lassen.

Oder aber wir begraben die ganzen Albernheiten, kehren auf eine sachliche Ebene zurück und reden Klartext miteinander. In Sachen Kommunikation sind wir gut. Ihr müsst nur bereit sein, offen mit uns zu reden. Ist das zu viel verlangt? Wir wollen keinen Stress und keinen Streit und keinen Generationenkonflikt, wollten wir nie. Digitale Kluft wollten wir auch nicht, es ist Eure Weigerung in der digitalen Welt mitzuspielen, nicht unsere Ausgrenzung. Wer das Internet ausdruckt, denkt nun mal in die falsche Richtung; das ist aber nicht unsere Schuld, sondern basiert auf Mangelnder Bereitschaft, sich dem Neuen zu stellen. Selbst die dümmsten von uns bekommen das alles halbwegs hin, was man gemeinhin Medienkompetenz nennt und fordert, also sollte das für Euch auch kein echtes Problem darstellen. Eure Doktortitel habt Ihr bekommen, weil Ihr einer intellektuellen Elite angehört, also schaltet diesen Intellekt einfach mal ein.

1 Schon mal mit "Killerspielern" geredet? Schon mal auf einer Netzwerkparty gewesen? Schon mal Zahlen zur Kriegsdienstverweigerung unter "Killerspielern" gesucht? Die "Killerspieler, denen ich begegnet bin, leben alle in einem und suchen sich ein Umfeld, das weitgehend ohne körperliche Gewalt auskommt. Nur als Denkanstoß.

Nachtrag 02.06.2009: Im Spiegel Online erschien ein sehr sehr guter Artikel, der diesen Tenor aufgreift. Lesebefehl.


SSL und wenigstens halbwegs gute Passwörter

04 05 2009

Jemand hatte für 24 Stunden den Twitter-Account cdu_news gekapert und dort eine politische Kehrtwende lanciert. Dem Hörensagen nach geschah das entweder durch ein in einem offenen WLAN gesnifftes Passwort oder durch schlichtes Raten, was bei Identität von Benutzername und Kennwort schnell gegangen sein mag. So oder so, die CDU hat sich das aus verschiedenen Gründen redlich verdient, in erster Linie aber zeigt es recht schön, wie es um die Medienkompetenz dieser Partei bestellt ist. Darauf wollte ich aber gar nicht hinaus, die Häme ist schon woanders ausgeschüttet worden.

An diesem Beispiel sieht man wieder, dass viel zu wenige Leute sich zumindest im Ansatz für die Sicherheit ihrer Online-Identität interessieren. Da werden trivialste und leicht zu erratende Passwörter genutzt und wahrscheinlich für alle Dienste das gleiche, weil man sich das ja auch merken muss. Und es wird ohne Hirneinsatz in offenen WLANs fröhlich alles ohne Verschlüsselung übertragen. Dass da jeder Anwesende mit ein wenig technischem Verständnis und einem Notebook oder PDA in Reichweite alles, mit der Betonung auf alles, mitlesen kann, hat man auch schon mal gehört irgendwann. Punkt. Ich habe keinerlei Mitleid mit Menschen, denen aus diesen beiden Gründen unschöne Dinge passieren, denn sie haben es verdient. Sie haben mutwillig alle Regeln der Umsicht missachtet und müssen die Konsequenzen tragen. Jemand, der aus Bequemlichkeit vor dem Überqueren einer großen Straße und mit MP3-Player auf den Ohren weder rechts noch links guckt, wird in der Regel früher oder später in Kontakt mit fahrenden Fahrzeugen kommen. Same here.

Also noch mal ein paar simple Regeln für den sicheren Umgang mit Passwörtern:

  1. Wenigstens halbwegs sichere Passwörter wählen. Admin und Admin sind kein gutes Paar, idiot@gmx.de und idiot auch nicht. idiot12345 ist schon besser, aber immer noch leicht zu erraten. Im Prinzip führt kein Weg an sowas wie 2i5j28dQ vorbei. Wer sich sein Passwort merken muss kann auch die ersten Buchstaben jedes Wortes in einem bescheuerten Merksatz nehmen. Nach ein paar Mal eintippen braucht man den Satz eh nicht mehr. Wie auch immer, ein Passwort darf nicht nach ein paar Tausend Versuchen erraten werden, also mit geeignetem Werkzeug nach ein paar Millisekunden bis Minuten. Der Name von Kindern und Haustieren oder der Hochzeitstag fallen also auch flach, ebenso wie Begriffe, die im Wörterbuch stehen.
  2. Nicht überall das gleiche Passwort nehmen. Klingt besonders lästig, aber eine Anekdote beschreibt das Problem ganz gut: Ich hatte mal meinen Benutzernamen vom FH-WLAN vergessen und habe diesen in der DVZ (unser Rechenzentrum) per E-Mail nachgefragt. Der freundliche Mitarbeiter nannte mir ohne weitere Überprüfung meiner Identität meinen Benutzernamen und das erste Zeichen meines Passworts (nach dem ich nicht gefragt hatte, denn das wusste ich noch). Fuck, dieses Passwort hatte ich zu dem Zeitpunkt bei etlichen Diensten genutzt und jeder Honk konnte offenbar durch geschicktes Nachfragen bei der DVZ dieses Passwort herausfinden, das dort im Klartext abgelegt war. Fuck, fuck, fuck! Merke: Man kann nie wissen, was mit den Passwörtern bei den Betreibern passiert, also führt tatsächlich kein Weg daran vorbei, für jeden Dienst ein gesondertes Passwort zu benutzen oder zumindest für die wichtigen Dienste.
  3. Kein Mensch kann sich alle Passwörter merken, wenn man für jeden Dienst ein eigenes definiert. Also führt kein Weg an einem Passwort-Manager vorbei. Ich benutze Keepass, das ein kostenloses (Open-Source) Programm ist, das auf etlichen Plattformen läuft: Neben Windows (auch vom USB Stick), Linux, Mac OSX auch auf den meisten besseren Handys und demnächst irgendwann auch mal auf dem iPhone, wenn Apple es mal im AppStore freischaltet. Aber Vorsicht: Das Master-Passwort muss besonders stark sein, denn wer eine schlecht geschützte Schlüsseldatei in die Finger bekommt, hat den Generalschlüssel.
  4. Fast einen Generalschlüssel hat auch jeder, der das Passwort zum E-Mail Postfach kennt oder sonstigen Zugriff darauf hat: Eigentlich jeder Webdienst bietet die Möglichkeit, sich ein neues Passwort per E-Mail zusenden zu lassen. Und schwupps ist alles geritzt. Immerhin bemerkt man hier den Angriff meistens im Nachhinein, wenn das alte Passwort nicht mehr funktioniert. Merksatz: E-Mail und Passwort-Manager sind die wichtigsten Passwörter von allen. Hüte sie wie Deinen Augapfel.
  5. Das E-Mail Postfach kommt aber gerne in falsche Hände, wenn man unverschlüsselt auf seine E-Mails zugreift. Also immer und ganz besonders in offenen WLANs Passwörter nur über verschlüsselte Verbindungen übertragen. Im E-Mail Programm muss man meist nur zwei Häkchen setzen (SSL oder TLS), je nach Provider muss man aber auch mehr Umstellen: Ein freundlicher Helfer oder die Online-Hilfe des Providers hilft auch Anfängern zuverlässig bei der Einrichtung. Auch der Webmailer sollte nur mit einem https:// vor der Adresse genutzt werden. Nochmal: In offenen WLANs, also allen öffentlichen und hoffentlich nicht dem eigenen, kann jeder in Reichweite des Netzes alle Daten mitlesen, wenn sie nicht verschlüsselt werden.
  6. Und zuletzt der simple Tipp: Nicht jedem das Passwort in die Hand drücken. Ein Passwort geht niemanden etwas an. Ganz besonders gilt das für die vielen Dienste, die eine direkte Twitter-Anbindung anbieten, für die Benutzername und Kennwort eingegeben werden müssen. Das ist scheiße, liebe Betreiber. Bitte erzieht die Nutzer nicht zu solch sorglosem Umgang mit ihren Zugangsdaten.

Ja, Passwörter sind ein unbequemes Thema. Aber spätestens, wenn es um handfesten Identitätsdiebstahl oder finanziellen Schaden geht (PayPal, eBay etc. schicken einem gerne ein neues Passwort per E-Mail zu), sollte etwas Umsicht walten.


XP Installations Querelen

24 04 2009

Ich hab noch nie so lange gebraucht, um ein originales Windows XP mit einer originalen CD zu installieren, wie gerade eben. Wie immer habe ich eine veraltete Original OEM/SB CD mit XP Professional und in dem Fall SP1 mit nLite auf den Stand vom SP3 gebracht und bei der Gelegenheit auch gleich den AHCI-Treiber von AMD und den Netzwerktreiber von Realtek integriert. Soweit nichts Besonderes, schon etliche Male gemacht. Aber heute wollte das Dingen keine der beiden hier zur Verfügung stehenden Serials annehmen. Gut, dachte ich, nimmste die andere Original-CD und wiederholst den Vorgang, aber auch mit der anderen CD (deren Image eine andere Prüfsumme ergab) wollte das Setup den key nicht annehmen. Was nun? Das waren definitiv die richtigen CDs und von exakt diesen habe ich seinerzeit auch das Windows mit diesen Serials installiert. Verhext.

Wie habe ich das also schlussendlich gelöst? Die Seite, die die Gulli-Börse übernommen hat, hatte auch einen Thread mit einer formidablen Windows-CD Sammlung in allen gewünschten Geschmacksrichtungen, u.a. auch ein Image einer direkt von Microsoft stammenden XP Professional OEM mit SP3 CD. Die schnell durch nLite geschubst, um die wichtigen Treiber zu integrieren und schon (ja, nur drei Stunden nachdem ich angefangen hatte) funktionierte auch meine Serial, juhu.

Fazit: Es leben Rapidshare und Gulli und Co., die mir wieder mal den Arsch gerettet haben. Ist es eigentlich legal, ein unverändertes Image einer Windows CD via Rapidshare zu saugen, um es mit einer echten Serial zu installieren?

Fazit2: XP wird immer bockiger beim Installieren in letzter Zeit auf moderner Hardware, die eigentlich für Vista gedacht ist. Trotzdem muss ich ständig irgendwo noch XP installieren. Wenn man mal Vista installiert hat, bringt einen das XP Setup von 2001 zur Weißglut. Allein, dass man ohne Diskettenlaufwerk riesige Klimmzüge machen muss, um XP auf AHCI-Hardware zu installieren. Grr.


Vista entlarvt schlecht programmierte Programme

08 04 2009

Ich habe heute den ganzen Tag Vista plus etliche Programme auf einem iMac 24" installiert. Entgegen landläufiger Meinungen hatte ich nur bei einem Programm Probleme, die auf Vista zurückzuführen waren. Oder anders herum: Vista entlarvt die miese Programmierung dieses Programms derart schonungslos, dass sein Entwickler (der inzwischen aufgegeben hat) zum Start von Vista einen Jammerbrief über dieses böse Vista an seine Kunden mit Wartungsauftrag geschickt hat. Dieses Gejammer ist unfassbar peinlich, weil das Programm seit etlichen Jahren schon nicht sauber funktioniert. Unter anderem arbeitet es schon immer ohne sinnvollen Grund nur mit Administratorrechten. Ich kenne den genauen Grund zwar nicht, aber das ist auch völlig egal, denn offensichtlich bestünde dieses Problem bei halbwegs sauberer Programmierung nicht. Aber das ist nicht der einzige Fehler. Das Programm ist ein Musterbeispiel, wie man etwas nicht machen sollte; ergonomisch und programmiertechnisch einfach nur katastrophal.

Ich hätte glatt Lust, mal einen Screencast zu machen, wo ich dieses Stück Software-Dreck en Detail zeige. Was mein Kunde mir über die Jahre schon an Geld bezahlt hat, damit ich die Probleme so gut es geht behebe, ist wirklich immens. Übrigens habe ich auch für die mehrfache Neuinstallation eines HP-Druckertreibers schon so viel Geld in Rechnung gestellt, dass man gleich zwei der problemlosen Brother Geräte hätte kaufen können, mit dem wir diesen HP OfficeJet dann endlich ersetzt haben. Was soll ich sagen: Inzwischen gibt es dort neben dem uralten HP LaserJet 4L nur noch drei Brother-Geräte und keins davon hat jemals für unnötigen Supportaufwand gesorgt. Ein Traum, kann ich nur sagen: Drucker ans Netz, CD rein, ein paar Minuten lang den Installationsassistent laufen lassen (der fragt, ob man nur Drucker- und Scannertreiber oder die ganze Software haben will), fertig. Sogar der "Scannen an" Knopf am Gerät funktioniert sofort wie er soll und im Gegensatz zur Höllen HP-Software sogar dauerhaft. Danach kann man die Geräte schlicht vergessen, so wie es sein soll. Den kleinen Monochrom-Laserdrucker habe ich tatsächlich seit seiner Installation vor einigen Jahren nur zum woanders hinstellen mal anfassen müssen. Ich frag schon gelegentlich nach, ob der überhaupt noch benutzt wird, weil ich nichts davon höre. Ja wird er, täglich.


Datev, immer wieder Datev

31 03 2009

Neulich hab ich ja schon dreieinhalb Stunden damit verbracht, einem nicht von sich aus funktionierenden Datev-Update auf die Beine zu helfen. Soweit so gut.

Seit gestern versuche ich einen Windows Server 2003 mit einer Reperaturinstallation auf eine neue Hardware zu migrieren und auch das scheitert beharrlich bei verbleibenden 39 Minuten im Setup. Fuck. Die Microsoft Knowledge Base ist bemüht, das Problem zu ergründen und redet etwas von nicht unterstützter Hardware. Also habe ich alle Onboard-Geräte und Power-Management-Einstellungen bis auf den Plattencontroller ausgeschaltet, aber auch das half nicht nicht. Allerdings lief eine testhalber durchgeführte normale Installation durch. Hmm.

Aber was hat das Ganze nun mit Datev zu tun? Dieser Foreneintrag half mir schließlich weiter. Kurz gefasst, soll man mit Shift+F10 eine Konsole öffnen, regedit starten und den Schlüssel "HKEY_LOCAL_MACHINE\Software\Microsoft\MS Setup (ACME)" beherzt löschen. Das habe ich gemacht und das Setup lief sofort weiter. Fein! Nun ratet mal, was in dem Schlüssel als einziger Eintrag zu finden war… Natürlich ein Überbleibsel von irgendeiner Datev-Scheiße. Zorn.


Die Angst im Umgang mit Kindern

19 03 2009

In der ganzen Kinderporno-Diskussion bin ich auf diesen langen, aber sehr lesenswerten Text über Pädophilie im Spreeblick gestolpert. Dort werden verschiedene Aspekte behandelt, unter anderem auch die Angst vieler im Umgang mit Kindern und deren Sexualität. Meine Meinung dazu im nichtöffentlichen Bereich nach dem Passwort, weil man so schnell missverstanden wird bei solchen Themen; man schaue sich nur mal die Kommentare zu dem oben verlinkten Beitrag an.


"Die Angst im Umgang mit Kindern" vollständig lesen


Ich lass mich nicht gerne verarschen, liebe O2-Hotline

17 03 2009

Ich war am Wochenende nicht zu Hause, habe also erst am Sonntag Abend bemerkt, dass ich zu Hause nicht telefonieren kann. Also weder Gespräche annehmen noch Gespräche aufbauen, weder mit meinem Haupthandy noch mit dem Zweithandy (Multicard). In Benrath bei meinen Eltern konnte ich telefonieren, also dachte ich mir nichts weiter. Heute konnte ich dann ganz und gar nicht mehr telefonieren, was schon lästig ist, wenn man mit Kunden kommunizieren will. Datendienste gingen aber. Also rief ich von meinem Sipgate Anschluss für fast 17ct/min die O2-Premium Hotline an. Wie in 80% der Fälle ging da keiner dran und ich landete in der Standardhotline. Jetzt kommts.

Die Dame an der Hotline sagte, es wären keine netzseitigen Fehler bekannt und unterstellte mir, ich habe an beiden Telefonen irgendwas verstellt. Mein Einwand, dass ich keineswegs irgendwas verstellt habe, an meinem Zweittelefon schon mal gar nicht, das hatte ich nicht mal angefasst, ignorierte sie zielstrebig und wollte meinen Fall nicht mal als Störung aufnehmen. Noch am Telefon für besagte fast 17ct/min ließ sie mich ein drittes Telefon auftreiben und ein munteres SIM-Karten Wechselspiel veranstalten. Nach einigem hin und her stand fest, dass es definitiv nicht an den Telefonen oder deren Einstellungen lag, da beide prima mit der FONIC-Karte funktionierten. Aber auch das dritte Telefon funktionierte mit meiner Zweitkarte und danach auch wieder mein XDA, was sich nach dem Telefonat leider als Zufall herausstellte.

Also rief ich noch mal an und hatte dieses Mal tatsächlich mal einen Premium-Supporter dran. Ich schilderte kurz mein Anliegen und bekam lediglich die Frage gestellt, ob ich von Düsseldorf aus anrufe. Dort gäbe es seit dem Wochenende eine schwere Netzstörung, mein Problem sei also ganz normal und man arbeite an einer Lösung. Kurz und bündig, angenehm und korrekt. Warum mich die erste Dame derart dreist belogen (Es gibt keine Störung im Netz) und mir SIM-Karten-Sand in die Augen gestreut hat ist mir ebenso schleierhaft geblieben wie ihm. Die Netzstörung betraf tatsächlich nicht nur mich, sondern auch andere Leute und bestand schon das ganze Wochenende, am Samstag zuerst sporadisch, dann am Sonntag fast vollständig nicht erreichbar.

Die ganze Sache ist wirklich unerfreulich. Dass O2 ein ganzes Wochenende und einen Werktag eine großflächige Störung in Düsseldorf hat ist ja schon ärgerlich, passiert aber mal. Dass die Kunden aber nirgendwo darüber informiert und sogar an der Hotline diesbezüglich direkt angelogen werden, ist wirklich ein Unding. Und dafür habe ich auch noch 3,72 Euro vom Festnetz zur Premium-Hotline bezahlt. Wenn ich da so drüber nachdenke bin ich wirklich stinkesauer auf O2. Falls das hier jemand von O2 liest – und davon gehe ich durchaus aus – würde ich mich über eine Erstattung zumindest der unnötig angefallenen Hotline-Kosten freuen, als symbolischen Akt. Die halbe Stunde vertane Arbeitszeit, die Nichterreichbarkeit für meine Kunden und die Kosten für Anrufe mit Sipgate statt der Handy-Flatrate kann ich schlecht beziffern. Ach ja, bei der Gelegenheit wäre auch eine Erstattung der überflüssigen 2x25 Euro Vertragsänderungsgebühr zum neuen Genion S und wieder zurück nach Beendigung des XDA-Projektes, das war anders vereinbart gewesen. Fehler von O2 passieren mal, da habe ich kein größeres Problem mit; nur, wenn ich dafür zur Kasse gebeten werden, ist mir das nicht so recht.


Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien: