Sonntag, 27. April 2008

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

Schnelle Hasen und verreckte Füchse: Hamburg-Marathon 2008

Sonntag, 27.04.2008: Ich habe mir heute einen Sonnenbrand geholt, bin fast Halbmarathon-Bestzeit gelaufen, habe zwei Hasen ziehen lassen müsssen, mir wurden Getränke gereicht...

Am Morgen des Vortags wollte ich eigentlich Anreisen per Flieger, von Karlsruhe nach Hamburg, doch auf der Autobahn zum Baden-Airpark war ein Stau und so reichte die (zugegeben: knapp kalkulierte) Zeit nicht mehr bis zum Check-In-Ende. Da rief auf einmal Matthias an: "Und, biste schon im Flieger?"

Matthias Rotzoll hat mir schon vor Monaten angeboten, für mich den Hasen zu machen in Hamburg. Vor zwei Jahren bin ich schon einmal zu ihm nach Hamburg, wo wir dann getrennt den Marathon angegangen sind (Matthias war damals auch Hase, allerding Hase für Rolf Aldag). In diesem Jahr sollte ich mich also an Matthias' Hintern für angepeilte 2:56 h erfreuen dürfen.

"Ich ärgere mich gerade, dass ich das Ticket nicht erstattet bekomme!", antwortete ich Matthias. Bin dann per Bahn angereist und nur etwa sechs Stunden später als mit dem Flieger in Hamburg angekommen.

Matthias, seine Freundin Jessie und ich gingen dann erstmal auf die Marathon-Messe: Startnummern abholen, Matthias' Pulsuhr reparieren lassen und dazwischen ein wenig auf den Ständen bummeln. Danach fuhren wir zur berühmten Pasta-Party bei Matthias' Eltern in Itzehoe. Obwohl wir noch zweimal in einen Stau gefahren sind und Matthias stichelnderweise mir das Anlasten wollte, war doch das Fliegerverpassen schnell wieder vergessen.

Nach der Pasta-Party (Lecker!) fuhren wir gegen Abend zu Matthias' und Jessies Wohnung, wo wir die Sachen für den Lauf zusammenpackten und noch ein wenig die Renntaktik besprachen. Einfache Regeln: Wir peilen 2:56 h, das ist deutlich unter 3:00 h, also dem, was ich unterbieten möchte. Das sind im Schnitt 4'10 min/km. Ich laufe hinter Matthias und klebe ihm sozusagen am Hintern, egal was kommt. Bei den Verpflegungsstellen soll ich vorher meine "Bestellung" bei ihm aufgeben, ich könnte in gleichmäßigem Tempo weiterlaufen und er würde mich dann samt Getränk wieder einholen (Matthias' Bestzeit ist 2:36 h - mal zwischendurch auf 3'40 min/km beschleunigen ist für Matthias kein Problem, mich einzuholen ergo auch nicht). Holger, den ich vor zwei Jahren kennenlernen durfte, würde auch mit uns mitlaufen, ergo könne ich mich auf zwei Hasen verlassen. Na, wenn das kein Service ist!

Gut, tief und fest schlief ich die Nacht durch und war beim ersten Handy-Piep um 6:00 h morgens wach. Wenig Frühstück, damit der Magen keinen Ärger macht, ein bisschen Kaffee, zwecks Darmentleerungs-Anreiz vor dem Lauf, letztes Wir-schaffen-das-zusammen-Foto (siehe links) geschossen, und ab ging's über den Umweg Holgerabholen in die Hamburger City.

In Schlump-Nähe geparkt fuhren wir ein paar Stationen Bahn, wobei annähernd japanische Verhältnisse herrschten: proppevoll! Wir zogen uns mitten auf dem Heiligengeistfeld um - Umkleidebereiche brauchte man bei strahlendem Sonnenschein nicht aufsuchen.

Als Läufer beobachtet man mindestens sieben Tage vor solch einem Lauf den Wetterbericht der Region, in der der Lauf stattfinden wird. Und das sah vor sieben Tagen noch sehr läuferfreundlich aus: 11° C Tageshöchsttemperatur, dazu ausgiebig Regen. Über die Woche veränderten sich die Prognosen, auf 20° C und Sonnenschein (mit Aussicht auf Gewitter am Abend - aber welchen Läufer interessiert schon ein Gewitter am Abend...

Wir zogen uns um und registrierten, dass es schon T-Shirt-warm in der Sonne war. Nicht gut für eine Bestzeit. Egal, ansonsten passte alles, die Beine fühlten sich gut an, der Magen auch, und überhaupt war die Stimmung relaxed. Kleiderbeutel abgeben, Toiletten-Maut einwerfen und 10 Minuten vor dem Start standen wir zusammen in Block B. Perfekt soweit.

Bei Kilometer 2 hatte ich ein Aha-Erlebnis: Aha, das läuft sich ja hier einfach super! Die ersten Kilometer liefen wir um 4'05 min/km, und es fühlte sich total locker an. Schön. Ich habe möglichst versucht, den Kopf leerzubehalten, quasi den Brain-Off-Modus herzustellen, der bei der Arbeit so stört. Das ging auch einigermaßen gut.

Vom Start weg läuft die Masse die Reeperbahn Richtung Altona runter. Anfangs bin ich nur Matthias hinterhergelaufen, später dann, als die Reihen sich um uns lichteten, konnten Matthias und Holger nebeneinander laufen, so dass ich quasi um einen halben Läufer versetzt zwischen ihnen lief. Super! Windschatten (naja, nicht viel, aber man bildet es sich ein) und ein direkter Kontakt zu meinen Hasen, so dass ich nie auf den Abstand zwischen uns achten musste und mich ganz aufs Laufen konzentrieren konnte. Quasi ein kenianischer Express in der Itzehoher Variante.

Bei Kilometer 5 tutete Matthias' Vater uns auf seiner unüberhörbaren Tröte entgegen und Jessie stand winkend neben ihm. Es ist sehr schön, angefeuert zu werden. Allerdings war kurz vorher die erste Streckenverpflegung, und kaum dass ich ein paar Schluck Wasser getrunken hatte, meldete sich mein Magen: "Du, nee, das passt mir jetzt aber gar nicht mit dem Wasser da!" Und von da an bis zum Schreiben dieses Blogposts zickte er nur noch rum. Ich habe eine Magen-Diva!

Egal, dachte ich, das Tempo ist gut, die Beine fühlen sich gut an, die Hüfte macht keinen Ärger, es läuft. Jetzt kamen die Landungsbrücken, und die Kulisse der Zuschauer, wie sie da so überall auf den Mauern, Strassen und Brücken stehen, ist immer wieder so beeindruckend, dass ich da mit einer Gänsehaut durchlaufe - und das bei dem Wetter, das mittlerweile deutlich spürbar heißer wurde in der Sonne. Der Tunnel, der da irgendwo beim Hauptbahnhof ist, und durch den wir dann zur Bnnenalster kamen, war noch das Angenehmste, weil Kühlste, auf der Strecke.

Jungfernstieg, Kilometer 15: Die Sonne scheint, das Haar sitzt, der Läufer läuft. An der Außenalster entlang bis kurz nach dem Feenteich liefen wir, die Halbmarathonzeit wurde dann irgendwo in Barmbek-Süd genommen. Hier sind unsere Zeiten bis Halbmarathon:


Zwischen-
zeit
5-km-Zeitmin/km
km 520'3920'394'07,8
km 1041'0220'234'04,6
km 151:01'4820'464'09,2
km 201:22'2820'404'08,0
km 21,095
1:27'04-4'07,6

So weit, so schnell. Die Magenschmerzen wurden jedoch dummerweise nicht weniger, bis ich bei Kilometer 23 dermaßen Stiche in der Magengegend verspürte, dass ich kurz gehen musste. Das ist immer so eine dumme Abhängigkeitssache mit den inneren Organen: Wenn der Magen krampft, dann macht er der Lunge keinen Platz mehr, was hindert am lockeren Atmen. Und wenn man nicht locker atmet, dann findet das der eh schon verkrampfte Magen nicht gut. Ein Teufelskreis.

Holger lief dann weiter und Matthias blieb bei mir. Er kann wirklich sehr gut zureden, wenn's einem dreckig geht, und egal ob's das Stückchen Traubenzucker oder seine zuckersüßen Worte waren: Ich raffte mich nochmal auf und lief weiter.

Und Matthias redete in einem fort: Ich solle kräftig ausatmen, den Schmerz wegatmen, den Schmerz nicht wahrnehmen, der sei nur in meinem Kopf. Immerhin habe ich mich dann so sehr bemüht, seinen Anweisungen zu folgen, dass ich nicht mehr so auf den Scherz geachtet habe, und so liefen wir bis etwa Kilometer 28, wo es mich dann total dahinraffte. Die folgende Tabelle zeigt, wie's danach weiterging:


Zwischen-
zeit
5-km-Zeitmin/km
km 25
1:44'2421'544'22,8
km 302:13'1428'505'46,0
km 352:45'1932'056'25,0
km 403:28'5533'366'43,2
km 42,195
3:50'19-5'27,5

Da kann man's nun deutlich sehen: Bis Kilometer 25 ist's trotz Gehpause und langsamem Weiterlaufen noch im grünen Bereich, und auch bis Kilometer 28 war noch alles für unter 3:00 h ungefährlich, doch dann wurden die Gehpausen eher von den Laufphasen unterbrochen als umgekehrt, und das Tempo sank gen 6'00 und drüber. Tatsächlich konnte ich mich noch immer wieder aufraffen, um ein paar hundert Meter zu laufen, doch dann meckerte der Magen und stach mit Messern wild um sich.

Bislang habe ich nur einen einzigen Marathon oder Ultra abgebrochen. Das hat mir dann drei Wochen später in Hamburg zwar meine (leider immer noch bestehende) momentane Bestzeit eingebracht, doch wird das auch immer ein Fleck sein auf meiner ansonsten makellosen Finisher-Weste. Und dieser Fleck hat mich dann auch heute wieder an meinen Vorsatz erinnert, nie wieder einen Marathon abzubrechen, komme was da wolle.

So ein Vorsatz ist super, wenn man sich immer wieder fragt "Warum machst Du den Mist noch? Du schaffst die Bestzeit doch eh nicht mehr, und genießen kannst Du den Lauf auch nicht mehr (weil Du Messer in der Magen-Diva hast)! Hör' doch einfach auf und steig da vorne in die U-Bahn..." Verlockend, aber chancenlos gegen gute Vorsätze.

Also genoss ich das Gehen/Laufen, so gut das eben geht. Immerhin: Tolles Wetter, wenn man keine Bestzeit mehr anpeilt. Alle 100 m etwa lag ein Läufer am Boden, dehydriert, KO, fertig mit sich, dem Lauf und der Welt. Die, die nicht mehr bei Bewusstsein waren, wurden von Sanitätern untersucht. Kriegsgebiet in der Rotenbaumchaussee.

So ging ich denn über die Videopunkte bei km 30 und km 35 - sieht richtig beschwerdefrei aus, oder? Ich trug ein blaues T-Shirt, Sonnebrille und war der, der ganz rechts ging. Und konnte mich ab und an noch aufraffen, für jeweils ein paar hundert Meter so zu tun, als könnte ich laufen. Ohne die vielen Anfeuerungen der Zuschauer wäre ich bestimmt noch viel später ins Ziel gekommen. Die Zuschauer schauen sich teilweise gezielt Geher aus, um dann den Namen von der Startnummer abzulesen und dann massivst motivierend auf den Kraftlosen einzubrüllen, als ob der Schall alleine ihn antreiben könnte. Man versucht schon aus Angst, dass die gleich über die Absperrung springen und handgreiflich werden könnten, zumindest ein paar Schritte in Trab zu verfallen. Und trabt man dann tatsächlich an, dann bricht die Meute in frenetischen Jubel und Begeisterung aus. Herrlich!

Bei 3:50'19 h bleibt also meine Netto-Marathon-Zeit stehen. Meine Halbmarathon-Bestzeit, vor ein paar Wochen erst aufgestellt, war 1:26'44 h - nur 20 Sekunden besser als die erste Hälfte dieses Marathons. Sicherlich bin ich auch zu schnell angegangen, aber so schlimm war's dann doch noch nimmer. Auf dem letzten Drittel habe ich über eine Stunde verloren!

Man kann meine Zielzeit auch anders verdeutlichen: Im Zielbereich sonnten sich bereits Matthias und Holger - massiert und frisch geduscht (siehe Foto unten). Matthias kam in 2:59'54 h ins Ziel. Das tut weh, denn wenn ich an meinem Hasen drangeblieben wäre, dann wäre das meine Zeit gewesen. Holger konnte sogar noch eine 2:54er-Zeit erlaufen. Das wäre meine Zeit gewesen, wenn ich das Tempo der ersten Hälfte hätte durchhalten können. Hätte, wäre, könnte, egal.


Die Massage konnte ich knicken: Wo 3-h-Läufer sich einfach auf die Bahre legen können, da steht vor dem Fast-4-h-Läufer eine 10-Personen-Warteschlange. Und auch beim Duschen wird man an seine Niederlage erinnert: "Warmes Wasser? Ist vor 30 Minuten ausgegangen!"

Nach dem Duschen trach ich einen Verrückten, der um 4 h rum lief in voller Nonnentracht (siehe Foto rechts) - schwarzer Baumwollstoff, bei dem Wetter!

Kurzretrospektiven samt Ursachenforschung bei McDonalds beendeten dieses Laufevent offiziell: Klar war die Sonne ein Problem (immerhin habe ich mir einen leichten Sonnebrand auf den Oberarmen geholt), und wenn's so war, dann ist das halt so. Wetter hat man nicht im Griff. Andere Möglichkeit: Ich habe mir einfach zu viel vorgenommen (Hamburg und Biel) und zu wenig getan. Letzteres beinhaltet, dass ich keine adäquaten Zeiten bei Wettkämpfen über 10 km und Halbmarathon vorweisen kann. Das stimmt, bin ich doch in den letzten drei Jahren diese Distanzen fast ausschließlich in der Vorbereitung und aus dem Training heraus gelaufen. Ausdauer ist nicht das Problem, denn ich war schon nach dem Duschen wieder relativ fit und außer ein wenig Muskelkater in den Oberschenkeln hat der Marathon auch keine Spuren hinterlassen.

Nun denn, wenn denn wirklich das mangelhafte Tempo über Kurzdistanzen die Ursache für den Einbruchen sind, dann muss ich fürs nächste Mal andere Voraussetzungen schaffen: Holger und Matthias habe ich bis Jahresende eine 1:25 h im Halbmarathon und eine 36'00 min über 10 km versprochen. Meine aktuellen Bestzeiten sind 1:26'44 h bzw. 38'09 min., wobei die 10er-Bestzeit mit 300 Höhenmeter erreicht wurden. Die Steigerungen sollten machbar sein. Ergo wird's keinen Herbstmarathon, geben, sondern einige 10er und zwei oder drei Halbe, bis das Ergebnis stimmt. Aber das wird erstmal nach Biel angegangen.

Danke an Marko und Gerd fürs Zuschauen (habt Ihr mich gesehen?). Danke an Holger fürs "spontane" Mitlaufen. Danke an Ute, Wille und Jessie für Kost, Logis, Zuspruch und Unterstützung. Danke an Jorina fürs gute Zuhören.

Und natürlich einen ganz großen Dank an Matthias für den Hasen, für das tolle Wochenende und einfach dafür, dass es Dich gibt!

Update 01.05.2008: Matthias' und Holgers Laufverbund SpeedAlliance berichtet auch vom Hamburger Marathon.

Samstag, 26. April 2008

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

[Biel < 9] KW 16: 100,2 km (100), 6160 kcal

Man sollte meinen, nach 120 km in der Vorwoche könne einen nichts mehr erschrecken. Doch, kann es, wenn es ein 35-km-Lauf sieben Tage vor dem Hamburg-Marathon ist. Nach einer ansonsten ruhigen Woche (4 Grundeinheiten zwischen 15 und 18 km in 4'45 bis 4'54 min/km), zwei Ruhetagen, aber keinem Aquajogging und Schwimmen, nach richtigem Relaxen also, da sollte also nochmal ein 35er gelaufen werden. Da ich auch noch keine Endbeschleunigung in einem Langen Lauf eingebaut hatte, sollte das also auch noch dazukommen. Und es hat geklappt!

"Endbeschleunigung" nennt sich das Verfahren, einen der hinteren Streckenabschnitte in einem langen Lauf im oder nahe am Marathontempo zu laufen. Also läuft man beispielsweise 25 km in 5'15 min/km und dann abschließend etwa 10 km in 4'10 min/km. Das ist fast schwerer, als ausschließlich gleichmäßig im Marathontempo zu laufen, denn man muss hinten raus beschleunigen, und zwar gerade dann, wenn man sich so schön in den Trott hineingelaufen hat. Der erhoffte Effekt beim Marathon soll der sein, dass man auch noch bei km 35, wenn die Beine schwer und der Weg unendlich weit wird, dass man dann genug Reserven noch hat, um die letzten Kilometer zu überstehen.

Bei meinem 35er waren mir 10 km Endbeschleunigung zu viel so kurz vor dem Marathon. Ich wollte nur mal sehen, ob ich noch genug Reserven aufbieten könnte, quasi als Beruhigung und um Gewissheit zu erhalten. Also bin ich bei Regen und viel Matsch im Schwarzwald nach km 29 schneller gelaufen, hügelab bis zu 3'30 min/km, um einen Schnitt von immerhin 4'21 min/km bis km 34 zu erzielen. Den letzten Kilometer bin ich dann wieder ins Trabtempo gefallen, quasi das Auslaufen. Der Schnitt über die kompletten 35 km inkl. 380 m Aufstieg war dann mit 4'57 min/km für meine Verhältnisse sehr gut. Doch, das ist ein für Hamburg beruhigendes Ergebnis :-)

So, noch sieben Tage bis zum Hamburg-Marathon und acht Wochen bis Biel. Kann mich nicht erinnern, jemals so fit vor einem Marathon gewesen zu sein. Jetzt wird die Ernte eingefahren!

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

[Biel < 9] KW 15: 120,1 km (120), 6810 kcal

Das war die trainingsintensivste Woche in diesem Biel-Training laut Plan: 120 km, die ich aber relativ locker weggesteckt habe. Von Dienstag bis Freitag bin ich je 20 km in 4'40 bis 4'53 min/km gelaufen, am Samstag gab's zusammen 15 km Aquajoggen und Schwimmen und am Sonntag einen kurzen Langen Lauf mit 25 km. Und mir geht's trotz der vielen Kilometer recht gut.

Einziger Haken in dieser Woche war der total nervenaufreibende Verlust unseres Hundes im Karlsruher Hardtwald am Sonntag nachmittag nach 20 km des 25ers. Gerade noch habe ich mir von einem Mitläufer erzählen lassen, wie toll doch Thekla, unsere Hünding, mit mir mitlaufen würde und wie sicherlich sehr gut sie zur psychologischen Unterstützung bei langen Läufen doch sei - und "Zack!" ist sie hinter mir verschwunden, von jetzt auf gleich! Da war der Schock schon groß, als ich sie trotz Rufens und Suchens nicht mehr wiederfinden konnte. Nach einer sehr, sehr langen Nacht voll schlechten Gewissens ist sie dann zum Glück im Tierheim wieder aufgetaucht. Vielen Dank dem Unbekannten, der sie in der Nacht bei der Polizei abgegeben hat!

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

[JAX 2008] JAX Innovation Award 2008 2. Gewinner: Grails (Bericht & Fotos)

Am Abend des 23.04.2008 wurden auf der JAX in Wiesbaden die Vertreter der nominierten Projekte für den JAX Innovation Award auf die Bühne von Saal 1 gebeten. Darunter befand sich auch Guillaume Laforge, Project Lead von Groovy. Groovy gewann im letzten Jahr den JAX Innovation Award - ein Umstand, der die Chancen für Grails in diesem Jahr leider negativ beeinflusste, so munkelte man zumindest vor der Verleihung. Dennoch: Grails war dieses Jahr unter den Top Ten und alleine dieser Fakt ist schon super!

Guillaume machte eine tolle Figur, als er Grails dem Publikum vorstellte - und überraschte damit, dass er seine ersten Sätze in doch recht brauchbarem Deutsch formulierte. Weiter so, Guillaume, dann brauchst Du Dir diesen Blog bald nicht mehr übersetzen zu lassen ;-)

Die Verleihung der Preise fing bei Platz 5 an. Platz 2 und damit EUR 5000 gingen an Grails. Ein tolles Ergebnis! Herzlichen Glückwunsch an dieser Stelle an Graeme Rocher, Project Lead von Grails, und allen Grails-Comittern, -Patchern, -Doku- und Plugin-Schreibern, sowie G2One, der Firma hinter Groovy und Grails! Platz 1 ging übrigens, nach Spring im Jahre 2006 und Groovy im Jahre 2007, an dynaTrace. dyna-was? Ja, genau, haben wir uns im Publikum auch gefragt ;-)

Der Publikums-Award wurde durch Handzeichen vom Publikum noch am gleichen Abend ermittelt, unmittelbar nach der Verleihung des JAX-Innovation-Awards. Das war relativ spaßig: Außer für Grails gab's nur noch Handzeichen für GreenFire, der Open-Source-Heizungssteuerung (!) von Adam Bien. Und im Gegensatz zur Jury-Verleihung des Hauptpreises konnte ich die Abstimmung des Publikums gut nachvollziehen: Adam Bien hat wirklich eine gelungene Vorstellung von GreenFire gegeben und das Publikum in seinen Bann gezogen. Kommt noch erschwerend hinzu, dass GreenFire auf der Ökowelle reitet, Adam Bien seit Jahren Publikums-Magnet auf der JAX ist (und damit hohes Ansehen beim JAX-Publikum genießt) und GreenFires letztes Feature eine Schnittstelle zum iPhone ist. Damit schlug GreenFire problemlos Grails mit einem Verhältnis von etwa 80 zu 20 Handzeichen. Herzlichen Glückwunsch an Adam Bien und seinem GreenFire! Grails wird's verkraften, immerhin 2. Platz, sowohl beim Jury-, als auch beim Publikums-Awards. Und GreenFire nutzt massiv Groovy - ergo bleibt's in der Familie :-)

Mittwoch, 23. April 2008

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

[JAX 2008] JAX Innovation Award 2008 2. Gewinner: Grails

Der 2. Platz des diesjährigen JAX Innovation Awards 2008 geht an Grails! Herzlichen Glückwunsch! (Fotos folgen)

Donnerstag, 17. April 2008

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

Neue Teilnehmereingabe für werkannwann.de

Vor ein paar Wochen haben wir werkannwann.de einer beschränkten Öffentlichkeit zugänglich gemacht - und sehr viel Feedback zurückbekommen! Da haben sich alle bei it-agile, die an diesem Projekt beteiligt sind, sehr drüber gefreut. An dieser Stelle vielen Dank für die tolle Resonanz!

werkannwann.de wird agil, u.a. also iterativ entwickelt. Bugs zu fixen hat immer Vorrang vor neuen Features, und so wird am Anfang einer Iteration das System von Bugs befreit. Es ist nur... da waren keine richtigen Bugs zu fixen. Dank sehr ausführlichem Feedback haben wir zig Rechtschreibfehler, grammatikalische Fauxpas und verrutschte Grafiken und Layoutbereiche korrigiert, aber so Bugs im Sinne von "Das System verhält sich nicht so, wie es sich verhalten sollte!" gab es keine.

Gut, es gibt ja immer diese Diskussionen, ob das nun tatsächlich ein Bug ist oder ein Feature, dass noch nicht umgesetzt wurde. Wenn das Bemängelte nämlich ein Feature ist, dass noch nicht umgesetzt wurde, dann kann es ja noch nicht funktionieren, korrekt? Und daher ist das dann kein Bug. So sieht die Welt durch die rosarote Entwicklerbrille aus.

Diese Frage, ob Bug oder Feature, ist meist nicht nur eine Frage der Ehre für die Entwickler ("Ich habe da keine Bugs eingebaut, lieber Auftraggeber, Du hast die Features nicht richtig oder gar nicht beschrieben!"), sondern letztlich eine Frage des Geldes: Wenn es ein Bug ist, zahlt das Fixen der Auftragnehmer, während Features natürlich vom Auftraggeber bezahlt werden. Oft streitet man sich da um Selbstverständlichkeitsanforderungen. Kunde: "Das ist doch selbstverständlich, dass sich die Anwendung so und so verhalten muss! Alles andere ist doch Blödsinn!" Entwickler: "Aber das haben Sie nirgendwo angefordert, richtig? Woher soll ich denn wissen, wie sich das System genau verhalten soll, wenn Sie mir das nicht sagen? Es gibt [große Zahl] mögliche Lösungen für das Problem, und Ihre Lösung ist nur eine davon und somit gar nicht selbstverständlich!" Es sollen schon Kriege ausgelöst worden Firmen untergegangen sein, weil sich Entwickler und Kunden nicht auf Bug oder Feature einigen konnten...

Naja, in der Produktentwicklung, also auch bei werkannwann.de, ist es wirklich fast nur eine Frage der Ehre, vielleicht noch eine Frage des Geldes beim Budget von Entwicklung (Auftragnehmer) und Produktmanagement (Auftraggeber). Aber den Benutzer, der seine Termine abstimmen will, den interessiert das nicht, der will, dass es ordentlich läuft.

So eine Bug-oder-Feature-Sache war die Eingabe der E-Mail-Adressen des Organisators und der Teilnehmer. Bislang hatten wir jegliche Eingabe bei den E-Mails akzeptiert, also auch z.B. "blubb". "blubb" ist aber keine E-Mail-Adresse, und dann knallt es beim Versenden. Wir sind in der Alpha-Version erstmal davon ausgegangen, dass wir uns die Mühe sparen können, diese Eingabe zu validieren, um mehr Entwicklungskapazitäten für drängendere Features zu haben. Falsche Annahme, wie uns einige Benutzer meldeten. Wir haben verstanden, und es können jetzt nur noch syntaktisch korrekte E-Mail-Adressen eingegeben werden.

Überhaupt haben wir die Teilnehmereingabe selbst überarbeitet: Früher sah die Eingabe so aus:
Diese Grafik ist manipuliert, also zusammengeschnitten, denn tatsächlich waren 15 Teilnahmefelder (intern haben wir die "Rippen" genannt) auf der Seite, nicht nur die neun in der Grafik. 15 Rippen waren doof, wenn man nur ein oder zwei Teilnehmer eingeben wollte, denn die Seite war unübersichtlich und hat sogar Probanden in Usability-Tests erschreckt ("Huaa, was geht denn jetzt ab? Die muss ich alle ausfüllen?"). Andererseits wollten Benutzer mehr als 15 Teilnehmer abstimmen lassen, und das ging bis dato auch nicht.

Jetzt sieht die Seite so aus:
Da ist jetzt nur noch eine Rippe zu sehen, dafür aber ein Plus-Zeichen daneben. Klickt man auf das Pluszeichen, dann wird eine weitere Rippe hinzugefügt. Für Power-User hilfreich: Es erscheint auch eine weitere Rippe, wenn man im letzten E-Mail-Feld eines Teilnehmers den Tabulator bedient. Dann springt man gleich weiter zum Namens-Feld der neuen Rippe. So kann man hintereinander die Teilnehmer nur so "wegtippen".

Na, ist das was? Das ist was!

Wer's ausprobieren mag: werkannwann.de ist weiterhin im Alpha-Stadium, was bedeutet, dass ohne Anmeldung keine Abstimmung angelegt werden kann (das Abstimmen selbst geht übrigens ohne Login). Interessierte bekommen die Zugangsdaten zu werkannwann.de, wenn sie kurz anfragen unter info@werkannwann.de.

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

Artikel 'Entwurfsmuster: Flexibel programmieren mit dem Fluent Interface'

Fünf Jahre ist es her, dass ich das letzte Mal einen Artikel veröffentlicht habe. Man kommt ja zu nix mehr neben der Arbeit und dem Laufen. Vor einem halben Jahr hatte ich aber mal wieder Lust aufs Artikelschreiben, und das Ergebnis ist jetzt da, in der ix 05/2008 auf Seite 126: Entwurfsmuster: Flexibel programmieren mit dem Fluent Interface.

[Update 13.01.20082009: Den Artikel gibt's jetzt auch online im heise Developer.]

In dem viereinhalbseitigen Artikel entwickle ich schrittweise einen Builder (im Artikel "Erbauer" genannt) zu einem sog. Fluent Builder (im Artikel schreibe ich vom "Flüssigen Erbauer"), also einem Builder mit einem Fluent Interface. Der hat dann einige Vorteile, weil man z.B. eine Grammatik vorgeben kann und so eine domänenspezifische Sprache (DSL) ermöglicht. Dadurch wiederum wird der Builder sehr flexibel verwendbar, ohne dabei Inkonsistenzen zu erzeugen.

Die Bezeichnung Fluent Builder ist nur logisch, wenn man ein Fluent Interface mit einem Builder kreuzt; es haben schon andere ihr Ergebnis so bezeichnet. Allerdings habe ich da nicht geklaut: Der Artikel ist im September 2007 entstanden, wohingegen das erste Auftauchen eines Fluent Builders (der auch das meint, was er bezeichnet) von Dezember 2007 her datiert. Dort wird allerdings das gebaut, was ich in dem Artikel als "Zartschmelzende API" bezeichne und den Evolutionsschritt 2 von 4 kennzeichnet. Im Artikel gehe ich also noch etwas weiter in der Materie.

Der Fluent Builder ist in einem Projekt bei einem großen deutschen Versicherungskonzern entstanden. Dort hatte ich alle vier Entwicklungsstadien, die im Artikel beschrieben sind, durchexerziert, sehr zum Leidwesen meiner Kollegen dort. Auf deren Drängen bei meinen ersten flüssigen Gehversuchen ("Bernd, das ist inkonsistent, da sind die Verantwortungen nicht getrennt, das ist B****hit!") bin ich überhaupt erst soweit gekommen. Und als ich dann endlich soweit war, dass ich auf so ziemlich alle Fragen zur Flüssigen Entwicklung Antworten geben konnte - da wollte ich das nicht jedesmal neu erzählen und hab's aufgeschrieben. "Zweifel nähren das Denkvermögen" (Peter Schumacher), und daher ist dann irgendwann jener Artikel in der ix draus geworden. Speziellen Dank also an Matthias und Andreas für fruchtbare Reibereien.

Danke, Jorina, Stefan, Urs und Matthias, fürs Reviewen. Dank auch an meine Redakteurin Kersten Auel für die sehr gute Betreuung.

Errata
12.05.2008: In Listing 4 müsste es in der ersten Zeile statt
public class AbschnittWertZuStelleDescriptor {
lauten
public class AbschnittWertZuStelleDescriptor<Rueckgabe> {
Danke an Carsten Siedentop für sein Feedback.

Montag, 7. April 2008

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

[Biel < 9] KW 14: 84,9 km (90), 4774 kcal

Diese Woche war klein, aber oho: Dienstag, Mittwoch und Donnerstag wollte ich 18, 19 und 18 km laufen. Gleich am Dienstag habe ich aber arge Bauchkrämpfe nach 10 km bekommen und habe daher bei Kilometer 16 abgebrochen. Nach Hause bin ich dabei geschlichen, so dass ich nur auf einen Schnitt von 5'09 min/km kam, statt der angepeilten 4'45-5'00 min/km. Warum ich da Krämpfe hatte? Weiß der Geier...

Am Mittwoch dann wie ausgewechselt: In einem Schnitt von 4'41 km/min bin ich 19,4 km nur so dahingeschnurrt. War einfach herrlich und ohne jegliche Probleme. Einen Tag später dann aber wieder Fiasko: Bauchkrämpfe, Seitenstechen, schwere Beine, da ging nach ein paar Kilometern nichts mehr. Wieder gekrochen, wieder doofe Zeit: 5'19 min/km. Was war nur los? Ich habe keine Ahnung...

Die insgesamt verlorenen Kilometer wollte ich zuerst noch wettmachen am Samstag im Schwimmbad, hab' mich dann aber doch nicht aufraffen können. Am Sonntag dann der zweite 35er von insgesamt vieren in diesem Biel-Training. Und der lief dann wieder erstaunlich gut: In einer Durchschnittszeit von 5'18 min/km (Vorwoche: 5'26 min/km) absolvierte ich die 35 km horizontal und 370 m vertikal. Mein Puls lag dabei im Schnitt bei 135 bpm (Vorwoche: 144 bpm). Dabei bin ich diese Woche mit Trailschuhen gelaufen (schwerer und unflexibler als die Lightweight-Trainer von letzter Woche) und das Wetter war Katastrophe: um 3° C, Hagel, Regen, Schnee und alles dazwischen. Die Strecke war aufgeweicht und der Wind war recht unangenehm. Kurz: Schlechtere Bedingungen und besseres Ergebnis als in der letzten Woche. Das nennt man Trainingseffekt und mich freut's :-)

Wieviel Kraft einen solch lange Läufe kosten, dass kann ich immer wunderbar an unserem Hund Thekla erkennen. Sie ist ein Border-Collie-Mix und eine sehr gute Läuferin. Wenn ich in Karlsruhe und Umgebung laufe, also nicht arbeitsbedingt auf Achse bin, dann nehme ich sie immer mit, so auch bei den 35-km-Läufen. Nach so einem langen Lauf ist sie immer total fertig, liegt nur noch rum und verpennt sogar auch noch einen Großteil des Folgetages. Ein schöner Spiegel meiner selbst: Wenn ich sie dann da so dösen sehe, dann denke ich oft "Ja, eigentlich hast Du ja recht..." ;-)

Die nächste Woche wird die bislang härteste werden: 4 x 20 km, 1 x 25 km, 1 x Tempo (3 x 3 km in 4'15 min/km). Einen 20er werde ich davon ersetzen durch Aquajoggen und Schwimmen, aber auch so wird das heftig, insgesamt 120 km. Danach kommt noch eine Woche mit 100 km und in der Woche dann ist der Hamburg-Marathon dran.

An dieser Stelle möchte ich Matthias zu seinem Sieg beim Halbmarathon in Neumünster gratulieren! Der Teufel ist doch glatt in 1:18'08 h den Halben gelaufen, damit auf Platz 1 gelandet, hat die Bestenliste umgeschrieben - und ärgert sich, dass er seine angepeilte Zeit nicht hat erreichen können! Tsts, Jammern auf sehr hohem Niveau ist das. Aber ist ja auch immer relativ, über was man so jammert. Mich beruhigt es zu wissen, dass mein Hase für den Hamburg-Marathon in Topform ist. Ich bin mir sicher, dass wenn ich bei Kilometer 37 zusammenbreche, weil Matthias mich verheizt haben wird, er mich Huckepack über die Ziellinie trägt - in Bestzeit selbstverständlich ;-)

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

[Biel < 9] KW 13: 108,6 km (110), 6389 kcal

Bin wieder im Rückstand mit dem Lauftagebuch-Führen. Dieser Post bezieht sich also auf die Vorvorwoche.

Das war die bislang intensivste Trainingswoche vor Biel im Plan: 6389 kcal habe ich verbrannt, davon alleine 2276 kcal bei meinem ersten 35-km-Lauf in diesem Biel-Training. Der Lauf hatte es auch in sich, da es mit 18° C ungewöhnlich warm war und die Strecke fast 370 Höhenmeter hatte. Aber man fühlt sich großartig nach solch einem Lauf :-)

Auch ansonsten war die Woche sehr gut: 5 x Laufen zwischen 12,5 und 35 km, 1 x Aquajoggen und 1 x Schwimmen. Vor dem Hamburg-Marathon in ein paar Wochen will ich auch nicht mehr so viel ins Wasser, daher waren es diese Woche nicht zwei, sondern nur einmal Aquajoggen.

Mein neues Krafttrainingskonzept (wenige Übungen, dafür aber nach jedem Lauftraining) scheine ich gut durchzuhalten, aber mal abwarten, wie das auf lange Sicht funktioniert. Besonder viel Spaß macht die "Big 10"-Übung. Die geht so: 10 x Liegestütz, 10 x Situps, 9 x Liegestütz, 9 x Situps, ..., 1 x Liegestütz, 1 x Situps, fertig. Hört sich sehr einfach an, aber es gibt keine Pause zwischen den Übungen und spätestens Stufe 7 auf der negativen Pyramide treibt das Laktat in die Muskeln. Die Übung kann man auch super variieren, etwa Liegestütz und vertikale Situps an der Klimmzugstange, oder Burstklimmzüge mit horizontalen Situps. Wenn die Abfolge zu schnell hintereinander ist, man also das Bedürfnis nach mehr Pause zwischen den Übungen hat, so kann man einfach die Übungen an unterschiedlichen Orten machen, etwa in gegenüberliegenden Ecken des Raumes. Die Zeit, die man von einer Ecke zur anderen braucht, reicht meistens als Pause, und man hat eine definierte Pausenzeit und dehnt die Pause nicht ungewollt durch Herumsitzen in die Länge.

Nächste Woche wird ruhig: nur 90 km und auch nur vier Einheiten.

Sonntag, 6. April 2008

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

Auf der SEE mit einer Einführung in Agile Entwicklung


Vom 28. bis 30. April findet die SEE in Bern in der Schweiz statt. Jens Coldewey und ich geben dort eine Einführung in Agile Entwicklung in Form eines ganztägigen Workshops.

Da werden wir mit einem kleinen Vortrag auf die Agile Entwicklung eingehen. In einer Übung sollen die Teilnehmer agil ein Produkt entwickeln. Eine weitere Übung soll zeigen, warum Kommunikation so wichtig in (aber nicht nur) agilen Projekten ist. Und schließlich wollen Jens und ich noch ein wenig Testgetriebene Entwicklung und Pair-Programming demonstrieren - hoffentlich wird die Uraufführung so lustig wie die Theaterprobe vor zwei Tagen :-) Neben dem Programm wird es ausgiebig Gelegenheit für Diskussionen geben. Eine agile Retrospektive wird den Tag dann beschließen.

Dieses Event stellt eine Reihe von Innovationen für mich dar: Dies wird mein erster Besuch der SEE sein und ich bin schon ganz gespannt auf Land und Leute; dies ist mein erster "Auftritt" mit Jens und ich freue mich sehr über die Gelegenheit, mit ihm zusammenarbeiten zu dürfen; das wird der erste Workshop, den ich am Folgetag eines Marathons halten werde :D

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

Auf der JAX mit Grails und Agile Lego Hour

Vom 21. bis 25. April 2008 findet die JAX statt. Zusammen mit meinem it-agile-Kollegen Stefan Roock werde ich zwei Sessions halten:

  • Dienstag, 22.04., 11:30 h: Grails - Der Gral der Webanwendungen
    Ein einstündiger Überblick über Grails in Theorie und Praxis (ja, wir coden!). Wer Grails noch nicht kennt und gerne kennen lernen möchte, der ist hier gut aufgehoben.
  • Mittwoch, 23.04., 16:00 h: Agile Lego Hour
    Eine einstündige Übung (zusammen mit Daniel Lübke und Thomas Flohr), in der wir die Teilnehmer ein Produkt aus Lego mit einem agilen Prozess entwerfen lassen. Spaß ist hier garantiert! Und so viel haben sie noch nie in einer Stunde über Agile Softwareentwicklung gelernt - garantiert nicht! Diese Session haben wir bereits auf der W-JAX 2007 gehalten, und sie ist dort sehr gut bei den Teilnehmern angekommen.

Samstag, 5. April 2008

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

Grails-Buch-Kapitel über Validierung von Eingaben

Stefan und ich haben ein neues Kapitel über die Validierung von Eingaben für unser Grails-Buch fertiggestellt und es auf die deutschsprachige Grails-Mailingliste zwecks Review hochgeladen. Über Feedback würden wir uns sehr freuen!

Update 06.04.2008: Der direkte Link auf das Kapitel ist kaputt, weil dynamisch (nicht REST). Das Kapitel steht aber immer noch im Datei-Bereich der Mailingliste zum Download zur Verfügung.