Für große Zahlungen ungeeignet: ClickandBuy

03 11 2011

Hinweis: Man beachte vor allem auch die Updates.

Ich bin sehr genervt. Gestern habe ich bei redcoon.de einen Monitor für 264€ bestellt, dort gibt es alternativ zu den üblichen Bezahlmethoden noch PayPal und ClickandBuy. Da PayPal politisch etwas, sagen wir mal, umstritten ist, war ich froh über eine weitere Sofortbezahlmethode und wählte ClickandBuy aus.

Kleiner Exkurs: Warum es sofortueberweisung.de noch gibt, ist mir ernsthaft ein Rätsel. Die Banken drücken sich bezüglich der Weitergabe von PIN und TANs absolut klar aus und der viel zu kleine Skandal im letzten Mai hatte offenbar keinerlei Folgen. Für mich absolut unverständlich, wenn man sich folgendes vor Augen führt (der Einfachheit halber zitiere ich mal den Artikel auf heise.de vom 30.05.2011):

Neben dem Kontostand würden auch die Umsätze der vergangenen 30 Tage, der Dispokredit, die Stände anderer Konten bei der gleichen Bank oder ausgeführte und vorgemerkte Auslandsüberweisungen abgefragt.

Wer sowas macht, gehört für mich sofort aus dem Geschäftsverkehr gezogen, das ist ein eklatanter Missbrauch des u.a. wegen des TÜV-Siegels entgegengebrachten Vertrauens. Andererseits sind die Kunden auch selbst schuld: Wer Dritten entgegen klarer Anweisungen von ungefähr jedem seine Zugangsdaten zum Online-Banking gibt, hat es echt nicht besser verdient.

Zurück zu ClickandBuy. Nach dem Kauf werde ich also, wie von PayPal gewohnt, auf eine Bezahlseite weitergeleitet. Nach einem Login, das ein Captcha von mir ausgefüllt haben will (nerv…) gelange ich auf die Auswahl der internen Zahlvarianten. Ich habe die Wahl zwischen sofortueberweisung.de, GiroPay und Kreditkarte, alle drei sehr prominent platziert. Spannende Frage: Wozu brauche ich ClickandBuy, die hätte ich auch direkt beim Händler haben können. Verschämt ganz am Ende kann ich noch Lastschrift von einem meiner bereits verifizierten Konten wählen. Ah, die eigentliche Funktion gibt es doch noch, schön zu sehen! Einen Schritt weiter kann ich zwischen meinen beiden Konten wählen, um die Einzahlung des geforderten Betrags vorzunehmen.

Einzahlung? Leider stellt sich heraus, dass es 3-5 Tage dauert, bis die Lastschrift abgebucht und die Zahlung dem Händler gegenüber freigegeben wird. Im Ernst? Ich meine wirklich: Im Ernst? Es wird ein Zahlungsdienstleister zwischengeschaltet, dessen einzige Auswirkung ist, den Versand der Ware um 3-5 Tage zu verzögern? redcoon.de bietet sofortueberweisung.de und Kreditkarte selber an, GiroPay bringt mich nicht nach vorne und Vorkasse wäre in jedem Fall schneller als die 3-5 Tage Bearbeitung bei ClickandBuy. Ich wage zu behaupten, dass ClickandBuy damit für Beträge jenseits des Micropayments reichlich überflüssig ist. Ich hätte mein Konto dort sofort gekündigt, wenn ich nicht gelegentlich kleinere Beträge ohne Wartezeit damit bezahlen würde, zuletzt den neuen Duden-Korrektor für 20€.

Geht aber noch weiter: Heute bekomme ich eine Mail von redcoon.de, die mich auffordert, das Geld innerhalb von 7 Tagen zu überweisen, weil sonst die Bestellung storniert würde. Auf meine verwunderte Nachfrage hin erfahre ich folgendes:

Da die Zahlung nicht erfolgreich abgeschlossen wurde, haben wir diese automatisch auf Vorkasse umgestellt.

Na super, das Geld in von ClickandBuy bereits abgebucht worden und bei denen in Bearbeitung, bei redcoon.de wird es aber wohl eher nicht ankommen, denn auf deren Seite ist die Zahlung nicht erfolgreich abgeschlossen worden. ich könnte nun also auf Vertrauensbasis noch mal 264€ anweisen und dann meiner Kohle bei ClickandBuy hinterherlaufen, aber irgendwie habe ich da nur mäßig Lust zu. Ich warte jetzt noch eine Mail vom Support ab und werde die Bestellung dann wohl sauber stornieren und anderswo bestellen. Das ist hoffentlich die Lösung mit dem geringsten Ärger.

Alles in allem werde ich ClickandBuy in Zukunft noch mehr meiden als PayPal, da funktioniert die Abwicklung wenigstens (auf Kundenseite) prinzipiell sauber. Insgesamt äußerst unbefriedigend.

Nachtrag: Ein 01805er-Anruf bei ClickandBuy brachte etwas Licht ins Dunkel: Ich habe nicht bezahlt, sondern eingezahlt. Warum der normale Bezahlprozess dazu geführt hat, ist wohl nicht mehr zu klären, offenbar ist da etwas schief gelaufen bei der Übergabe vom redcoon-Schopsystem zu ClickandBuy. Sehr vertrauenerweckend… Jedenfalls kann ich mir die Kohle bei ClickandBuy in ein paar Tagen wieder ausbezahlen lassen und alles wird gut.

Nachtrag 09.11.2011: Unfassbar, ClickandBuy hat echt mal den Arsch offen: Nach über einer Woche ist meine falsch gelaufene Lastschrift-Einzahlung endlich verbucht. Das alleine ist schon eine Unverschämtheit. Jetzt wollte ich mir die Kohle wieder auf mein Bankkonto auszahlen und erhalte folgende Info:

Ihr für Auszahlungen verfügbarer Kontostand ist niedriger als Ihr aktueller Kontostand, da Sie auf Ihrem ClickandBuy-Konto kürzlich eine Einzahlung per Lastschrift vorgenommen haben. Wenn Sie diese Methode für eine Einzahlung auf Ihrem Konto nutzen, ist der eingezahlte Geldbetrag erst nach einer gewissen Wartezeit zur Auszahlung verfügbar.

Nicht nur, dass die gewisse Wartezeit für alles andere als gewiss ist, muss ich jetzt noch mal länger auf mein eigenes Geld warten, das überhaupt erst wegen einer Fehlfunktion eingezahlt wurde, statt als Bezahlung an den Händler zu gehen.

Nachtrag 19.11.2011: Ich bin nun noch fassungsloser als zuvor. Fast drei Wochen nach der Einzahlung ist wirklich lang, aber noch immer war der Betrag ganz frech eingefroren. Eine ziemlich wütende Mail an den Kundenservice von ClickandBuy später wurde mir kurzfristig ein Termin genannt, ab dem ich mir mein Geld wieder auszahlen lassen kann. Also logge ich mit zum angegebenen Zeitpunkt ein und tatsächlich ist der Betrag zur Auszahlung freigegeben. Doch ich habe die Rechnung ohne die Frechheit von ClickandBuy gemacht, denn ich muss 1,85€, also 0,7% Transaktionsgebühren bezahlen. Wut kocht in mir hoch. Egal, Lehrgeld. Doch dann: Bitte rufen Sie unter folgender kostenpflichtigen Hotline an, um Ihre Transaktion zu bestätigen… Mir fällt echt nichts mehr ein.

Der Mitarbeiter am Telefon ist wieder sehr freundlich, zeigt ein wenig Verständnis für meine Wut, kann aber nichts an der Sache ändern. Immerhin sagt er mir, an wen ich meine Beschwerde richten kann. Es bleibt dabei: Transaktionsgebühren für eine überflüssige und von mir nicht gewollte Transaktion und für die Dreistheit, mein Geld 16 Tage plus wieder 3-5 Tage bis zur Auszahlung einfach einzubehalten. Er erklärt mir dann noch irgendwas von Geldwäscheregelungen und klärt mich darüber auf, dass die fehlgeschlagene Bezahlung daran liegt, das Redcoon für höhere Beträge keine Lastschrift erlaubt und man deswegen intern erst bei ClickandBuy einzahlen muss. Warum der Prozess dann allerdings Redcoon einfach als abgebrochen gemeldet wird, obwohl man sich genau an die Regeln gehalten hat, konnte er mir nicht sagen.

Am Ende stellt sich also raus, dass bei mir überhaupt nichts schief gelaufen ist, sondern ich tatsächlich in einem von Redcoon und ClickandBuy absichtlich so gestalteten Prozess in eine Sackgasse geleitet wurde. Jede Bestellung bei Redcoon (wahrscheinlich oberhalb eines bestimmten Betrags), die über ClickandBuy bezahlt wird, muss dort entweder aus bereits bestehendem Guthaben oder über sofortueberweisung.de, Giropay oder Kreditkarte bezahlt werden. Bis auf Giropay und zuvor eingezahltes ClickandBuy-Guthaben bietet Redcoon diese Zahlungsweisen allerdings sowieso selber an, was a) die Sinnfrage dringender als zuvor stellt und b) die Frage aufwirft, wieso Redcoon auf diesen Umstand nicht deutlich bei der Wahl der Zahlungsmittel hinweist? Denn Giropay kann man auch selber anbieten und höheres Guthaben bei ClickandBuy halte ich für eine irrelevante Randerscheinung. Wobei, wahrscheinlich ist das gar keine Randerscheinung, denn ich werde nicht der einzige sein, dem sowas passiert und in so einem Fall hat man ja mehrere hundert Euro Guthaben, die man sich ohne Internevtion beim Kundendienst nicht so einfach wieder auszahlen kann, wohl aber ausgeben. Un-fass-bar.

Erinnert mich daran: Nie wieder ClickandBuy für Beträge >20€.


5 Monate mit dem Dell Streak - Eine Grabesrede

07 05 2011

Nachdem ich dreieinhalb Monate mit einem hässlichen Sprung im Display meines Dell Streak gelebt habe (mehr dazu hier), habe ich mich doch mal getraut, ein Ersatzdisplay für 60€ inkl. Versand in Hong-Kong zu bestellen. Das kam heute und ich habe mich natürlich sofort an den Einbau gemacht. Im Internet gibt es gute Anleitungen (Streak auseinanderbauen und Streak Display tauschen) und das nötige Werkzeug war beim Ersatzdisplay dabei, sollte also schaffbar sein. Ist es auch, nur leider kommt auf dem Display nun kein Bild, was sich sicher mit einem erneuten Auseinanderbauen beheben ließe. Das spare ich mir aber, denn beim fummeligen lösen der Klebestellen habe ich leider auch die Anbindung der Funktionstasten (Home, Zurück, Menü) abgerissen, was sich nicht ohne weiteres fixen lässt. Mist, ein teures Grab nach nur fünf Monaten.

Ich könnte nun für 340€ inkl. Versand einfach ein neues Streak bestellen, aber ich habe mich für ein HTC Desire HD für 404€ inkl,. Versand entschieden. Warum? Nach meinem sehr positiven Ersteindruck kann ich nun ein paar weitere Eigenschaften des Streak aufzählen, die mitunter durchaus lästig sind.

Mein Gerät war wohl ein Montagsgerät und hatte von Anfang an die Macke, dass es bei leichtester mechanischer Belastung einfach neustartete. Das ließ sich auf ein Minimum reduzieren, indem ich die beiden Kontakte des Akkudeckels mit einem kleinen Draht kurzschloss. Fummelig, aber funktionierte meistens. Trotzdem startete es gelegentlich beim in die Jackentasche stecken einfach neu, was wahrscheinlich daran lag, dass ich das Drähtchen nur um die Kontakte gewickelt und nicht festgelötet hatte. Insgesamt verschmerzbar, aber jedes Mal ein Stich ins Besitzerherz.

Ärgerlicher war da schon, dass das riesige 5"-Display ein unhandlich großes Gerät bedingt. Am wenigsten stört mich das beim Telefonieren, selbst wenn ich nicht, wie unterwegs fast immer, mit dem Headset telefoniere. Das sieht halt doof aus, funktioniert aber prima. Im Winter war das alles auch kein Problem, denn meine Jackentasche ist groß genug. Jetzt bei gutem Wetter aber merke ich, dass ein so großes Gerät in der Hosentasche schon aufträgt. Das wäre auch noch OK, wenn ich mir dabei nicht Sorgen um die mechanische Belastung machen würde, denn ein Bein ist nun mal rund und Hosentaschen eng. Auch verschmerzbar, denn auf 5" surft es sich hervorragend. Auch als Navi in der mit 45€ nicht ganz billigen Autohalterung hat es sich hervorragend gemacht. Leider kann man 5" nicht sinnvoll hochkant betreiben, weil es dann für zwei Hände zu schmal, für eine Hand aber zu breit ist. 5", einen Tacken zu groß.

Mit dem Transport in der Hosentasche kommt aber noch ein lästiger Aspekt meines Geräts ins Spiel: Wenn ich es nah am Körper mit dem Display zum Körper hin transportiert habe, reagierte danach der Touchscreen für ein paar Sekunden bis Minuten nicht oder nur seeehr sporadisch. Entsperren oder Gespräche annehmen ging dann nicht. Auch damit konnte ich leben, indem ich es – riskant, riskant – nur mit dem Display vom Körper weg transportiert habe. Ich glaube, die Körperwärme war hier das Problem.

Das war noch nicht alles: Der Kopfhörerausgang rauscht so laut, dass Musik auf leisestmöglicher Einschlaf-Lautstärke gerne mal vom Rauschen überdeckt wird. Wenigstens ist das ein angenehmes unauffälliges Rauschen, damit konnte ich also auch leben. Ich weiß nicht, ob der letzte Punkt alle Android-Telefone betrifft, aber gelegentlich haben vor allem Google Maps und manchmal auch der Browser das Telefon so ausgelastet, dass die Musik stark stotterte und das Telefon fünf Minuten lang gar nicht mehr reagierte, auch nicht auf das Pause-Kommando für die Musik, die derweil weiterstottert. Das kam zwar nicht so häufig vor (alle zwei bis drei Wochen mal), aber das war der für mich nervigste Aspekt an der ganzen Streak-Experience. Irgendwas lag da im Argen.

Das alles sind neben den im Ersteindruck beschriebenen Lästigkeiten wie dem PDMI-Ladeanschluss gute Gründe, nicht erneut ein Streak zu kaufen. Momentan 340€ inkl. Versand sind zwar überschaubar und mein Car-Kit war auch nicht billig, aber die Gefahr, wieder so ein Montagsgerät zu bekommen, ist gegeben und die anderen Kritikpunkte hinterlassen in der Summe ein lediglich gemischtes Bild. Den endgültigen Todesstoß hat sich Dell aber selber gegeben, denn das Service-Angebot für einen Display-Tausch in Höhe von 350€ ist eine unfassbare Dreistigkeit, ich bin deswegen immer noch nachhaltig sauer auf Dell. Dass ein Display mal kaputt geht passiert, besonders, wenn es mit 5" eine so große Angriffsfläche bietet. Dass aber eine Reperatur fast den Neuwert erreicht bzw. inzwischen sogar darüber liegt, ist schlicht nicht zu rechtfertigen. Keine Ahnung, ob HTC das anders handhabt, aber Dell hat mich diesbezüglich schwer enttäuscht.

Trotzdem mochte ich mein Streak und bin ein wenig traurig, dass es mich nur fünf Monate begleiten durfte. Alles in allem ein tolles Gerät mit dem besonderen Etwas. Ruhe sanft.

Ein Desire HD kaufe ich übrigens deswegen, weil ich nach den Erfahrungen mit einem 5" Gerät ein 4,3" Display für den Sweet-Spot halte. Zudem war ich mit meinen bisherige HTC-Geräten soweit sehr zufrieden, weil sie aus dem miesen Windows Mobile noch einiges herausholen konnten und die Hardware stets sehr robust und gut verarbeitet war. Auch das Desire, das ich neulich gekauft habe, gefällt mir richtig gut, die Sense-Oberfläche macht richtig Spaß. Das Google Nexus S war ein weiterer heißer Kandidat und mit 340€ sogar deutlich günstiger. Vor allem aber kommen da regelmäßig und zeitnah Android-Updates. zudem mag ich das leicht nach innen gebogene Display. Aber das 4,3" Display hat dann doch das Rennen gemacht.

P.S. Die Tage wird das Car-Kit bei eBay auftauchen und auch das defekte Gerät (mit dem nagelneuen Tauschdisplay), wenn ich weiß, ob und wie ich es löschen kann. Wer vorher zuschlagen will, meldet sich, ich mache einen fairen Preis.


XRumer knackt reCaptcha

07 03 2011

Scheiß SPAM-Arschgeigen, die ihr Geschäft vornehm Blackhat-SEO nennen. Ekelerregendes Pack. Seit einiger Zeit bekomme ich täglich ein bis zwei Spamkommentare hier im Blog, die es offenbar an meinem reCaptcha vorbei schaffen. Die bekommt ihr nicht zu sehen, weil sie allesamt in der Moderierungsfunktion hängen bleiben, wenigstens das funktioniert. Meine erste Befürchtung hat sich aber leider bewahrheitet: SPAM-Tools können reCaptcha knacken. Ein Spamkommentar brachte mich auf die richtige Fährte, ein Tool mit dem Namen XRumer wird in grauen Kanälen verkauft und wirbt ganz unverhohlen mit reCaptcha-Knack-Fähigkeiten:

With XRumer Elite will be possible to pass automatically such popular protections as ReCaptcha and DLE-captcha (ReCaptcha is used on more than 30% of resources; same as DLE-captcha become very popular). XRumer Elite can bypass 7 new most popular graphical protections.

Die Software kostet 570€ und es bedarf einer gewissen Planung, um damit erfolgreich Suchmaschinen-SPAM platzieren zu können. Was aber bedeutet das für mein Blog und seine Kommentarfunktion? reCaptcha als das einzig erfolgversprechende grafische Captcha fällt also aus, noch stärkere, mithin also auch noch schlechter lesbare Captchas kommen keinesfalls in die Tüte. Andererseits regnet es ganz ohne Captcha noch viel mehr Spamkommentare. Dass Kommentare moderiert werden, also nie öffentlich erscheinen, nimmt mich offenbar nicht aus der Opferliste und macht mir nicht ganz wenig Arbeit.

Nun bestünde die Möglichkeit, Kommentare in meinem Blog ganz abzuschalten, was gemessen am Verhältnis von Kommentaren zu Einträgen sogar verschmerzbar wäre (ich habe weniger Kommentare als Beiträge und lege auch keinen Wert auf Kommentare). Aber ein Blog ohne Kommentarfunktion ist irgendwie kein Blog und außerdem wäre das eine Kapitulation vor dem Spammer an sich, dafür bin ich noch zu stolz. Ich werde also vorerst weiter die Moderations-Benachrichtigungsmails ignorieren und abwarten, was sich an der Front tut.

Scheiß SPAM-Arschgeigen, die ihr Geschäft vornehm Blackhat-SEO nennen. Ekelerregendes Pack.


Die Enttäuschung in der Wolke am Beispiel Evernote

11 02 2011

Alles muss heute in die Cloud. Allenthalben wird einem vorgeschwärmt, was man mit den ganzen praktischen Cloud-Diensten alles tolles machen kann, vor allem in Sachen Zusammenarbeit. Nun befinde ich mich zusammen mit anderen Leuten seit einiger Zeit auf der Suche nach verschiedenen Cloud-Lösungen und erlebe eine Enttäuschung nach der anderen. Nach der Lektüre der Featurelisten scheint alles klar, unsere Anforderungen sind scheinbar abgedeckt und eine monatliche Nutzungsgebühr in bezahlbarem Rahmen scheint dafür angemessen zu sein. Dann meldet man sich an, testet das gebotene Featureset und den vorgesehenen Workflow. Kurze Kunstpause, daher der Punkt. Denn dann kommt die große Ernüchterung. Versprochene Features sind zwar irgendwie da, aber oft derart halbherzig implementiert, dass der Nutzwert gegen Null oder darunter sinkt. Wenn es denn überhaupt funktioniert und nicht wegen Serverausfällen oder wackeliger AJAX-Programmierung gerade mal wieder hakt. Ein Beispiel gefällig?

Evernote ist ein Notizverwaltungsdienst, der sich im Web und auf so ziemlich allen Plattformen automatisch synchronisiert, auf meinem Smartphone war ein Client dafür sogar schon vorinstalliert. Nun, das scheint also schon mal recht ausgereift zu sein. Tatsächlich funktioniert alles auf Anhieb, die Synchronisation klappt, die deutsche Übersetzung ist aber teilweise krude und fehlerhaft. Halb so wild. Dann geht es um das versprochene Sharing von Notizbüchern im Team und direkt läuft man in die erste Falle: Kostenlos lässt sich anderen nur Lesezugriff auf eigene Notizbücher geben, also meldet man sich zu zweit für je 5$ für einen Monat zum Premium-Abo an, wobei die Bezahlung per PayPal aus verschiedenen Gründen bei beiden fehlschlägt. Hmm, so hochprofessionell kommt uns das schon nicht mehr vor, aber trotzdem die Kreditkarte gezückt und bezahlt. Nun müssen wir die Einladungen neu verschicken, weil man nicht nachträglich von Lese- auf Schreibzugriff umstellen kann. Das könnte einfacher sein, aber auch das ist kein echtes Hindernis.

Der eingeladene bekommt eine E-Mail und gelangt über einen Link in den Gastmodus des geteilten Notizbuchs und kann dort auch Änderungen vornehmen. Gut, nun muss das geteilte Notizbuch nur noch den eigenen Notizbüchern hinzugefügt werden und wir sind glücklich. Leider sehe ich keine Möglichkeit dafür, lade die Seite also in einem anderen Browser mal neu. Dort sehe ich den Button für einen Sekundenbruchteil aufblitzen und direkt wieder verschwinden. Also ein paar mal F5 drücken und versuchen, den Link zu erwischen. Das klappt sogar scheinbar irgendwann, denn im Hauptmenü taucht das geteilte Adressbuch nun unter dem Oberthema "Geteilte Adressbücher" auf. Wir wähnen uns am Ziel, sind es aber nicht. Tatsächlich hat man nun nur einen Link zum Gastzugang des fremden Notizbuchs in sein Menü aufgenommen, alle coolen Funktionen wie Synchronisierung mit Geräten und Desktop-Client oder die globale Suche über alle Notizbücher funktionieren nur mit eigenen Notizbüchern. Bitte was? Das kann nicht deren Ernst sein! Ein Blick ins Forum bringt etliche wütende Premium-Kunden ans Licht, die an der selben Stelle gestolpert sind. Seit anderthalb Jahren verspricht Evernote immer mal wieder Besserung auf dem Gebiet, passiert ist aber scheinbar nichts. Man kann also wirklich nur im Web auf geteilte Notizbücher zugreifen und das auch nur in Form eines unpraktischen Wurmfortsatzes. Dafür braucht man Evernote aber nicht, schon gar nicht gegen Geld.

Es ist schon beeindruckend, in welchem Maße die Team-Sharing-Funktionen von Evernote nutzlos sind. Das wäre sogar gar nicht mal so schlimm, wenn sie nicht auch noch als Feature beworben würden. So aber wirft man Premium-Kohle aus dem Fenster, was die Enttäuschung umso größer macht. So ist es uns in letzter Zeit mit einigen Cloud-Diensten ergangen, der Fall Evernote war aber so ärgerlich, dass ich dazu mal etwas schreiben musste. Positive Ausnahmen waren die Google-Dienste und Dropbox, das sich als wirklich genial erwiesen hat.

Als Fazit kann ich nur sagen, dass man sich bei der Auswahl eines Cloud-Dienstes maximal 5 Minuten mit der jeweiligen Featureliste auseinandersetzen sollte. Danach sollte man sich anmelden oder einen Demo-Zugang nutzen und selber testen, ob die gewünschte Funktion wirklich in nutzbarer Form vorhanden ist. Die Diskrepanz zwischen Featureliste bzw. Verkäuferversprechen und der tatsächlichen Nutzbarkeit ist gerade im Cloud-Kontext oft erschreckend hoch. Zweites Fazit. Nicht auf Hörensagen hören. Wenn bei Twitter oder sonstwo alle einen Dienst toll finden, einfach mal nachfragen, wer den denn tatsächlich produktiv einsetzt oder sich zumindest mal eingehend angesehen hat. Auch Autoren von Artikeln in Blogs und Fachmagazinen, die eine ganze Reihe toller Cloud-Dienste empfehlen, scheinen sich nur in der Minderheit der Fälle eingehend mit den einzelnen Diensten beschäftigt zu haben. Also auch hier vorsicht, denn so ein Evernote-Patzer fällt einem erst auf, wenn man das Feature auch ausprobiert hat. Clouddienste sind in ihrer Kernkompetenz oft sehr gut, fallen dann zu den Rändern hin aber, meist in Form von Unausgereiftheit, stark ab. Wenn das, was man will, die Kernkompetenz eines Dienstes ist, wird man immerhin eher selten ein Problem bekommen.

Update 02.02.2012: Wo ich den Artikel gerade noch mal lese, muss ich mich gleich mal über Studierende auslassen, die einem in Hausarbeiten allen Ernstes einen Featurelistenvergleich der oberflächlichsten Sorte als Evaluation andrehen wollen. Dazu fällt mir dann wirklich nicht mehr viel ein. Mit sowas bekommt man zwar irgendeine Note, verliert aber ganz sicher den intellektuellen Respekt des Prüfers. Erschreckend, wie egal das den meisten Studierenden ist.


350 Euro für einen Sprung in der Schüssel

19 01 2011

Ungeschickt. Man sollte einfach keine nicht ganz leichten metallenen Gegenstände fallen lassen, wenn das fast neue Smartphone in der Nähe liegt. Nun hat mein Dell Streak eine kaputte Frontscheibe, da hilft auch kein bruchfestes Gorilla-Glas. Aber immerhin kein Schaden an Display oder Touchfunktion. Gerärgert habe ich mich also vorerst nur kurz, denn vom Dell-Service hielt ich bisher sehr viel. Was kann der Austausch einer 83cm² kleinen rechteckigen Glasscheibe schon kosten? Ein Anruf bei der Frankfurter Festnetznummer, ein paar Wochen Verzicht auf das Gerät und vielleicht 100, wenn es hoch kommt 200 Euro, das wäre dann aber schon recht happig.

350€! Dreihundertfünfzig Euro! So viel soll der Austausch der Scheibe kosten. Zum Vergleich: Für 430€ inkl. Versand bekomme ich im Handel ein Neugerät. Hat Dell ein Rad ab? Jetzt ärgere ich mich wirklich.

Was also tun? Der erste Impuls ging in Richtung Neugerät, nur aus Prinzip. Aber nach einem Tag schlechter Laune dreht sich meine Einstellung. Das Dell Streak ist etwa so groß wie meine Hand und liegt immer in meiner direkten Nähe, gibt also eine wirklich gute Trefferzone für alles mögliche ab, vom verschütteten Tee bis zu herabfallenden nicht ganz leichten metallenen Gegenständen. Es ist also nicht auszuschließen, dass die Scheibe irgendwann noch mal beschädigt wird. Bei 350€ für einen Scheibentausch ist mir das Risiko eklatanter Folgekosten einfach zu hoch. Vor allem aber bin ich entsetzt von und verärgert über Dell. Das können die doch nicht ernst meinen?

Momentan denke ich also über einen Markenwechsel in Sachen Smartphone nach. Das Dell Streak gefiel mir wirklich ausgesprochen gut. Die einzige wirklich bittere Pille war für mich bisher der unverschämte Preis von fast 35€ für ein zweites Ladekabel. Aber dass Dell seine Kunden im Servicefall derart nackig macht, geht gar nicht. Meine – wegen meiner bisher eigentlich hervorragenden Serviceerfahrungen – sehr Dell-affinen Notebookempfehlungen muss ich dann auch noch mal überdenken. Alles Mist.

Also werde ich wohl vorerst mal mit dem Sprung leben und die Smartphone-Neuerscheinungen der kommenden Wochen abwarten. Schade, denn das Streak habe ich in den paar Wochen wirklich lieb gewonnen.


Der Pferdefuß an Amazon Prime

16 11 2010

Ich werde meine Amazon Prime Mitgliedschaft nicht verlängern. Nicht, weil ich grundsätzlich keinen Nutzen im Wert von 30€ pro Jahr darin erkennen würde. Die Idee finde ich an sich prima, aber in der Realität krankt das System an einer sowieso schon ärgerlichen Eigenheit von Amazon: Dem Drecks-Marketplace.

Dass man mit Prime immer Expressversand hat, ist nett, aber dank Amazons sowieso schon schnellem Versand nicht so wirklich kritisch. Prime macht ja in erster Linie Sinn, wenn es um die versandkostenfreie Lieferung geringwertiger Güter geht. Und genau da kommt der Marketplace ins Spiel, denn unter dem ganzen Fremdanbietern sind die Angebote mit Versand durch Amazon bei diesen geringwertigen Waren in der klaren Minderheit. Das nervt unglaublich, denn nur bei letzteren gilt Prime. Das wäre sogar nur halb so wild, wenn man bei Amazon einen immer greifenden Filter für den ganzen Marketplace-Scheiß einstellen könnte, was den Umgang mit Amazon auch abseits von Prime wieder benutzbarer machen würde. Gibts aber nur in der Form, dass man das bei jeder Suche erneut anhaken muss.

So einen Filter in gut stelle ich mir so vor, dass Marketplace-Angebote nur (deutlich gekennzeichnet) angezeigt werden, wenn das Produkt von Amazon nicht lieferbar ist. Die Suche soll, wenn ich mir das nicht im Einzelfall ausdrücklich anders wünsche, gar keine Marketplace Angebote anzeigen. Ich will bei Amazon bestellen und nicht bei irgendwem über Amazon. Zu Hause bin ich bei Amazon immer eingeloggt, es läge also nahe, wenn dieser Filter global für alle Suchen unter meinem Profil greifen würde (wie gesagt, mit leicht erreichbarer Ausnahme im Einzelfall). Solange Amazon so einen Filter nicht anbietet, ist Prime für mich in erster Linie ein frustrierendes Unterfangen, weil es gerade da, wo es sich lohnen würde, nicht greift. Der einzige praktische Nutzen für mich ist bei einzelnen CDs, die unter 20€ kosten, aber da kaufe ich meistens sowieso MP3s oder mache eine Bestellung mit anderen Sachen voll. Also keine Verlängerung von Prime zur Zeit.


Online-Banking kompliziert

03 08 2010

Ich nutze nun seit über zehn Jahren Online-Banking und bin bei meiner 11. TAN-Liste angekommen. Nun bekomme ich bei StarMoney bei jeder Überweisung die Meldung, dass ich auf smsTAN umstellen kann. Die Website meiner Sparkasse verrät, dass das 9ct/smsTAN kostet mit einer Ausnahme bei Premium-Konten. Trotz der zweistelligen Kontoführungsgebühren, die ich monatlich für meine verschiedenen Geschäfts- und Privatkonten, sowie meine Kreditkarte entrichte, gilt das auch für mich. Wieder einmal bleibe ich also beim klassischen (i)TAN-Verfahren, das weiterhin das bequemste bleibt.

Zu WG-Zeiten hatten wir ein gemeinsames WG-Konto für Miete und Nebenkosten bei der 1822direkt in Frankfurt, wofür ich extra einen Klasse-3-Kartenleser und eine HBCI-Karte angeschafft habe. Dieses Verfahren klang sicher und bequem, war es aber nicht. Also sicher schon, aber bequem keineswegs: Bei jedem Start von StarMoney mache ich einen automatischen Kontenrundruf und aktualisiere alle meine Konten. Leider muss man bei HBCI auch für das Abholen der Umsätze immer die PIN eingeben; bei allen TAN-Verfahren lässt sich die PIN hinterlegen, was in Kombination mit Programmpasswort und TAN-Liste ausreichend sicher ist. Das treibt einen in den Wahnsinn und so habe ich das WG-Konto nur alle paar Wochen aktualisiert. Das reicht aber noch nicht an Unbequemlichkeit: Hätte ich meine Konten bei der Düsseldorfer Stadtsparkasse ebenfalls auf HBCI mit Karte umgestellt, hätte ich bei jedem Kontorundruf zwei Karten und zwei PINs eingeben müssen. Es gibt bei HBCI mit Karte zwei inkompatible Kartensysteme und meine beiden Banken (obwohl beides Sparkassen) benutzten unterschiedliche Systeme, also nichts mit nur einer Karte. Diskettenwechsel sind seit dem Aufkommen von Festplatten reichlich out und ich werde mich garantiert nicht als Kartenjockey verdingen.

Mein Vater hat inzwischen einige TAN-Verfahren bei seiner (Genossenschafts-)Bank durch, aktuell hat er ein unfassbar kompliziertes chipTAN-Verfahren am Start: Man bekommt vom Bankprogramm zwei Codes angezeigt, die man in einen Kartenleser eintippt, in den man seine Kontokarte steckt. Dann kann man sich eine TAN generieren lassen, die man wiederum vom Winzdisplay des Kartenlesers ablesen und in den Computer eintippen muss. Wow, das bekommt den Preis für das lästigste TAN-Verfahren. Nur meine Mutter treibt mehr Aufwand für Überweisungen, indem sie Überweisungsträger ausfüllt und per Post (und jeweils frankiert) an ihre Bank sendet.

Meine Sparkasse bietet neben dem smsTAN-Verfahren, das sich wohl von selbst erklärt, auch ein chipTAN genanntes Verfahren an. Hierbei kauft man einen Kartenleser für einen geringen zweistelligen Betrag (Ausnahme Premium-Konten, die bekommen das Ding geschenkt), in den man immerhin keine zwei Codes eintippen muss, sondern das Gerät vor ein flackerndes Muster auf dem Bildschirm hält. Bei gesteckter Kontokarte erzeugt das Ding dann eine TAN, die man abtippen muss. Immer noch kompliziert, aber nicht so irre, wie zwei Codes abtippen zu müssen. Trotzdem viel komplizierter als einfach eine TAN von einer Liste abzutippen und durchzustreichen.

Es gibt noch etliche weitere mehr oder weniger komplizierte Verfahren für Menschen, die unachtsam genug sind, ihre TANs auf jeder dahergelaufenen Phishingseite einzugeben. Mein Tipp gegen die Angst vorm Phishing oder sonstigen Angriffen: Einfach kein Webbanking machen, StarMoney kostet zwar immer mal wieder Geld und nervt auch ziemlich, aber wer kein Webbanking macht, braucht sich nicht vor dessen Gefahren zu fürchten. HBCI mit PIN/TAN ist nachwievor das bequemste Online-Banking und wer einmal in StarMoney einen bestimmten Umsatz von vor vier Jahren gesucht und auf Anhieb gefunden oder alle Umsätze eines bestimmten Absenders heraus gefiltert hat, wird schon aus Bequemlichkeit kein Webbanking mehr machen wollen.

P.S. Ich tue deswegen so, als gäbe es neben StarMoney keine anderen Bankprogramme, weil ich mir die kostenlosen davon irgendwann einmal angesehen habe: Gruselig bis sehr gruselig. Und die anderen kommerziellen wirkten bei kurzer Betrachtung auch nicht weniger nervig als StarMoney und waren allesamt teurer. Also benutze ich seit Version 3.0 StarMoney und ärgere mich noch immer über die selben Kleinigkeiten. Beispiel: Auf meinem 24" Bildschirm ist massig Platz für die Umsatzliste, aber die beiden letzten Spalten (Buchungsbetrag und Saldo) stellen sich immer wieder auf eine zu schmale Breite zurück, bei der schon die dritte Stelle vor dem Komma nicht mehr ganz zu sehen ist. Anderes Beispiel: Wenn ich bei den Kreditkartenumsätzen eine Kategorie vergeben will, treffe ich häufiger das Feld dafür nicht genau, was die Liste dazu veranlasst, ganz an den Anfang zu springen. Und die Liste ist lang. Anderes Beispiel: In verschiedenen Listen (u.a. der Kategorienliste) kann man nicht mit dem Mausrad scrollen. Anderes Beispiel: Füllt man bei einer Überweisung nicht zuerst das Nanensfeld aus, werden alle anderen Felder beim ersten Buchstaben, den man in das Namensfeld eintippt automatisch mit den letzten Daten für den betreffenden Namen gefüllt. Man muss also immer zuerst den Namen ausfüllen oder man füllt mehrmals aus. Besonders lästig ist das in Kombination mit der bequemen Übernahmefunktion aus der Zwischenablage, wenn dort kein Name enthalten ist. Letztes Beispiel: Wenn man eine Kontonummer oder Bankleitzahl einfügen möchte, die Leerzeichen enthält, lehnt StarMoney das rundweg ab, statt einfach die Leerzeichen zu entfernen. Ich könnte noch ein paar Absätze lang so weiter machen.


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').

Nachtrag 05.07.2010: Wo ich den alten Beitrag gerade noch mal lese, fällt mir auf, dass Doku lesen oft hilft. Der letzte Punkt wird natürlich viel eleganter gelöst, wenn man einfach die data()-Methode von jQuery benutzt. Also wie immer: Augen auf und Hirn an.

Nachtrag 19.07.2011: In den Kommentaren wurde ich darauf hingewiesen, dass ein .stop(true, true) die genannten Probleme löst. Fantastisch. Ist das neu dazu gekommen oder bin ich nur zu blöd, Dokumentationen zu lösen?

Nachtrag 04.11.2011: jQuery 1.7 nimmt sich zumindest bei toggling animations des Problems an, dass ein Abbruch auf halber Höhe weitere Klappvorgänge nur noch bis dort hin durchführt. Ich zitiere aus dem Release-Post zu jQuery 1.7:

In previous versions of jQuery, toggling animations such as .slideToggle() or .fadeToggle() would not work properly when animations were stacked on each other and a previous animation was terminated with .stop(). This has been fixed in 1.7 so that the animation system remembers the elements’ initial values and resets them in the case where a toggled animation is terminated prematurely.

Ich habe das noch nicht ausprobiert und wenn das nur bei Toggle funktioniert, braucht es eine der oben genannten Methoden in anderen Fällen weiterhin, aber trotzdem eine gute Nachricht.