Archiv der Kategorie: Spaß

In meinem Beruf komme ich sehr oft mit den Quelltexten vieler Kollegen in Kontakt, deren Programmierwerke ich lesen, verstehen und erweitern können muss. Man gewöhnt sich daran, dass jeder irgendwo seinen eigenen Stil hat, und dass eben jener manchmal besser und manchmal schlechter lesbar ist. Auch ich habe schon Code geschrieben, auf den ich nicht stolz bin, aber man lernt ja schließlich aus Fehlern. Umso amüsanter ist es, wenn man als erfahrener Entwickler hin und wieder zu lesen bekommt, was sich ein blutiger Anfänger so aus seinen Hirnwindungen drückt.

So geschehen vor einigen Monaten, als ein unerfahrener Praktikant (nennen wir ihn im Folgenden einfach „Praktikant“) eine unbedeutende Erweiterung für ein Softwareprojekt schreiben sollte, für das ich teilweise die Verantwortung trage. Ich gehe zwar nicht näher auf die Details der Implementierung ein, aber ich habe drei kleine kuriose Codeschnipsel gesammelt, die mir in seinem Quellcode so aufgefallen sind. Das ist übrigens derselbe Praktikant, der (um mir einen Screenshot zu zeigen) eine Bilddatei in ein leeres Microsoft Word-Dokument eingefügt hat, damit er das Dokument als PDF-Datei exportieren konnte, um es mir dann per E-Mail zu schicken.

Achtung, der folgende Beitrag könnte für Nicht-Programmierer äußerst uninteressant sein.

Fangen wir mit etwas Leichtem an. Die obige, mehrfach verschachtelte Collection beweist zwar, dass der Praktikant einen sicheren Umgang mit Collections haben muss, aber diese einzeilige Ausgeburt der Hölle beweist leider auch, dass er nicht weiß, dass man im Idealfall gegen Schnittstellen programmiert, und dass er es wohl gern übertreibt. Was auch immer in diesem „Ding“ gespeichert wird, es klingt jedenfalls nicht gesund.

Diese Zeile bekommt Sonderpunkte, weil ich darüber erst einen Augenblick nachdenken musste. Mal davon abgesehen, dass der Praktikant sich hier weder an die Namenskonvention für Boolean-Variablen hält, noch verstanden hat, dass eine Boolean-Variable bereits die Antwort auf die Frage ist, bestaunte ich die kreative logische Verknüpfung. Während ich mich ungläubig fragte, ob der Compiler einen „umgedrehten Ungleich-Operator“ wirklich durchgehen lässt, fiel mir dann doch auf, dass das eigentlich eine Zuweisung ist, wobei dem zugewiesenen Wert (false) ein NOT vorangestellt wird (also true). Dieser „Vergleich“ ergibt immer true, der IF-Block wird immer ausgeführt. Dieses Codekonstrukt ist absoluter Käse. Vielleicht wollte uns der Praktikant aber auch nur ein wenig erheitern.

Das ist der Gewinner in der Kategorie „Kreativster Schundcode“. Drei Dinge sind absolut bemerkenswert: Zunächst testet man immer mit dem Gleichheitsoperator (==) auf null, definitiv nicht mit equals. Außerdem testet man normalerweise deshalb auf null, weil man eine NullPointerException vermeiden möchte, während der Praktikant hier sogar noch selbst eine werfen will. Und überhaupt: Der Test auf null mit equals kann niemals funktionieren, denn wenn someObject tatsächlich null sein sollte, wird mit equals bereits implizit eine NullPointerException geworfen, wo versucht wird, explizit eine zu werfen. Für das Fazit lasse ich den von mir sehr geschätzten, leider kürzlich verstorbenen Harold Ramis als Dr. Egon Spengler zu Wort kommen: „Kurz, aber völlig sinnlos.“

Und dann war da noch dieser eine unwahrscheinliche „interne“ Fehler der Eclipse IDE, den ich wohl versehentlich verursacht habe, als ich während eines Debugging-Durchlaufs versuchte das Workbench-Fenster horizontal zu verkleinern. Die Fehlermeldung, die schon beinahe als Realsatire durchgehen könnte, lasse ich im Folgenden einfach mal für sich selbst sprechen:

internalerror_eclipse

Fröhliches Halloween – oder schreckliches, oder wie auch immer man bei diesem Ereignis zu sagen pflegt. Nein, leider habe ich für diese Gelegenheit keinen gruseligen Artikel vorbereitet, der zu diesem besonderen Datum passen würde. Das wäre sowieso irgendwie geheuchelt, da ich Halloween zumindest dieses Jahr nicht feiere, weder auf einer der vielen Halloween-Partys, noch würde ich als laufendes Bettlaken verkleidet die Nachbarschaft auf der Suche nach Süßigkeiten unsicher machen.

raiderAber wo ich jetzt schon so geschickt die thematische Brücke zu den Süßigkeiten geschlagen habe, will ich eine erfreuliche, wenn auch nicht allzu spektakuläre Entdeckung bekanntgeben, die mir seinerzeit wirklich den Tag „versüßt“ hat. Als jemand, der die späten 80er und die frühen 90er Jahre immer in Ehren halten wird, konnte ich mein Glück kaum fassen als ich vor etwa zwei Wochen in den nächsten Discounter stolperte und dort eine ganze Box mit den berühmten „Raider“-Schokoriegeln vorfand.

Wer bis etwa 1991 nicht noch in den Windeln lag, der erinnert sich womöglich, dass Twix hierzulande unter dem Namen Raider vermarktet, und die Umbenennung im deutschen Fernsehen mit dem markigen Spruch „Raider heißt jetzt Twix, sonst ändert sich nix“ bekannt gemacht wurde, der längst Einzug in die Popkultur gehalten hat, und seitdem nicht mehr allein auf Karamell-Keks-Schokoriegel angewendet wird, sondern immer dann, wenn ein Produkt seinen Namen, aber nicht den Inhalt ändert. Auch in einem meiner alten Artikel über mein Jahr 1991 erwähne ich diesen Spruch.

Selbstverständlich ist mir bewusst, dass das nicht das erste oder einzige Mal, und sicher auch nicht das letzte Mal war, dass man Twix kurzzeitig wieder zurück in Raider umbenannte um ein paar Nostalgiker aus der Reserve zu locken, aber es ist jedenfalls das erste Mal, dass ich das Vergnügen hatte. Immerhin hat es funktioniert, ich hab mir die Dinger gekauft. Und es schmeckt auch nicht anders als sonst. Die Retro-Riegel sind übrigens limitiert und die Aktion geht nur vom Zeitraum Oktober bis November 2013. Da ich die Renaissance des neuen YPS-Hefts für Erwachsene damals leider verpasst habe (bzw. keinen Händler in der Gegend gefunden habe, der die Hefte bestellt hat), kann ich froh sein, dass ich zumindest noch auf diesem Weg einen kurzen Rückblick auf meine Kindheit bekommen konnte.

So, genug über Schokoriegel gefaselt. Ich werde Halloween dieses Jahr mit einem Bier und einem Horrorfilm ausklingen lassen, damit ich mir nicht selbst vorlügen muss, mir überhaupt nichts aus heidnischen Bräuchen zu machen. Außerdem finde ich alles gut, was die Kirche ärgert.

Zum Aufwärmen nach meiner Pause beginne ich mit einem weiteren Artikel für die begeisterten Thriller- und Shocker-Spieler, also die Fans der Atari-ST-Spiele von Martin Hintzen und Jürgen Verwohlt. Die angesprochene Zielgruppe wird die etwas verdutzt dreinblickende Fratze des Mad Martin aus „Shocker“ und „Shocker 2“ sicherlich kennen. Als ich letztes Jahr das Privileg hatte, mit dem Entwickler Martin Hintzen ein telefonisches Interview über seine Spieleproduktionen zu führen, da verneinte er die Frage, ob es irgendeine äußerliche Ähnlichkeit zwischen ihm und Mad Martin gäbe. Leider versäumte ich es, genauer nachzuhaken, wie es zu der eigenartigen grafischen Kreation kam.

Krank dahinsiechend und zu allem Übel ganz ohne Internetzugang, völlig abgeschnitten von der Zivilisation, ließ ich mich kürzlich dazu hinreißen, in einigen uralten Jahrgängen vergilbter Computerzeitschriften zu blättern, als mir etwas höchst Interessantes ins Auge stach: In einigen Ausgaben der Zeitschrift „Computer Kontakt“ lachte mich das charakteristische Gesicht von Mad Martin an – genauer gesagt in der Anzeige eines Atari-Softwareversandhandels aus Bretten, der heute bestimmt nicht mehr existiert.

diaboloversand2

Der Laden nannte sich „Diabolo-Versand“ und war laut Anzeigentext offenbar der Versand mit den teuflischen Preisen. Witzigerweise liegt Bretten ja quasi hier bei mir um die Ecke. Für einen Augenblick dachte ich, dass sich da wohl jemand am Design des Mad Martin ausgetobt, ihm eine Perücke, einen Anzug, und einen festen Job im Versandhandel verpasst hatte, damit er sein Geld mit ehrlicher Arbeit verdienen konnte, und nicht mehr mit skrupelloser Weltraumtyrannei. Allerdings folgte sofort die Einsicht, dass das eher unwahrscheinlich war: Die besagten Anzeigen waren im Jahr 1987 erschienen, also bereits fünf Jahre vor der Veröffentlichung von Shocker.

diaboloversand

Wer ist also dieser Mad Martin und woher kommt er? Vielleicht werden wir es nie erfahren. Das Herumstöbern in so richtig alten Computerzeitschriften ist übrigens total interessant. Da werden aus unserer heutigen Sicht völlig veraltete Geräte und Schnee von vorgestern als der große technologische Durchbruch präsentiert, was bei mir immer eine Mischung aus Nostalgie und unfreiwilliger Komik erzeugt. Nett fand ich auch, als ich entdeckte, dass in deutscher Software Mitte der 80er Jahre der „Cancel“-Button nicht mit „Abbrechen“, sondern oft mit „IRRTUM“ beschriftet war.

In der nächsten Folge dieser investigativen Dokumentarreihe sehen Sie: Mad Martin als Bäcker.

Kürzlich saß ich mit einem Kollegen zusammen, der mir stolz sein neues Windows-8-betriebenes Notebook zeigen wollte. Bis zu jenem Zeitpunkt hatte ich dieses (für mich relativ uninteressante) Betriebssystem von Microsoft noch nie zu sehen bekommen. Aber ich dachte da so bei mir: Der Kollege versteht nicht viel von PCs, Windows 8 dürfte genau das richtige für ihn sein, weil es ja so benutzerfreundlich ist, und überhaupt.

windows8Der Desktop sieht ja sogar ganz schick aus, und die Sounds gefallen mir auch, aber Metro mit seinen schmucklosen Kacheln wirkt doch sehr rustikal, so wie ich das auch von Screenshots kannte. Ich ließ den Kollegen einfach mal machen, was ihm scheinbar anfangs auch ganz gut gelang, während ich stumm die Oberfläche betrachtete.

Wir wollten im Internet diverse Angebote suchen, und damit es nicht gar so still beim Surfen würde, suchte er auf seiner externen Festplatte ein paar Musikdateien, wovon er eine mit einem beherzten Doppelklick aus dem Explorer startete. Es öffnete sich der Windows Media Player im Vollbildmodus, mit irgendeiner unglaublich lahmen Visualisierung, die ein bisschen aussah wie ein Bildschirmschoner aus den 80ern. Da war ich doch schon Spannenderes von Microsoft gewohnt. Wie dem auch sei, so interessant war die Oberfläche des Media Player nun wirklich nicht, dass wir den auf einem Breitbild-Display unbedingt im Vollbild hätten sehen wollen. So hetzte und klickte der Kollege relativ hilflos mit der Maus auf dem Bildschirm herum, fegte quer durch alle Bildschirmecken, auf der abenteuerlichen Suche nach dem Desktop. Nach einigen erfolglosen Versuchen kommentierte er das Geschehen bereits mit den ersten abfälligen Kommentaren über Windows 8. Ich gab mir Mühe nicht zu lachen.

Besonders viel helfen konnte ich ihm da schon nicht, da ich Windows 8 nicht nutze, aber immerhin entdeckte ich irgendwann in einer Ecke eine Verknüpfung zum Startmenü, und von dort gelangte man über eine Kachel wieder auf den Desktop. Ein Glück: Die Musik dudelte im Hintergrund weiter. Schnell wollte der Kollege mir noch ein paar Fotos zeigen, die er gespeichert hatte. Also via Desktop dorthin navigiert und das erste Foto im Ordner mit einem Doppelklick geöffnet. Das Foto öffnete sich wie erwartet im Vollbild. Wird jetzt etwa doch noch alles gut?

Witzig wurde es erst, als der Kollege mir die anderen Fotos aus dem Ordner zeigen wollte. Er suchte also mit der Maus nach irgendwelchen Pfeilen für die Ordnernavigation Links und Rechts, um durch die Bilder zu schalten. Einen Pfeil fanden wir, allerdings nur für Links, keinen für Rechts. Ein Klick darauf bestätigte die Vermutung, dass der Pfeil eine andere Bedeutung hat. Ich empfahl ihm, doch mal die Pfeiltasten auf der Tastatur zu probieren, weil das bei vielen Programmen funktioniert. Es bewegte sich leider nichts. So fuchtelte er also wieder mit der Maus in allen möglichen Ecken nach einer Diashow-Funktion oder etwas ähnlichem, aber wir fanden nichts. Also zurück zu den Kacheln, und von dort zurück zum Desktop, das nächste Foto mit einem Doppelklick ausgewählt. Dann wieder raus, zurück auf den Desktop, nächstes Foto. Schon beim vierten Mal war uns das eindeutig zu blöd. Mein nächster Tipp war es, doch einfach mal alle Fotos in dem Ordner zu markieren und auf die Selektion mit der rechten Maustaste zu klicken: Da musste es doch eine Diashow-Funktion im Kontextmenü geben, oder?

Fehlanzeige. Bevor wir uns sinnlos weiter mit Windows 8 herumärgerten, schlossen wir seine externe Festplatte an seine alte Kiste mit Windows XP an, dort ging das alles ganz mühelos. Erstaunlich wie Windows 8 beim Thema Intuitivität – wo es doch soviel Wert darauf legt – auf ganzer Linie versagt. Ein Betriebssystem für Rentner, Kinder und DAUs, und dennoch gelang es uns nicht, vernünftig damit zu arbeiten.

Ich bin nach diesem furchtbaren ersten Eindruck froh, dass ich mir Windows 8 nicht aufgehalst habe. Das ist wirklich nichts für mich, dafür ist mir der klassische Desktop und das Startmenü zu wichtig. Für Tablets mag das ja die Offenbarung sein, aber doch nicht am Desktop-PC oder am Notebook.

Wer mich hier dreist der Schreibfaulheit beschuldigen will, dem sei hiermit Folgendes entgegnet: Ihr habt vollkommen recht! Die Wochen sind leider deutlich zu lang, dafür sind die Wochenenden viel zu kurz. Selbst der extrem kurze Urlaub hat nicht ausgereicht. Alles was ich mir vornehme zu erledigen, bleibt im Moment solange liegen bis es anfängt sich irgendwie von selbst zu erledigen, oder bis darauf Haare wachsen. Aber mein Genöle hilft niemandem, darum hier ein kleiner Füllbeitrag, bis sich meine Finger wieder anfangen in Bewegung zu setzen. Einen Anfang habe ich gemacht: Meine Entwicklungsumgebung ist immerhin seit langem mal wieder offen.

Die freie Grafikbearbeitungs-Suite GIMP ziehe ich jedem Adobe Photoshop vor, schon aus monetären und ideellen Gründen. Aber dass GIMP im Leistungsumfang seinem teuren kommerziellen Vorbild in nichts nachsteht (lassen wir den Profi-Bildbearbeitungsbereich jetzt mal elegant außen vor, in dem sich sicher keine 3% der Bevölkerung bewegen) ist natürlich auch ein überzeugendes Argument, sich mal mit GIMP zu befassen. Ich bin vor langer Zeit umgestiegen und bereue nichts.

Manchmal kommt einem GIMP allerdings recht dramatisch vor. So wie vor einigen Tagen, als ich daran dachte, einige unfertige Werke schließen zu wollen, die ich seit längerem ungespeichert geöffnet hatte. Zum Glück machte GIMP mich noch rechtzeitig mit einer Meldung darauf aufmerksam, dass ich wirklich sehr viel Arbeit in dieses Bild investiert hatte. Wäre doch zu schade um die ganze vergeudete Zeit:

141stunden

Ironischerweise durfte ich heute dafür feststellen, was passiert, wenn man ein (noch nicht gespeichertes) Bild in GIMP geöffnet hat, während man im Windows-Explorer eine Datei mittels „Öffnen mit“ -> „GNU Image Manipulation Program“ laden will: Das bereits offene GIMP beendet sich schlagartig(*), und es öffnet sich sofort ein neues, in dem nur die ausgewählte Datei geladen wird. Das zuvor offene Bild geht dabei leider verloren. Und diesmal ganz ohne dramatische Meldung mit Gelegenheit zum Speichern. Ja, ich hab mich sehr gefreut als alles weg war.

(*) Nachtrag vom 31.05.: Irgendwie konnte ich das erwähnte Verhalten in einem zweiten Versuch nicht mehr nachstellen. Scheint so als hätte ich gestern einfach Pech gehabt und GIMP zum abstürzen gebracht. Wäre auch nicht das erste Mal. Jetzt verhält sich die Funktion genau so wie man es erwarten würde.