Donnerstag, 20.04.2006
Das eXPeriment: Startschuss

Lava-Umschalter.
Man nehme eine Arbeitsgruppe technische Informatik (Meta-Cluster), eine Arbeitsgruppe Werkstoffwissenschaften (erkaltende Metallschmelzen), ein paar an Softwareentwicklung interessierte und motivierte Leute, und heraus kommt: Der Extreme Programming Selbstversuch: Was ist eigentlich dran an der Begeisterung, funktioniert Pair Programming wirklich und wie fühlt es sich an, kann man tatsächlich durch kurze Iterationszyklen eine so gute Rückkopplung erreichen, dass man nach einiger Zeit treffsichere Aufwandsabschätzungen hinbekommt, und vieles mehr. Wir sind zu fünft, wollen uns zweimal pro Woche zwei Stunden treffen (plus ein extra Planungstreffen zu Beginn jeder Iteration). Das Semester hat 14 Wochen, die wir voraussichtlich in 4 Iterationen á 3 Wochen einteilen werden. Einen Umschalter1 für Lava-Lampen und eine Pinnwand für Story-Kärtchen haben wir auch schon ;-).
Unsere Aufgabe ist die parallele Simulation und spätere Visualisierung von Dendritenbildung in erkaltender Metallschmelze, die in einer zweiten Stufe mit einem noch zu erforschenden Load-Balancing-Algorithmus über mehrere Cluster verteilt wird, unter der Berücksichtigung der Topologie sowohl der beteiligten Rechnerknoten als auch des Netzwerks. Kurz gesagt: Wir wollen bunte Bilder!
Und heute ging es los, mit der “Zero-Functionality Iteration”, um überhaupt mal einen Fuß auf den Boden bzw. unsere Laptops ins Uni-Netz zu bekommen, das Unit-Testing Framework zum Kompilieren zu bringen, und das Ganze an die Continuous Integration (ich sagte doch, Lava-Lampen!) anzuschließen. Das dauert immer länger als man denkt, und so hat unser Termin heute nicht ganz gereicht, um alles so ans Laufen zu kriegen, wie wir es gerne hätten, aber der Start war gut, und ich bin sehr gespannt, was wir so alles entdecken werden.
1 nochmals herzlichen Dank an Gregor Renka fürs Zaubern mit Lötkolben und Mikrocontroller.
Dienstag, 04.04.2006
Internet Explorer und der Pinguin
Gerüchte darüber, dass man den Internet Explorer unter Wine laufen lassen kann, gibt es zur Genüge. Meine Versuche endeten meistens mit irgendeinem mehr oder weniger obskuren page fault oder ähnlichen Nettigkeiten – und zwar noch bevor ich überhaupt in die Nähe gekommen war, den MSIE überhaupt zu installieren.
Dank ies4linux ist das alles überhaupt kein Problem mehr. Dieses Hilfsprogramm funktioniert nach dem einfachen Muster Runterladen, IE-Version wählen, auf dessen Download warten, fertig:
wosc@nautis:~>ie6 http://wosc.de/log/ fixme:actctx:CreateActCtxW stub! fixme:actctx:CreateActCtxW stub! err:shell:ReadCabinetState Initializing shell cabinet settings fixme:actctx:ActivateActCtx stub! [...]
Jetzt kann ich endlich Webseiten im MSIE ohne nervtötendes Windows-Booten testen.
Freitag, 18.11.2005
Weizenbaum
Im Rahmen der Langen Nacht der Wissenschaften hielt der Eliza-Erfinder und Computerkritiker Joseph Weizenbaum einen Vortrag – das ließen wir uns natürlich nicht entgehen. Für seine über 80 Jahre ist Prof. Weizenbaum sehr vital und hat auch noch eine Menge Haare, die er im Pferdeschwanz zusammengebunden trägt. Er erzählte auf charmant-schnodderige Art und Weise über Computer, die ganze Wohnzimmer ausfüllten, ihre Weiterentwicklung die maßgeblich durch den Kalten Krieg vorangetrieben wurde, über schon damals kursierende Furcht vor Arbeitslosigkeit und “Sektretärinnen”, die die auf Papier einzureichenden Programme in Lochkarten übersetzten.
Zwischen diese teils mehr, teils weniger nostalgischen Geschichten mischten sich dann einiges an handfesten Thesen, zum Beispiel:
- Vom Einfluss der Gesellschaft auf die Entwicklung des Computers zum Einfluss des Computers auf die Entwicklung der Gesellschaft
- Es herrscht weitreichender Technologieoptimismus, mit der Wissenschaft als Religion von heute (“Unter Ihnen können doch die wenigsten ein stichhaltiges Argument aufführen, warum die Erde um die Sonne kreist und nicht umgekehrt”)
- Der Wandel vom “I want more” der Nachkriegszeit zum “I don’t want to lose what I have” des Jetzt
- Die durch die immens beschleunigte Kommunikation beförderte Globalisierung führt zu einer Homogenisierung und Quantisierung der Welt (“in den Nachrichten ist alles gleich (un)wichtig, es gibt kein Maß mehr”)
- Wenn man im vorderen Teil einer Exponentialkurve lebt (z. B. die der Umweltverschmutzung), wirkt es linear – aber schon kurz hinterm Horizont steigt es steil nach oben.
- “From [human] judgment to [automatic] calculation” oder der Verlust des Menschlichen
Auch wenn einiges eher banal und anderes doch ziemlich düster-apokalyptisch war, ich hatte stark den Eindruck, dass es hier um mehr geht als das Gebrabbel eines alten Mannes.
Die abschließende Fragerunde eröffnete Weizenbaum dann mit der folgenden Anekdote: “Meine achtjährige Tochter sagte einmal, ‘Daddy, wie spät ist es? Und ich will nicht wissen wie eine Uhr funktioniert!’”
Freitag, 04.11.2005
DSLs in Ruby
Heute habe ich zu Martin Fowlers Artikel über Domain Specific Languages ein ziemlich beeindruckendes Video gesehen, in dem das vorgestellte Beispiel in Lisp umgesetzt wird. Die Ausdruckskraft ist wirklich enorm, was mich stört ist die meines Erachtens relativ schlechte Lesbarkeit von Lisp-Code. Ich habe daher spasseshalber eine Version in Ruby programmiert, einfach um es mal auszuprobieren. Da ich mich in Ruby noch nicht recht auskenne, ist das vermutlich nicht die schönste oder idiomatischste Lösung, und auch hier bin ich mit der Lesbarkeit speziell der Makro-Teile noch nicht so richtig glücklich, aber insgesamt gefällt es mir gar nicht schlecht.
Dienstag, 09.08.2005
Im Rechenzentrum
“Mainframes fangen erst dann an, wenn im Rechenzentrum raised floors notwendig werden.” – Christian Kauhaus
“Schwarze Computer sind einfach schneller.” – Jakob Erdmann
Von außen ist das Rechenzentrum im IBM-Labor Böblingen ein großes Schaufenster, mit allen technologischen Errungenschaften vom Transistor bis zu den aktuellsten Rechner-Modellen in Schönschrift. Innen herrscht sympathischer Umtrieb, es huschen Leute herum, ab und zu wird von links ein neuer Kühlschrank, äh, Großrechner hereingekarrt, und trotz des doppelten Bodens mit einem halben Meter Platz liegt immer noch einiges an Kabeln herum. Immerhin, so lernten wir, sind die Kabel heutzutage dünn genug, dass man nicht mehr benötigte Kabel tatsächlich entfernen kann. Früher war die Last der übrigen Kabel so groß, dass das schlicht nicht ging, und einmal im Jahr der ganze Salat rausgerissen und neu verlegt werden musste.
Der Raum ist klimatisiert, und die einzelnen Rechner haben zusätzlich ihre eigenen Kühlsysteme, dadurch ist es relativ frisch und vor allem herrscht ein ziemlicher Geräuschpegel. Unterhaltungen müssen mindestens rufend geführt werden. Aber hier sollen ja auch weniger die Menschen als vielmehr die Computer arbeiten und es angenehm haben.
Abgesehen von ein paar violetten SUN-Kisten und anderen Abweichlern, stammt das meiste der Rechentechnik von IBM selbst, und natürlich sind die Großrechner ebenso wie die Laptops – schwarz. Sie werden wissen, warum.
Mittwoch, 01.06.2005
Extreme Blue Bewerbertag
Die Anreise
Mit dem Bus nach Dettenhausen und von dort mit der Schönbuchbahn nach Böblingen. Hört sich einfach an, ist es im Prinzip auch, nur der Fahrkartenautomat in Dettenhausen hatte einen richtig miesen Tag: Geldkarte “wird zur Zeit nicht akzeptiert”. Münzen: hab ich keine. Geldscheine: 5er will er nicht, 10er will er nicht, und überhaupt. Die nächste Kundin hat genau so wenig Glück, aber sie hat immerhin einen 10er den er frisst – mit dessen Hilfe komme ich dann doch noch zu meiner Fahrkarte.
Der Dresscode
5 Extreme Blue Bewerber: 2x kurzes Hemd und Jeans, 1x langes Hemd
und Jeans, 1x dunkler Anzug ohne Krawatte, 1x Kombination mit Krawatte
(ich).
1 IBM Bewerber, der nochmal assessed werden sollte wegen
Festanstellung: Anzug und Krawatte.
Ich habe mich nicht furchtbar overdressed gefühlt, also alles gut soweit.
Ach ja: 4 von den 5 kommen aus bzw. studieren in Tübingen…
Der Ablauf
Jeder hatte seinen eigenen Ablaufplan, hier ist meiner:
| 09:00 – 09:40 | Einführung und Vorstellung von Extreme Blue | Das Ding ist ein Mords-Happening |
|---|---|---|
| 09:40 – 09:45 | Vorstellung der Beobachter | 6 Bewerber, 5 Beobachter: Big Blue is watching you |
| 09:45 – 10:10 | Übung: Diskussion | Urlaubsplanung, und alle wollen im August wegfahren. Das ging erstaunlich schnell und unkompliziert, denn jeder zeigte sich kompromissbereit. |
| 10:10 – 11:00 | Pause | Ich hatte mich innerlich auf einen total stressigen Tag eingestellt, wo es Schlag auf Schlag nur so auf einen einhagelt. Daher war ich angenehm überrascht, wie entspannt das Ganze ablief – sogar mit Pause und Butterbrezel. |
| 11:00 – 11:50 | Human Resources Interview | Ein Vorstellungsgespräch. Wer sind Sie, was machen Sie? Warum
zur IBM? Was tun Sie am liebsten / am ungernsten? Wo wollen
Sie in zwei Jahren sein? Über einige Dinge habe ich schlicht noch keinen so genauen Plan, das wäre aber vermutlich schon besser angekommen. Ansonsten, das sind Vollprofis, die haben das Interview sehr gut geführt. |
| 11:50 – 12:30 | Übung: Architektur (aka Buzzword Bingo!) | Brainstorming zum Thema, wie können wir in unserer Abteilung,
die Hochverfügbarkeitslösungen entwickelt, neue
Geschäftsfelder erschließen, die sich in IBMs “on
demand”-Strategie einfügen? Ich bin erstaunt, dass wir überhaupt irgendwas an die Tafel gebracht haben. Mehr heiße Luft war selten. |
| 12:30 – 13:30 | Mittagessen | Vielleicht ist es ja selektive Wahrnehmung, aber ich behaupte, in der Kantine waren bestimmt 90% Männer. |
| 13:30 – 14:30 | Fachinterview: XML Parsing auf dem Cell Prozessor | In Extreme Blue gibt es mehrere Projekte, und die jeweiligen Leiter würden einen nun unter fachlichen Aspekten interviewen. Ich habe da glaub ich was missverstanden, denn was passierte war, dass der Mensch sein Projekt vorstellte und ich aufmerksam zuhörte. |
| 14:30 – 15:30 | Fachinterview: Dynamic Infrastructure in der Websphere-Umgebung | Anschließend erzählte ich kurz was zu meinem Hintergrund, und … ob ich noch Fragen hätte. Vielleicht war das die Stelle, an der man hätte clever sein sollen. Ich meinte eigentlich nur, ich hätte das so weit ganz gut verstanden. |
| 15:30 – 16:00 | Übung: Präsentation | 10 min Vorbereitung, 5 min Präsentation (alleine, vor den versammelten Beobachtern) über das Brainstorming vom Vormittag mit einem eigenen Schwerpunktthema. Sprich, der Inhalt ist sowieso Brot, es geht ums Präsentieren. Ich weiß, dass ich das noch nicht so besonders gut kann, ich habe mich bemüht, ein Bildchen zu malen, in der Hoffnung, das helfe. Ansonsten: Braucht man Drucker für outgesourcte Rechenzentren? (so eine der Nachfragen… ich hoffe nur, meine Antwort, “nicht wenn man nicht Druckereien Konkurrenz machen will” war nicht zu flapsig) |
| 16:00 – 16:30 | Pause | Habe ich schon erwähnt, dass ich es toll fand, wie entspannt das Ganze war? |
| 16:30 – 17:30 | Fachinterview: Das virtualisierte Rechenzentrum | siehe oben. |
| 17:30 – 18:00 | Übung: Projektwechsel | Es gibt eine interessante Aufgabe im Nachbarprojekt, befristet, 3 Leute wollen sie haben und sollen sich nun einigen, wer hingeht. Hier zahlt es sich glaube ich deutlich aus, solche Übungen schon mal gemacht zu haben, jedenfalls hat uns der eine mit ein paar fix hervorgezauberten Argumenten ziemlich meisterlich an die Wand gespielt. Ich konnte ihm gerade noch einen Kompromiss abringen, aber die Runde ging an ihn – Respekt. |
| 18:00 – 18:30 | Abschlussgespräch | Wie war’s, leben Sie noch, etc. Da wir etwas vor der Zeit waren, hab ich dann sogar die Bahn um 18:11 noch gekriegt. |
Fazit
Eine sehr professionell durchgeführte, und aus meiner Sicht angenehme Veranstaltung (lies: er hat überhaupt nicht gebohrt, ich hatte es mir wesentlich schlimmer vorgestellt).
Das Ergebnis erfahren wir nächste Woche, und dann gibt es auch Gelegenheit, bei seinem Hauptbeobachter um Rückmeldung nachzufragen. Wenn ich den Platz kriege, wird es super cool und super stressig, und wenn nicht habe ich immerhin mal ein Assessment Center erlebt, und das ist auch deutlich was wert.
Mittwoch, 16.03.2005
Lisp steckt an
“Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.” – Eric S. Raymond
Da muss was dran sein. In meiner Studienarbeit habe ich gerade ein “dummes” Objekt in der Mache (praktisch nur Eigenschafts-Felder), das sich in einen Tab-getrennten String ausgeben soll, also einerseits die Feldnamen und andererseits die Werte. Woran ich ziemlich sofort dachte, war das hier (das Beispiel ist so gut wie korrektes Python1):
_fieldNames = ["Timestamp", "Location"]
def fieldNames(self):
return "\t".join(_fieldNames)
def fieldValues(self):
return map(lambda field: self.field, _fieldNames)
Das ist nix besonderes, ein total normales funktionales Idiom, das aber für mich den Nagel auf den Kopf zu trefen scheint – also frisch ans Werk. Das Projekt ist in Java, daher kommt am Ende trotz Jakarta Commons Beanutils und Collections leider eine gewisse Monstrosität auf:
private String[] _fieldNames = { "Timestamp", "Location" };
public String fieldNames() {
return ListUtils.joinList(getFieldNames(), "\t");
}
public String fieldValues() {
Collection fieldValues = CollectionUtils.collect(Arrays.asList(_fieldNames), new ReadFieldTransformer());
return ListUtils.joinList(fieldValues, "\t");
}
private class ReadFieldTransformer implements Transformer {
public Object transform (Object input) {
String name = (String) input;
name = name.substring(0, 1).toLowerCase() + name.substring(1);
try {
Object value = PropertyUtils.getProperty(Event.this, name);
return value.toString();
} catch (Exception e) {
// nyi: proper exception handling
throw new RuntimeException(e);
}
}
}
Aber trotzdem glaube ich, dass das eine der kürzesten generellen Formulierungen für das Problem ist.
1 Wie die richtige Inkantation aussieht, damit der
Feldzugriff self.field in der letzten Zeile wie gewünscht
funktioniert, übersteigt mein derzeitiges Python-Fu.
Samstag, 29.01.2005
Maven Tipp des Tages
Ich spiele gerade ein wenig mit XDoclet-2 herum, das als Build-Werkzeug Maven einsetzt.
Hier der Tipp: Wenn man in project.properties
maven.junit.usefile = false setzt, muss man sich nicht
stundenlang darüber wundern, warum der TestCase fehlschlägt, man aber
nie einen Stack-Trace zu Gesicht bekommt – der wird nämlich
standardmäßig irgendwo in eine Report-Datei geschrieben. Total
hilfreich…
Dienstag, 11.01.2005
Son of Suckerfish
Dieser recht merkwürdige Name steht für eine verdammt schlaue Art und Weise, aus ein paar ordentlichen verschachtelten Listen
<ul id="nav">
<li><a href="#">Percoidei</a>
<ul>
<li><a href="#">Remoras</a>
<ul>
<li><a href="#">Echeneis</a></li>
<li><a href="#">Phtheirichthys</a></li>
<li><a href="#">Remora</a></li>
</ul>
</li>
<li><a href="#">Tilefishes</a></li>
<li><a href="#">Tigerfishes</a></li>
</ul>
</li>
</ul>
nur mit der Hilfe von CSS – und etwas JavaScript für Dumme Browser(tm) *hust* MSIE *hust* – ein hübsches Dropdown-Menü zu erhalten:
Und da der HTML-Code dabei klinisch rein bleibt, ist das Ganze auch in Lynx (oder Screen-Readern!) ohne weiteres benutzbar:
* Percoidei
+ Remoras
o Echeneis
o Phtheirichthys
o Remora
+ Tilefishes
+ Tigerfishes
Ich persönlich halte nicht so furchtbar viel von solcherlei Menüs, aber das hier ist eine extrem saubere Methode, sie zu verwirklichen; daher Hut ab und vielen Dank an die Erfinder.
Mittwoch, 17.11.2004
Eigenartige Emails
19 + Mail Delivery Sys was soll das? 15.11.2004 05:29
sah ich letztens in meinem Spam-Folder. Lustig ist der Gedanke schon, dass sich der Mailserver darüber beschwert, was hier eigentlich gerade vorgeht…
Dienstag, 02.11.2004
Bang head here
Manchmal frage ich mich ernsthaft, was sich manche Programme
eigentlich bei den Dingen denken, die sie so von sich geben.
Zum Beispiel Matlab, als ich nach dem Ungleich-Operator gesucht habe:
> 1 != 2
??? 1 != 2
|
Error: != is not a MATLAB operator. Use ~= instead.
Oder die C-Shell hier auf den Uni-Servern:
cc> ^D Use "logout" to logout.
Ich meine, wenn Du schlaues Ding ohnehin weißt, was ich eigentlich wollte, warum tust Du es dann nicht einfach?!?
Samstag, 30.10.2004
Der Pinguin als Virendoktor
Monika (DE) hatte eine Virusinfektion auf ihrem Computer, aber die Virenscanner unter Windows waren nicht in der Lage, sie zu beseitigen. Ich hatte in der c’t schon mal von einer Knoppix-basierten Rettungs-CD gelesen – Dieses c’t-Projekt war zwar nicht online verfügbar, aber dafür etwas ganz ähnliches: INSERT, das Inside SEcurity Rescue Toolkit, oder auch Knoppix + ClamAV in einem handlichen, 50 MB kleinen CD-Image.
Knoppix hat mich zwar schon mehrmals erstaunt, und das hier war keine Ausnahme. CD eingelegt, Linux gebootet, aktuelle Virendefinitionen geladen, Virenscanner gestartet (sogar mit leicht zu bedienendem graphischen Frontend), und ne halbe Stunde später waren wir den Virus los.
Freitag, 22.10.2004
Server-Absturz
Nachtrag. Heute früh um etwa 5 Uhr ist Archon, der Server von ii-tech (d. h. Christoph, Matthias und mir) abgestürzt und ließ sich auch nicht wiederbeleben. Das bedeutet etwa 50 Leute waren ohne Email, und eine Handvoll nicht ganz unwichtiger Webseiten waren offline. Wir haben ihn dann mit einigem virtuellen Klebeband wieder notdürftig zusammengeflickt, und ich habe den ganzen Freitag und halben Samstag damit verbracht, einen Ersatz-Server einzurichten, sodass wir Samstag abend dorthin umziehen konnten.
Wir können von Glück sagen, dass wir vor zwei Monaten einen Ersatz-Server dazugemietet haben – eigentlich wollten wir demnächst geordnet und in aller Ruhe dahin umziehen, aber nun gut. Inzwischen sollte alles wieder einigermaßen im Lot sein.
Mittwoch, 06.10.2004
Umsteiger
Als ich das Computerlogbuch eingerichtet habe, habe ich mir einige Gedanken gemacht, welche Software ich dazu verwende. Ich bin dann ziemlich schnell beim Typ Blosxom gelandet, weil dort die Einträge schlicht Textdateien sind, und ich das am besten handhaben kann (und z. B. über FTP hochladen). Das Original-Blosxom ist in Perl geschrieben, damit kenne ich mich praktisch gar nicht aus, und zu der Zeit wollte ich sowieso gerne etwas mehr Python lernen. Also habe ich schlicht den Port PyBlosxom installiert.
Nicht mehr. Heute habe ich das Computerlogbuch auf das
Original-Blosxom umgestellt, weil mir PyBlosxom ziemlich auf die
Nerven ging. Die Symptome waren halb- bis ganz-kaputte RSS-Feeds und
vor allem das extrem nervige Datumsmanagement. Wenn man nicht die
dateieigene Aktualisierungszeit verwenden wollte (wofür ich mehrere
Gründe habe), war das beste Angebot ein Plugin, mit dem alle Dateien
name-yyyy-mm-dd-hh-mm heißen mussten.
Aber das waren nur die Symptome, das Hauptproblem war die praktisch nicht vorhandene Hackbarkeit von PyBlosxom. Nachdem ich jetzt das Perl-Originial installiert habe, wurde das nur um so deutlicher. Die Perl-Version ist kompakt, der Kern passt in eine einzige Datei, und die System-Architektur sowie die Plugin-Struktur sind einfach und klar. Im Gegensatz dazu ist die Python-Version ein riesig kompliziertes Ungetüm von Basisklassen und davon spezialisierten Standardklassen.
Hinzu kommt, dass das Original-Blosxom eine wesentlich größere
Nutzerbasis hat, und somit für praktisch alle Wünsche bereits
irgendjemand ein Plugin geschrieben hat. Und falls doch nicht, fiel es
mir relativ leicht, anhand von bestehenden Lösungen meine
Wunschfunktionalität zusammenzuschneidern. An der Oberfläche merkt man
davon nicht viel, außer der neuen (ordentlichen) Permalink-Struktur
/yyyy/mm/dd/name und der Suchbox, aber hinter den
Kulissen ist alles jetzt wesentlich aufgeräumter und angenehmer als
vorher. Nicht zu vergessen vernünftig hackbar, falls nötig.
Mittwoch, 15.09.2004
Der Neue
Da heute keine Vorlesungen waren, habe ich es gewagt und einen 2.6er-Kernel aufgespielt. Es hat erstaunlich gut funktioniert, und auch alle Sonder-Treiber (Graphik, Modem, WLAN) ließen sich einwandfrei kompilieren. Ob sie auch funktionieren, wird sich noch herausstellen müssen.
Ich hatte gehofft, mit einem neuen Kernel an der Power-Management-Front etwas weiterzukommen, und ein kleines bisschen bin ich das auch, der Prozessor kann dank powernowd jetzt automatisch heruntergetaktet werden, wenn keine Last vorhanden ist. Das sollte der Batterielaufzeit guttun. Suspend-to-RAM funktioniert leider immer noch nicht, der Gute schläft zwar ein, wacht aber nicht wieder auf – ich habe nach wie vor den Graphiktreiber im Verdacht.
Montag, 23.08.2004
abook mit Python
Dank Robin Sommer weiß ich jetzt, dass man das Adressbuch von abook mit dem ConfigParser von Python einlesen kann:
import ConfigParser
parser = ConfigParser.ConfigParser()
parser.read('~/.abook/addressbook')
abook = []
for section in parser.sections():
if re.search('^\d+$', section):
entry = {}
for item in parser.items(section):
entry[item[0]] = item[1]
abook.append(entry)
Und damit kann man sehr praktische Sachen anstellen, z. B. Hooks für mutt aus dem Adressbuch generieren usw. – fein!

Atom 1.0
RSS 1.0
RSS 0.91