Knapp drei Wochen ist es her, seit dem mein Tw***er-Account nicht mehr so wie gewohnt reagiert. Wenn ich morgens in ein leeres Büro komme, sind keine netten Leute mehr da. Meine Timeline umfasst aktuell etwa die letzten 21 Follower, d.h. mit den meisten konnte ich noch keine wirkliche Beziehung aufbauen. Diejenigen, zu denen es eine Beziehung gibt, folgen mir nicht und können mir nicht folgen. Umgekehrt kann ich nicht mehr als den aktuell 17 Personen folgen. @Jimmy1966 hat dafür ein Wort geprägt: Twitterknast.

Im Gegensatz zu anderen bin ich nicht in Isolationshaft. Mein Account funktioniert ansonsten soweit. Über die @-Notation kann ich mit anderen kommunizieren, nur DM’s gehen nicht. Aber es ist schon sehr mühsam.

In den ersten Tagen wurde ich dadurch bei der Bewertung der Klausuren nicht zu sehr abgelenkt. Die Organisation des 2. Heilbronner Twittertreffens (getarnt als Twittagessen) klappte mit Hilfe meines Co-Organisators @NurIch. Der Besuch meiner Söhne wurde durch keine Diskussionen oder Anregungen auf Twitter “gestört”.

Besonders gefreut hat mich, dass mich einige auf Twitter vermissen. Sei es über direkte Nachfragen via @-Notation oder mit dem Versuch, mir wieder zu folgen. Letztere klappt zwar nicht, aber ich bekomme jedes Mal eine E-Mail. Vielen Dank an (in halbwegs chronologischer Reihenfolge): @samakah, @torridluna, @kreativgut, @Jimmy1966, @Allaboutdancing, @ok23, @lamaiire, @maennig, @WolfgangKraus, @mai_kaefer, @tadels, @jkamlowski, @AKleiner, @taxxas, @kaestnerm. Ich hoffe, ich habe keinen vergessen.

Ich ahne zwar woran es liegt (es wurden von Twitter jede Menge Spam-Accounts entfernt, das Problem meines Accounts ist wohl ein Kollateralschaden) und weshalb wenig passiert (Twitter war/ist Ziel einer DOS-Attacke), aber nach drei Wochen ist nun langsam Schluss. Ich treffe Vorbereitungen für einen Nachfolgeaccount.

Was sind meine bisherigen Ideen?

  • Die Liste der Leute, denen ich bis zum 22.07.2009 folgte, konnte ich dank TweetDeck rekonstruieren. TweetDeck speichert die Namen aller Personen / Accounts, denen ich folgte und die während es lief mindestens einen Tweet abgesetzt haben in einer internen SQLite-Datenbank. Damit fehlen mir nur die stillen Benutzer, d.h. einige Studierende meiner Veranstaltungen. Die kann ich im nächsten Semester ansprechen.
  • Mit Hilfe der API konnte ich meine gesamten Tweets sichern. Zum Glück waren es weniger als 3200, denn mehr liefert die API nicht aus.
  • Alles andere (Replies, DM’s, Favorites) kann man auch über die API sichern.
  • Also baue ich mir erst einmal eine kleine Infrastruktur auf, um meine vergangenen und zukünftigen Aktivitäten über Twitter lokal zu sichern.
  • Ich wollte sowieso mal wieder etwas programmieren.
  • Das Ganze werde ich in Python implementieren, denn es gibt gute Tools, die dabei helfen.
  • Auch Friends und Follower werde ich sichern, auch um später festzustellen, wer mir folgt und wer die Verfolgung abbricht.
  • Dafür gilt es ein kleines DB-Modell aufzubauen und ich kann gleich mal SQLAlchemy ausprobieren. Das wollte ich immer schon mal machen, mir fehlte nur die richtige Anwendung.
  • Das Problem des Accountnamens @dkreuz ist hoffentlich gelöst: Accountnamen kann man umbenennen. Ob es klappt, weiß ich nicht. Aber zur Not habe ich einen netten, selbstironischen Reservenamen.
  • Mein Identi.ca-Account ist eine gute Reserve, falls mal Twitter den Geist aufgibt.

Im Endeffekt soll eine kleine Anwendung zustande kommen, die meine Aktivitäten auf Twitter sichert. Meine Tweets kommen in eine Datenbank und werden auf Identi.ca gespiegelt. Follower und Friends werden gesichert und ich werde benachrichtigt, falls sich dort etwas ändert. Sollte ein Nachfolgeaccount auch ein Problem bekommen, kann ich schneller auf einen anderen/neuen Account wechseln.

Und zu allem Überfluss komme ich auch dazu, @hhn_eb mit etwas Leben zu füllen: der soll alle Tweets von Followern retweeten, die mit #hhneb markiert sind.

Im nächsten Schritt kümmere ich mich um die Anforderungen und Anwendungsszenarien im Detail.

, , ,

Wie jede Disziplin, so hat auch die Informatik ihre eigenen Geschichten. Geschichten, deren kurze Erwähnung jedem Eingeweihten ein mehr oder minder breites Lächeln hervor ruft. Oder sind diese Geschichten schon Folklore? Egal. Wichtig ist, dass man sie kennt.

Filme

Matrix

Matrix ist ein Science-Fiction-Film aus dem Jahr 1999. Aus Informatiksicht ist er zweierlei interessant. Zum einen ist die Matrix nichts anderes eine riesige Simulation unserer Wirklichkeit. Sie ist so gut, dass sie nicht von der Wirklichkeit zu unterscheiden ist. Letzten Endes ist das eine Aufgabe in der Informatik: reale Vorgänge zu modellieren und in einem (digitalem) Rechensystem abzubilden.

Der Film Matrix zeigt, wie verwirrend eine solche Simulation sein kann. Übrigens, er ist nicht der erste seiner Art. Schon 1973 zeigte der deutsche Film Welt am Draht Konsequenzen einer sehr weitgehenden Simulation auf. Ebenfalls 1999 gab es ein Remake, The 13th Floor – Bist du was du denkst?. Wem die philosophische Überfrachtung von Matrix nicht zusagt, kann sich an diesen Filmen ausprobieren. Man verpasst aber auch nette “Special Effects” und den zweiten wichtigen Aspekt.

Nämlich die Frage nach der roten oder blauen Pille. Der Held des Film muss sich entscheiden, ob er die ganze Wahrheit erfahren möchte, mit allen Konsequenzen. Dann soll er die rote Pille schlucken. Mit der blauen Pille würde er glauben, was er bisher geglaubt hat. Natürlich nimmt er die rote Pille. Um den Film zu zitieren (aus: Fehler in der Matrix):

Dies ist deine letzte Chance. Danach gibt es kein Zurück. Schluckst du die blaue Kapsel, ist alles aus. Du wachst in deiner Welt auf und glaubst, was du glauben willst. Schluckst du die rote Kapsel, bleibst du im Wunderland, und ich führe dich in die tiefsten Tiefen des Kaninchenbaus.

Dies ist eine ultimative Entscheidung. Solche Entscheidungen sind immer mal wieder zu treffen. Mit meiner Entscheidung für die Informatik habe ich einen ganz anderen Blick auf die Hintergründe computergestützter Systeme erhalten. Im Positiven wie im Negativen.

Monty Python

Monty Python war eine britische Komikergruppe, die ihre Blütezeit in den 70er-Jahren hatte. Viele Informatiker haben eine gewisse Nähe zum Humor dieser Gruppe. Ich würde ihn als schräg, schwarz, britisch, absurd, hintersinnig bezeichnen.

So ist Monty Python zum Namensgeber der Programmiersprache Python geworden (siehe: Why is it called Python?).

Aber auch die Bedeutung des Wortes Spam ist auf einen Sketch dieser Gruppe zurück zu führen.

Alles Gründe, sich einmal mit Monty Python zu beschäftigen. Wenn man davon absieht, dass es einen Riesenspass macht.

Bücher

Per Anhalter durch die Galaxis

Sie wollten immer schon mal wissen, was es mit dem Sinn des Lebens auf sich hat? Oder warum Sie am 25. Mai eines jeden Jahres vermehrt Leute mit Handtüchern sehen? Das hat seinen Ursprung in der einzigen Trilogie in fünf Bänden, eben Per Anhalter durch die Galaxis.

Den Inhalt und den Geist dieser Bücher wieder zu geben ist so gut wie unmöglich. Ist es Science-Fiction? Oder ganz einfach ein Roman? Auf jeden Fall hat diese Reihe einen ähnlichen Einfluss auf die Informatik wie Der Herr der Ringe auf das Fantasy-Genre.

Der Humor hat etwas von Monty Python, ist also auch für Informatiker stilbildend. Und schon im ersten Band werden Sie die Antwort auf die wichtigste Frage kennen lernen: “42″!

Wie war noch mal die Frage?

Alice im Wunderland & Alice hinter den Spiegeln

Die Geschichten von Alice im Wunderland und Alice hinter den Spiegeln sind nicht nur einfach schöne Geschichten. Der Autor Lewis Carrol war Mathematiker und zeigt damit, dass auch technisch orientierte Menschen sehr phantasievoll sein können.

Beide Bücher können als Vorbereitung für den Film Matrix dienen, siehe das Zitat zur roten Pille. In Alice hinter den Spiegeln gibt es ein schönes Kapitel mit dem Springer (engl. “Knight”), in dem es um Namen geht. Hier der Ausschnitt (aus: Through the Looking-Glass):

‘The name of the song is called “HADDOCKS’ EYES.”‘

‘Oh, that’s the name of the song, is it?’ Alice said, trying to feel interested.

‘No, you don’t understand,’ the Knight said, looking a little vexed. ‘That’s what the name is CALLED. The name really IS “THE AGED AGED MAN.”‘

‘Then I ought to have said “That’s what the SONG is called”?’ Alice corrected herself.

‘No, you oughtn’t: that’s quite another thing! The SONG is called “WAYS AND MEANS”: but that’s only what it’s CALLED, you know!’

‘Well, what IS the song, then?’ said Alice, who was by this time completely bewildered.

‘I was coming to that,’ the Knight said. ‘The song really IS “A-SITTING ON A GATE”: and the tune’s my own invention.’

Wenn Sie dies verstanden haben, dann verstehen Sie auch die Zusammenhänge zwischen einer Variablen, die auf ein Objekt verweist, dem Namen dieser Variablen, dem Inhalt, der Objektreferenz, dem Objekt und der Objektidentität.

Und damit steht dem erfolgreichen Programmieren nichts mehr im Wege.

Mehr?

Haben Sie auch noch Vorschläge für Bücher und Filme? Dann bin ich gespannt.

, , , , , , , , , ,

Real programmers use Python:

Genetic Algorithms

,

Endlich bin ich einmal dazu gekommen, meine Installation von Python von Version 2.5.x auf 2.6.x zu aktualisieren. Nur, ein Hindernis gab es dabei: easy_install.

easy_install ist ein extrem nützliches Werkzeug, um externe Python-Pakete zu installieren, wie z.B. das vorzügliche docutils oder SQLAlchemy. Es ist bei mir der Dreh- und Angelpunkt für weitere Python-Software, egal für welchen Zweck.

Also, easy_install muss nach der Installation von Python 2.6.x als Erstes selbst installiert werden. Schnell zur PyPI-Seite für die setuptools, in denen easy_install enthalten ist. Nur zu dumm: der aktuellste Installer für Windows unterstützt nur Python 2.5.

Gut, wozu kenne ich Software schon von den Lochkarten her? Die *.egg-Datei ist schnell heruntergeladen und noch schneller ausgepackt. Der Inhalt kommt in ein temporäres Verzeichnis und schon kann die Installation losgehen. Sie könnte losgehen. Wenn da nicht die Fehlermeldung wäre: “pkg_resources.DistributionNotFound: setuptools”.

Ein klassisches Problem: setuptools versucht sich selbst an den Haaren aus dem Sumpf zu ziehen. Aber diesmal findet es sich nicht selbst. Auf Englisch heißt das Bootstrapping. Nach einigem Herumsuchen ist das auch die Lösung.
Die *.egg-Datei ist nicht nur etwas ähnliches wie eine ZIP-Datei, sie enthält zu Beginn auch direkt lesbaren Text:

#!/bin/sh
if [ `basename $0` = "setuptools-0.6c9-py2.6.egg" ]
then exec python2.6 -c "import sys, os; sys.path.insert(0, os.path.abspath('$0')); from setuptools.command.easy_install import bootstrap; sys.exit(bootstrap())" "$@"
else
  echo $0 is not the correct name for this egg file.
  echo Please rename it back to setuptools-0.6c9-py2.6.egg and try again.
  exec false
fi

Das ist zwar ein Shellskript und unter Windows so nicht wirklich zu gebrauchen, bringt meiner einen aber auf den richtigen Weg. *.egg-Dateien können offenbar in den Suchpfad von Python aufgenommen werden. Den absoluten Pfad meiner *.egg-Datei kenne ich, also kann ich einfach aufrufen:

C:\User\kreuz>python -c "import sys; sys.path.insert(0, 'C:/Users/kreuz/setuptools-0.6c9-py2.6.egg'); from setuptools.command.easy_install import bootstrap; sys.exit(bootstrap())"

… und die (Python-) Welt ist wieder in Ordnung.

,