WTF?!

The Daily WTF ist eine unterhaltsame Seite für den geneigten Entwickler. Hier werden die grusligsten Fundstücke aus dem Programmiereralltag ausgestellt. Wenn es nur nicht so realistisch wäre..
Leider trifft man hin und wieder auf eigene Werke aus früheren Zeiten, die ebenso die Qualität hätten, in diese Galerie des Grauens aufgenommen zu werden. Man sollte daher vielleicht nicht zu vorschnell sein, ein harsches Urteil abzugeben. Wenn man in ein großes, unübersichtliches Projekt geworfen wird, produziert man anfänglich zwangsläufig eine Menge Unfug. Das hat damit zu tun, daß eigentlich keine Zeit vorhanden ist, die gesamte Funktionsweise zu verstehen. Dann wird kopiert & eingefügt, das es eine Freude ist. Aber was soll man machen? Die Aufgabe muß irgendwann fertig werden. Der entscheidende Punkt ist eben, am Ball zu bleiben und den vergangenen Unfug möglichst auszumerzen. Ebenso trifft man häufig auf Stellen, die auf den ersten Blick als grober Unfug aussehen, sich bei näherer Betrachtung aber oft als einzig mögliche Lösung (oder schmerzlosester Workaround) entpuppen. Hatte ich auch schon mal bei Joel gelesen, daß fehlerbereinigter Code oft grauenhaft aussieht. Muß ihm Recht geben. Dann wundert mich allerdings, warum noch so viele Bugs drin sind..

Streetlevel!

Virtual Earth Streetlevel ist sicherlich die nächste Stufe nach Google Earth. Köstliche Idee! Jetzt kann man sich direkt ein Bild der Gegend machen, ohne die Abstraktionsstufe der Karte. Sicherlich ganz hilfreich, wenn man eine Adresse sucht und dann sagen kann "guck mal, das hier sieht genauso aus". Es wird natürlich noch Jahre dauern, bis etwas derartiges in der alten Welt ankommt. Schade eigentlich.

Am (Programmcode-) Wühltisch

Exceptions treiben mich noch irgendwann mal zum Wahnsinn. Damit ich herausfinde wo es kracht, muß ich im Debugger "Break on Exception" aktivieren. Dann bleibt er stehen wenn eine auftritt, auch wenn sie behandelt wird. Jetzt ist aber der Code gerammelt voll mit Aktivitäten wie:

try {
// lade irgend ein bitmap
..
}
catch( .. ) { .. }

Auf den Entwicklungsmaschinen und beim Kunden gibt es oft diese Bitmaps nicht. Macht aber auch nichts, ist ja nur eye candy. Jetzt kann ich entweder o.g. Einstellung wieder deaktivieren oder endlos "continue" klicken, bis der Ausführung irgendwann einmal an einer interessanten Stelle angekommen ist.
Ok, das kann man jetzt als eine lästige Nerverei abtun. Aber hier steckt noch ein viel fundamentaleres Problem dahinter. Das Abfangen der Exception bewirkt nämlich, daß der möglicherweise komplett verbuggte Code *hinter* der die Exception auslösenden Stelle nie ausgeführt wird. Passiert das eines Tages doch (z.B. beim Kunden), wundert man sich über heitere Nebeneffekte. Dahinter steckt die Denkweise, Exceptions wie gotos zu verwenden. Ich finde das grauenhaft.
Warum nicht so

if(File.Exists(filename)) {
// lade bitmap ....
}

Daher sollte man o.g. Code einfach schnell vergessen. Die Regel muß einfach lauten "wirf nur dann, wenn es wirklich was zu werfen gibt!" (und dann sollte es auch OK sein, wenn das Programm mit einem schönen Exceptiondialog abrauscht).

Zimmerpflanzenpflegekommando

Bei mir auf der Arbeit taucht in größeren Abständen ein Blätterabstaubtrupp auf. Tatsächlich. Das sind ein paar sehr nette Damen von einer Gärtnerei?, die den Auftrag haben, unsere ärmlich vor sich hindümpelnden Officepflanzen etwas aufzupolieren. Da wird besprüht und abgestaubt, daß es eine Freude ist. Noch ist es zu früh um festzustellen, ob diese Behandlung den Fikussen zu stattlicherem Aussehen verhilft. Es wäre vermutlich auch mit häufigerem Lüften getan, aber es gibt eben immer ein Veto gegen eine Fensteröffnung.. Manch einer leistet mit besten Kräften dem Vorurteil Vorschub, daß Entwickler augenberingte Gestalten mit durchsichtiger Haut sind, die den Kontakt mit frischer Luft stets auf ein Minimum reduzieren. Diese Menschen kommen das ganze Jahr über mit derselben Kleidung zur Arbeit. Der einzige Unterschied besteht darin, daß im Sommer der Anorak fehlen kann. Vielleicht können die Damen auch gegen einen geringen Aufpreis die Mitarbeiter abstauben.

Völlig OT, aber wußtet ihr, daß Hunde am Atem von Patienten erkennen können, ob sie Lungenkrebs haben? Also die Patienten, nicht die Hunde.

www.google.cn

Google unterwirft sich den Zensurvorgaben der chinesischen Regierung. Mehr noch, G. leistet aktive Propagandahilfe, in dem "politisch korrekte" Seiten zurückgeliefert werden (Test mit "Dalai Lama"). Die wirtschaftlichen Interessen kollidieren mit den politischen Vorgaben. Aber das ist nicht nur in China so. In Deutschland ist die Verbreitung von Software verboten, mit der z.B. der Kopierschutz von DVDs ausgehebelt werden kann. Auch hier filtert Google. Rechtsradikale Seiten dürfen ebenfalls hierzulande nicht als Suchergebnis zurückgeliefert werden. Der Unterschied besteht genau zwischen dem Filtern, d.h. dem Ausblenden der als gesetzwidrig eingestuften Inhalten und dem gezielten Zurückliefern regimefreundlicher Inhalte. Google überschreitet hier eine Grenze. Das steht meiner Meinung nach im deutlichen Widerspruch zu ihrem Firmenmotto ("do no evil").

Web 2.0

Heute ein paar Links für den geneigten Webentwickler:

  • Ajax in 30 Sekunden. Gnadenlos mal wieder der Unterschied zwischen dem Hype und zugrunde liegenden Technologie. Es ist ein Knüller, wie einfach es funktioniert. Umso bizarrer das ganze Tohuwabohu das derzeit stattfindet. Leute, es ist zwar nett, aber bleibt mal auf dem Teppich.
  • Abgefahrenes Javascript, um Bilder auf einer Website darzustellen. Ich gebe zu, daß ich JavaScript lange unterschätzt habe, aber man kann schöne Sachen damit machen.
    Das Ganze sieht dann z.B. so aus (yo, klick das Bild an):
    (Im Firefox ist es allerdings noch besser).

“betrrr zrrrgblbnnnn”

Stuttgart Hbf

Ich würde unheimlich gern einen Tag lang S-Bahn Fahrer sein. Also nicht Beifahrer, das bin ich ja jeden Tag. Nein, der arme Kerl, der an jeder Station sein Seitenfenster aufzieht und rausschaut. Den Zug langspähen, ob irgendwo noch eine Oma von den Türen eingeklemmt werden könnte. Egal, ob es ihm dabei auf den Kopf regnet. Dann kommt der schöne Moment, in dem er in sein Mikro "bitteeee zuuurrrückbleiben" sagen darf. Ganz wichtig hierbei sind die korrekten Dehnungen und das Rollende R. Das schaffen leider nur ganz wenige. Die meisten nuscheln was rein was sich so anhört wie "betrrr zrrrgblbnnnn". Zu gern würde ich es auch einmal versuchen. An jeder Station die Ansage im Tonfall leicht verändern, damit es für die Passagiere nicht langweilig wird. Verschiedene Akzente durchprobieren. Italienisch.. "Bitééé zuruuckblaibéééén". Toll. Sowieso komisch mit diesem Prozedere. Eine Warnung übers Mikro bei jeder Abfahrt, dann piepts noch und schließlich krachen die Türen zusammen, daß man das Gefühl bekommt, hier könnten Knochen zerbersten. So ist das eben hier im Süden. In der Hamburger U-Bahn ist es anders. Die Türen machen einen leichteren Eindruck, sind gummiert und man kann sie relativ leicht von Hand aufziehen. Abgesehen davon, daß das wahrscheinlich ohnehin Sinn macht, denn es vergeht ja kein Halt, ohne daß eine Hand mit Tasche oder ein Fuß draußenbleibt. Da gibt es offensichtlich einen Zusammenhang, je nach Bedrohungssituation und Risikobereitschaft. Der Zug auf dem Bild ist übrigens keine S-Bahn (doh) sondern der neue ICE-3, der seit neuestem auch in Stuttgart zu sehen ist. Wer mal Gelegenheit hat damit zu fahren empfehle ich zu versuchen, einen Platz direkt an einem der Zugenden zu ergattern. Man kann nämlich durch die Verglasung und das spitze Zulaufen des Zuges direkt nach vorn bzw. hinten sehen. Ein ziemlich skurriler Eindruck, vor allem zwischen Frankfurt und Köln. Da läuft er fast 300 km/h.