Brückentage – Kurzurlaub

Kaum zu glauben schon wieder sind 4 Monate des Jahres vorbei – ein Drittel ist geschafft – langsam Zeit an Weihnachtsgeschenke zu denken 😮 …

Aber erst mal habe ich das verlängerte Wochenende genutzt um mal ein wenig Abstand zur Arbeit zu gewinnen. Am Freitag bin ich nach Freiberg zu meiner Freundin gefahren – mal wieder die üblichen 600 zusätzlichen Kilometer auf den Corsa draufgefahren – aber so Langstrecke bekommt ihm ja ganz gut. Nach mehr als 6 Stunden Fahrt war ich dann aber erst mal eines: Ziemlich fertig. Von daher gabs am Freitag nicht mehr viel was man mit mir hätte anfangen können.

Samstag erst mal die übliche Runde: Einkaufen und Tanken, damit man nicht irgendwo auf der Strecke liegen bleibt. Da noch mehr Leute die gleiche gute Idee hatten war es doch recht voll beim Einkaufen. Dann natürlich auch noch ein wenig vorbreiten für den 30. April – kurzfristig hatten wir uns noch entschlossen mit ein paar Freunden zu grillen – also „woher bekommen wir den Grill, wer macht was … etc.“

Zudem haben wir noch Resis Mutter besucht – dort waren einige handwerkliche Arbeiten (Aufhängen von Gardinen-Stangen) fällig – eine meiner leichteren Übungen. Gemeinsam haben wir noch einen kurzen Bummel nach Grimma-City gemacht. Ganz nettes Städtchen und hervorragend wieder hergerichtet, wenn man die Hochwasser-Marken an den Gebäuden sieht: Abtauchen zum Einkaufen im Erdgeschoss hieß es dort zur Hochwasserzeit. Dabei ist die Mulde dort doch ein eigentlich ganz beschaulicher Fluss. Nach gemütlichem Kaffee-Trinken auf den Erfolg der Arbeit und ein wenig gemütlichen beisammen Sitzen in der herrlich warmen (um nicht zu sagen verdammt heißen Sonne) haben wir uns dann gegen Abend auf den Heimweg gemacht. Ich muss sagen, es hat auch mal was wenn man nicht selbst fahren muss.

Sonntag haben wir einen Ausflug an den grünen Graben in Pobershau gemacht – die Ecke kenne ich noch recht gut von meinen ersten Urlauben die ich selbst gemacht habe – damals nocht mit dem Mountain-Bike. Der grüne Graben ist einerseits ein Naturdenkmal, zum anderen ein technisches Denkmal – er wurde in den Fels oberhalb des Schwarzenbachtals geschlagen (alles in Handarbeit) und diente dem Antrieb der Pumpen im Bergwerk Pobershau. Das Tal ist herrlich schattig – teilweise lag sogar noch Schnee in den schattigen Ecken.
Abends waren wir noch bei Bea und Jochen zu einem gemütlichen Filme-Abend eingeladen. Ganz nett und unterhaltsam – wir haben uns für jede Menge „schrottige“ Filme entschieden von Mario Brothers über Gladiatress (Ferkelvieh vom Schwein..) haben wir uns dann doch noch gesteigert, hin zum Phantom der Oper. Dazu lecker Essen (ganz herzlichen Dank hier an Jochen für die vorzügliche Bewirtung!). Meiner Freundin sind die wenigen alkolischen Getränke die wir im Laufe des Abends konsumiert haben (in der Hauptsache ein leckeres kühles Bier) – dann doch etwas zu Kopf gestiegen …

Das hatte den negativen Effekt, dass der nächste Tag mit einem tierischen Kater bei ihr einherging. Richtig übel ging es ihr – ich selbst hatte da weniger Problem. Nichtsdesto trotz haben wir dann noch die letzten Einkäufe für den Grillabend zum Feiern in den Mai erledigt – wie üblich an solchen Brückentagen war es rappelvoll im Einkaufszentrum – aber was will man machen.
Den Nachmittag hat meine Freundin dann mit Auskurieren des Katers verbracht – ich habe mich derweil der Herausforderung gestellt bei Bea ein wenig „Aufräumunterstützung“ zu leisten – wie das wohl Neudeutsch hieße – „Tidy-Up-Support-Crew“? Im Prinzip ja alles gewohnte Arbeiten von Geschirrspülen über Badputz bis hin zum Staubsaugen. Ich wünshte manchmal ich hätte auch so jemanden, der mich in der Hinsicht etwas unterstüzt und anschiebt …

Mit etwas Verspätung haben wir dann die Feierlichkeiten zum Tanz in den Mai begonnen – Resi hatte sich derweil wieder vom Kater soweit erholt, dass sie ganz gut mitfeiern konnte – abgesehen vom Genuss alkolischer Getränke … Mit allerhand leckeren Sachen vom Grill und ein paar Bier wurde es denn auch bald dunkel. Da es nicht weit zum offiziellen Mai-Feuer der freiwilligen Feuerwehr auf dem Messeparkplatz war, sind wir auch dort noch vorbei gegangen, aber ingesamt war das eine recht trübe Veranstaltung: Der DJ hatte wohl schon ganz ordentlich einen im Tee, die Musikauswahl war jedenfalls nicht so der Hit – abgesehen von den Eurythmics mit Sweet Dreams war es doch vergleichsweise schlagerlastig.

Kurzerhand haben wir uns auf den Heimweg gemacht, dort die restlichen Getränke in den Rucksack umgepackt und sind dann zum Sterneschauen zur Reichen Zehe hochgelaufen. War dann doch wesentlich schöner als dieser Massenauflauf auf dem Messeparkplatz. Nächstes Mal tragen wir auch noch den Grill da hoch und Grillen dort – so ist zumindest mal der Plan.

Am ersten Mai habe ich dann den Kurzurlaub schön ausklingen lassen und habe meine Freundin kulinarisch verwöhnt – ein drei Gänge Menü mit ummantelten Datteln als Vorspeise, Lachs und grüne Nudeln mit Spinat als Hauptgang und Eis mit warmen Früchten als Dessert. Gut, dass ich in der Marathon Vor- bzw. Nachbereitung mir derzeit keinerlei Gedanken übers Kalorienzählen machen muss…. Das Essen hatte wohl mehr als genug …
Ein kleiner Sparziergang über den Campus zum Verdauen und nochmal an die Frische Luft kommen war dann der Abschluss bevor ich mein rotes „Huschdeguzel“ (Zitat meines LKW-Fahrlehrers) wieder Richtung Mannheim bewegt habe. Wie üblich über Dresden und mit drei Mitfahrern. Die Heimfahrt verlief erstaunlich entspannt und zügig – in 5:30h waren wir in Mannheim (Freitags kann man von solchen Zeiten echt nur träumen).

Dafür hieß es dann heute früh aber auch wieder um 6:00h: Raus aus den Federn – der Urlaub ist vorbei … aber mit der frisch gewonnenen Energie aus dem Urlaub lässt sich auch der Arbeitsalltag wieder deutlich besser bewältigen.

Erlebnis Lauf deutsche Weinstraße

Da hatte ich mir doch selbst ein tolles Geburtstagsgeschenk gemacht – am Geburtstag noch ordentlich futtern ohne Reue, denn am nächsten Tag war ich für den Weinstraßen-Marathon gemeldet.
In der Hand hatte ich den Flyer schon einige Mal auf diversen Laufveranstaltungen – den Ausschlag gab dann Anfang des Jahres meine Lauf-Kollegin Helga aus Nürnberg – sie hatte sich angemeldet um mal in den Raum Mannheim und Umgebung zu kommen. Da konnte ich dann natürlich nicht zurück stecken. Da machte es auch nichts, dass bereits in vier Wochen der Heimat-Marathon in Mannheim stattfindet. Das sollte zur Regeneration reichen.
Helga konnte nun leider verletzungsbedingt nicht teilnehmen – meine Anmeldung hatte ich aber und also gab es auch keinen Grund zu kneifen.

So reihe ich mich am Sonntag um kurz vor zehn in die Startaufstellung am Haus der deutschen Weinstraße in Bockenheim bei Grünstadt ein. Auf der Anfahrt mit dem Shuttlebus vom Parkplatz im Gewerbegebiet an der Autobahn bekommt man einen ersten Eindruck der Strecke – sie läuft teilweise auf der Bundesstraße. Auch warnen mich einige Leute, dass es die Steigungen so verdammt in sich hätten bei dem Lauf, und dass es ab ca. der Hälfte gefühlt nur noch aufwärts geht. Naja das Höhenprofil hatte ich mir ungefähr angeschaut, aber nicht im Detail. Sollte man sich echt angewöhnen. Aber was solls, ich bin auch Ulm ohne große Kenntnis des Profils gelaufen da werden doch die 42km hier auch nicht das Drama werden.

Pünktlich um 10:00h gehts los – zumindest direkt an der Startlinie – bis sich der Pulk endlich in Bewegung setzt dauert es denn doch etwas länger. Ich habe mich bei irgendwo um die 4:00h Zielzeit eingeordnet – alles was drunter ist, ist ok und wenns nicht hinhaut ist das auch kein Drama.
Etwas Sorge bereitet mir noch das Wetter – es ist recht windig und kühl, und die Regenwolken sehen auch nicht gerade vertrauenerweckend aus. Dazu die Berichte von Teilnehmern der Vorgänger-Veranstaltungen: Regen, Hagel, alles schon dagewesen bei diesem Lauf. Kurzzeitig fühle ich mich an die Beschreibung des Amberger Ultra Laufs erinnert…

Aber Schluss mit der Denkerei – die Startlinie ist überquert, jetzt heißt es Laufen. Es geht mit der Masse durch die enge Hauptstraße von Bockenheim und am Ende von Bockenheim die erste nennenswerte Steigung hoch – kurz vor der Kuppe steht auch schon das Schild für Kilometer 2 – noch 40 km – da fühlt man sich doch gleich besser … ich projeziere es innerlich auf die Strecke in Ulm – dort fangen die wahren Freuden erst nach diesem Kilometer so richtig an…

Nun geht es aber erst mal wieder bergab – und nicht so knapp – die Schilder in der Gegenrichtung mahnen: Da musst du nachher auch wieder hoch! Aber so lange es läuft lasse ich es laufen … kurz nach Kilometer drei geht es dann auch wieder bergan durch Asselheim, vorbei an der ersten Versorgungsstelle – aber noch brauche ich nichts. Stattdessen zieht es mich weiter nach Grünstadt – nach der Steigung geht es dort ganz sachte immer bergab – gut zu Laufen, und an der Strecke ist auch reichlich was los. Es geht mitten durch die Fußgänger-Zone. Gelegentlich mal wieder ein wenig aufwärts aber alles nicht der Rede wert. Kurz nach der Autobahnunterquerung suche ich dann doch mal das Dixi-Haus auf – ich hatte es mit der Menge Wasser vor dem Start mal wieder übertrieben. Nach dem Besuch des Tempels der Erleichterung läuft es sich auch gleich etwas entspannter.

Es geht wieder mal hoch – kein Wunder wir laufen ja auch durch die Weinberge. Dieser Begriff wird einem beim Laufen erst so richtig bewusst – in seiner ganzen Schönheit. Langsam aber sicher nähern wir uns der Streckenweiche bei 8,6km – noch fühle ich mich sehr gut ungefähr ein Fünftel der Strecke ist geschafft. Kurz vor der Verzweigung geht es nochmal ein kurzes Stück mit 16% Gefälle hinunter. Gut das wir diesen Teil der Strecke nicht auch wieder hoch müssen. Nach der Abspaltung des Halbmarathons wird es ruhiger – es sind weniger Läufer auf dieser Strecke unterwegs und ich bin froh, dass die Abzweigung so früh kam – jetzt kann ich mich nicht mehr umentscheiden – das spornt mich dann doch etwas an.
In Kleinkarlbach gibt es wieder eine Versorgungsstation, ich greife mir ein Stück Banane und weiter geht es. Das nächste Schild kommt mir komisch vor – als hätte ich gerade 2 Kilometer im Flug überwunden und in einer absoluten Spitzenzeit … bis ich erkenne: Das ist das Schild der Halbmarathon-Strecke, die hier nochmal kurz gemeinsam verläuft (ein Wechsel ist hier logischerweise nicht mehr möglich). Am Ortsausgang geht es scharf rechts: Als erstes nehme ich das Schild für Kilometer 10 wahr (das passt jetzt auch schon eher). Dann sehe ich die Steigung und weiß schlagartig warum der nächste Ort: Bobenheim am Berg heißt. Gut das es nicht heißt auf dem Berg … auch wenn es mir so vorkommt. Die Steigung komme ich aber dennoch recht gut hoch, auch mit dem Hintergedanken: Wenn du oben bist, hast du das Viertel sicher hinter dir. Etwas ärgerlich ist in dem Zusammenhang der weiterhin kalte Wind und die unfreiwillige Dusche von oben – aber es gibt nur eine Richtung: Weiter nach vorn!

Nach Bobenheim geht es weiter zum nächsten entsprechend markierten Ort: Weisenheim am Berg – und es geht immer noch bergan – wenn auch recht flach, aber es macht sich doch langsam bemerkbar. Durch Weisenheim selbst geht es dann wieder etwas bergab – aber auch nur bis zum Ortsausgang – dort geht es dann besagten Berg hoch. Noch kann ich gut laufen, die Zeiten pro Kilometer varieren zwar stark mit dem Höhenprofil, aber irgendwas um die 5 bis 5:45 kommt immer noch raus – damit bin ich doch recht zufrieden. Mit angehmene Gefälle geht es nach Leistadt einen Vorort von Bad-Dürkheim, und auch danach geht es kontinuierlich bergab. Entlang der Bundesstraße geht es über fast 3 Kilometer nur bergab – eine Belastung der besonderen Art. Ich verfluche es etwas, dass ich an der letzten Verpflegungsstelle nicht mehr zugegriffen habe – die drei Kilometer würden sich hervorragend eigenen um etwas Nahrung zu sich zu nehmen und Energiedepots aufzufüllen. Die Zeiten gefallen mir: 4:20 lese ich für einen Kilometer ab – deutlich zu schnell – ich drossle also trotz Schwerkraftantrieb das Tempo etwas.

In ettlichen Kurven geht es durch Bad-Dürkheim – endlich wieder flach und dann auch gleich eine Anhöhe zur Innenstadt hoch. Alles ziemlich eng – ich greife mir eine Flasche Iso-Getränk ab und kippe es in mich rein. Der Rest landet zielsicher in der Flasche am Gürtel. Es geht nun einen große Schleife eigentlich immer eben durch die Landschaft – vorbei am Gradierwerk des Kurparks mit herrlicher Salzluft. Zum tief durchatmen bleibt aber wenig Zeit. Es geht in die Felder entlag der Umgehungstraße – ein Schleife die wohl sein muss, damit man auf die notwendige Kilometerzahl kommt – so richtig ansprechend finde ich die Strecke an dieser Stelle aber nicht. Schon interessanter ist die zwischenzeitlich Versorgungstation – immerhin mehr als die Hälfte habe ich ja schon geschafft – soll jetzt noch der große Hammer kommen von wegen nur noch bergauf … ich werde mich überraschen lassen.

Kurz vor Kilometer 25 ist es dann soweit – es geht wieder etwas aufwärts in Richtung Ungstein. Aber noch ist das alles machbar, auch wenn die Muskulatur nach Entlastung schreit. Richtig heftig wird es nach Ungstein – es geht steil bergan nach Kallstadt – ich stelle um auf Ulmer-Gemsengang – also Steigungen hochgehen. Von den Muskeln her habe ich kein Problem – allein es fehlt irgendwie der Treibstoff, die Energie. Und es will wohl nicht mehr besser werden – nix zu merken von einen Runners-High oder dergleichen. Merke: Doch mehr futtern während dem Laufen und doch mal Gel oder was in der Art einpacken. Die Strecke zieht sich weiter nach Herxheim am Berg – ich gehe die meisten Steigungen hoch, auch wenn ich damit irgendwie ein Einzelgänger bleibe – die anderen haben wohl noch mehr Kraft oder haben es sich besser eingeteilt. Immerhin geht es danach mal wieder sachte bergab und ich jogge wieder, wenn auch langsam. Die Zeiten liegen jenseits von Gut und Böse – 7 Minuten teilweise für einen Kilometer – so habe ich mir das nicht vorgestellt.

Kurz vor Dackenheim: Kilometer 30 ist erreicht. Jetz sind es nur noch 12 km und das ist doch eine Strecke die langsam überschaubar wird. Ich motiviere mich und laufe wieder ein Stück, die Steigung in Dackenheim wird wieder gegangen. Die Steigung vor Kirchheim jogge ich zur Hälfte der Rest wird im Gehen zurück gelegt. Gut, dass ich den angebotenen Riesling-Schwamm nich wahrgenommen habe – ich glaube so eine Portion Riesling wäre jetzt ziemlich übel gekommen. Wenn der auch sicherlich energiehaltig gewesen wäre. In Kirchheim steht dann ein erfreuliches Schild: 33km liegen hinter mir – noch 9 km vor mir – also etwas weniger als meine Hausstrecke – ich überlege wo ich wohl dort gerade wäre und motiviere mich auf diese Art und Weise. Es lässt sich auch wieder recht gut joggen, wenn auch nicht so schnell wie gewünscht. Vor Kilometer 34 haben die Streckenplaner noch ein knackige Steigung gepackt – auch hier muss ich wieder gehen. Ab der Kuppe ist die Strecke dann bekannt – es geht auf der gleichen Trasse zurück wie wir gekommen sind.

Alles was es in Grünstadt so schön bergab ging, geht es nun wieder langsam hoch. Die Gehpausen werden wieder kürzer – auch wenn ich sie noch immer brauche. Vorbei an der Getränkestelle in der Fußgängerzone. Dann geht es nochmal wieder etwas bergab nach Asselheim. Auch durch Asselheim ist alles bergab – an der Versorgungstation dort lasse ich mir nochmal Apfelsaftschorle in meine Trinkflasche füllen. Cola oder sonstige Zuckersuppe wäre mir zwar lieber gewesen aber so muss es der Apfelsaft halt tun. Und schon stehe ich vor der berühmten Asselheimer Wand – die letzte beachtenswerte Steigung vor dem Ziel – hier ist nochmal für einen Kilometer gehen angesagt.

Während ich die Steigung hochkraxle frage ich mich langsam ernsthaft wo meine Familie abgelieben ist, die wollten doch irgendwo auf den letzten fünf Kilometern stehen … aber auch egal – es sind ja noch knappe 3 Kilometer – an Aufgeben will ich jetzt gar nicht mehr denken, auch wenn die Wadenmuskulatur teilweise anfängt zu krampfen – aber ich lasse sie einfach nicht. Endlich hat die Steigung ein Ende – noch zwei Kilometer bis ins Ziel – ich beiße die Zähne zusammen und zwinge mich dann doch noch zu joggen – es geht ja auch nochmal bergab.

Der Ortseingang von Bockenheim kommt in Sichtweite – und mit ihm das Kilometerschild 41 – nur noch einer, auch wenn es durch den Ort nochmal etwas hochgeht, aber das muss jetzt irgendwie auch noch klappen, Wind und Wetter zum Trotz, denn der Wind pfeift recht übel durch die Haupstraße und natürlich direkt von vorne… Kurz vor dem Schild für Kilometer 42 steht auch endlich meine Familie und feuert mich tatkräftig an. Noch etwas mehr als 400m liegen vor mir. Kurz nach dem Schild steht auf der linken Seite der Zeitmesswagen mit laufender Uhr auf dem Dach. Sie zeigt 3:58:37 als ich an ihr vorbei komme. Das heizt mich nochmal richtig an – eine 4 will ich vorne nicht stehen sehen. Also ranhalten auf die letzten hundert Meter. Und Tatsache es reicht noch: 3:59:38 brutto – unter 4h – Ziel erreicht!

Reichlich fertig gehe ich in Richtung Versorgunspunkt – zwichendrin gibt es noch die Medallie um den Hals. Nach kurzer Pause kommt dann auch der Fan-Tross ins Ziel – ich organisiere mir derweil erst mal 3 alkoholfreie Weizen und ne Portion Apfelsaft. Nach etwas Pause geht es dann zum Versorgungsbereich – auf dem Weg kann ich noch Gunther Mair, einem meiner Kollegen gratulieren – gerade durchs Ziel gekommen. Ich habe allerdings jetzt andere Ziele: Massage und Dusche heißen die. Die Massage nach dem Lauf ist doch echt eine klasse Erfindung – ich kann mich richtig dabei entspannen. Hinterher geht es noch an der Ausgabe für die privaten Sachen und dann nix wie unter die warme Dusche. Meine Schwester wartet so lange, die Eltern wandern zurück zu ihrem Auto – knapp 4km (also Kurzstrecke ;-)). Meine Schwester begleitet mich zu meinem Auto, denn so richtig fahrtauglich fühle ich mich noch nicht wieder.

Die Fahrt mit dem Shuttlebus ist ob der gesperrten Strecke doch etwas abenteuerlich – einmal quer durch die Pampa bis man endlich wieder am Baumarkt-Parkplatz ankommt. Mit dem eigenen Auto geht es dann weiter in Richtung Bad Dürkheim – ich muss noch die Feier für meinen Geburtstag nachholen, da meine Eltern am Vorabend noch andere Verpflichtungen hatten. Im Nachhinein muss ich sagen: Verdammt wellig dieses Streckenprofil – meine Schwester staunt auch nicht schlecht was ich da hoch und runter bin.
Das Essen darf diesmal richtig kalorien haltig sein – es gibt ein Pfälzer Trio (oder auch als Pfälzer Teller bekannt): Leberknödel, Saumagen, Bratwurst und Sauerkraut dazu. Zum Dessert einen flambierten süßen Flammkuchen mit Apfel-Zimt-Belag (lecker!).

Mittlerweile ist der Muskelkater schon wieder so gut wie weg. Ich bin am Überlegen ob ich mir den Lauf in zwei Jahren nicht doch nochmal antue – wenn man das Profil schon kennt, kann man sich besser drauf einstellen. Man wird sehen. Jetzt ist der Blick erst mal auf den kommenden MLP-Marathon in vier Wochen gerichtet. Ich hoffe Helga hat in zwei Jahren auch die Möglichkeit an diesem schönen Erlebnis-Lauf teilzunehmen.

MySQL InnoDB und das Ende der Welt

Wer erinnert sich noch an den Hype um das Jahr 2000-Problem – sicherlich einige. Mittlerweile schreiben wir das Jahr 2012 und alles scheint in bester Ordnung. Scheint – die Realität sieht manchmal leider etwas anders aus.

Alles beginnt mit ganz harmlosen Sympthomen: Ein Mitarbeiter meldet sich bei mir, er könne in der von mir betreuten Datenbank keine weiteren Datensätze anlegen. Die Fehlermeldung besagt, dass eine Schlüsselverletzung vorliegt.

Erster Ansatz: Nachschauen wo man mal wieder etwas zu restriktiv im Datenmodell oder irgendwo etwas zu simpel im Code gearbeitet hat. Aber leider: Fehlanzeige – nichts offensichtliches zu entdecken.

Nächster Versuch: Man füge einen Datensatz direkt auf SQL-Ebene ein – wichtig dabei, man halte sich so weit wie möglich an das Original beim Einfügen. Also lässt man ganz bewusst das Feld für den Primär-Schlüssel leer – steht ja auf auto_increment und damit meint man macht MySQL doch in der Regel keine Zicken.

Aber: Holla! Was ist denn das? MySQL weigert sich den Datensatz einzufügen, angeblich wegen einer Verletzung des Primär-Schlüssels!

Ein wenig Recherche später findet man dann denn auch die Ursache: Der Zahlenbereich des verwendeten Zahlentyps war am Ende. Nun dachte ich eigentlich, dass MySQL dann hergehen würde und sich irgendwie die nächstbeste freie Zahl nimmt – von mir aus ja auch negativ – ist ja kein Drama. Platz war definitiv noch – denn auch wenn in der Tabelle rund 150.000 Datensätze gespeichert waren, so ist das noch immer deutlich kleiner als die 2147483647 möglichen positiven IDs die ein 32 Bit signed Integer in MySQL zur Verfügung stellt (doppelt so viele nochmal wenn man die negativen Zahlen mitberücksichtigt).

Hotfix in dieser Situation war eigentlich recht einfach: von allen vorhandenen IDs eine möglichst große Zahl abziehen, unter Berücksichtigung der Einschränkung, dass keine Id auf den Spezialwert 0 fallen darf. Einfacher gesagt denn getan – die Tabelle repräsentiert nämlich eigentlich eine Baumstruktur mit einem Verweis auf den Vater der jeweiligen Zeile. Da kommt MySQL mit dem Update leider nicht klar, denn aufgrund der fehlenden Bedingung schnappt sich MySQL einfach einen Lock auf die gesamte Tabelle … und sperrt sich damit für ein on Update Cascade selbst aus 😐
Also doch die etwas härtere Tour:

  1. interne Schlüsselbeschränkung aufheben
  2. Immer gleichzeitig die ID und den Vater-Verweis um die gefundene Zahl dekrementieren (da von allen Werten ein konstanter Wert abgezogen wird entstehen wiederum gültige und konsistente Datensätze
  3. Vaterbeziehung wieder mit einem Schlüssel versehen

Warum so umständlich? – Auto-Increment-Rücksetzen funktioniert mit InnoDB als Engine nicht, siehe auch weiter unten. Fremdschlüssel generell abschalten wäre auch keine Maßnahme gewesen, denn die externen Referenzen haben ja ein „on update cascade“ – das erspart die langwierige Nacharbeit an x anderen Tabellen in der Datenbank.
Somit kann jetzt wenigstens erst mal wieder gearbeitet werden – die Arbeit für den Entwickler fängt aber jetzt erst richtig an…
Eine andere Alternative wäre die Vergrößerung des Schlüsselbereichs z.B. auf Bigint gewesen oder evtl. auch nur die Verwendung nicht-negativer Zahlen. Leider nicht ganz so einfach möglich, da die Tabelle an verschiedenen Stellen in der Datenbank referenziert wird und natürlich auch die referenzierenden Schlüsselwerte im Datentyp identisch sein müssen. Das wäre auf die Schnelle auch nicht so trivial gewesen.

Zeit für etwas Ursachenforschung – wie man so schön sagt: Lessons learned. Wie Allgemein üblich handelt es sich bei diesem Fehler nicht um eine singuläre Fehlerquelle sondern das Zusammenspiel mehrere Umstände.
Erste Fragestellung: Warum waren die ID-Werte überhaupt so ins Kraut geschossen?
Hierfür gibt es mehrere Gründe – einer ist die historische Wurzel der Datensätze: Diese stammten aus einer Access-Tabelle mit Replikaten. Hierbei setzt Access den Primärschlüssel nicht mehr auf auto_increment (monoton ansteigend wie sich das gehört) sondern auf Random – und da kommen dann recht fix große und auch negative Zahlen bei raus. Die hatte ich natürlich einfach übernommen.
Nächstest Problem: In der Tabelle fanden in letzter Zeit größere Mengen an Transaktionen statt: Die Tabelle wird teilweise aus einer anderen Tabelle gespeist, dabei werden die Datensätze automatisch generiert. Dieses Tool musste aufgrund von Fehlern mehrfach laufen und hatte teilweise dabei auch größere Mengen Einträge produziert – rund 600.000 an der Zahl bevor der Fehler auffiel und beseitigt werden konnte. Somit war man schon bedrohlich nahe ans Limit heran gekommen.
Soweit zur suboptimalen Verwendung der vorhandenen Schlüsselzahl – aber das war ja nicht alleine ausschlaggebend, immerhin könnte man ja erwarten, dass ein ausgewachsenes Datenbank-System sich selbständig um die Behebung des Notstandes: „Keine Schlüssel mehr da“ kümmert. Zumindest sollte man das annehmen. Nun kommen auch hier einige kleinere Probleme zusammen, die dann gemeinsam für den großen Ärger sorgen. Als Grundlage verwendet MySQL zwei verschiedene Datenbank-Engines – MyIsam als klassische Tabellenform, leider kann diese nicht mit Fremdschlüsseln umgehen. Daher gibt es InnoDB als neueren Standard. Diese hat zwar nicht die Performance in Sachen Volltext-Suche, kann dafür aber von Hause aus bereits mit Fremdschlüsseln umgehen. In der aktuellen Entwicklung ein unumgängliches Feature, das kaum ein Datenbankentwickler heute noch missen möchte.
Der Berechnungsalgorithmus für die nächste ID in InnoDB ist recht simpel gestrickt: Die nächste zu verwendende ID berechnet sich stets als max(id)+1 – was in MySQL bei Integer-Werten mit 32 Bit zu einem Fehler führt (erst ab Version 5.5) – der dann durch die Ebenen der Datenbank-Engine nach oben wandert und dort schließlich zum bekannten Fehler führt – leider ist der Hinweis duplicate key for primary da nicht sonderlich hilfreich um gleich die Ursache zu erkennen. Dieser Algorithmus wird auch angestoßen, wenn man den Auto-Increment-Zähler manuell versucht zurück zu setzen, oder bei einem Server-Neustart. Simple Lösungen mag ich ja eigentlich, aber so simpel hätte es in dem Fall doch nicht sein müssen.
Interessanterweise ist der Fehlerfall ja sogar in der Dokumentation beschrieben (siehe hier:) – netter Nebeneffekt: Wenn man als Datentyp BigInt (also 64 Bit-Zahlen) verwendet, dann klappt es auch mit dem Wrap-Around am Ende des Zahlenbereichs, es wird dann wieder bei 1 bzw. im negativen Bereich weiter gezählt. Warum habe ich noch nicht ergründen können, ich vermute mal, dass InnoDB intern schon mit 64 Bit arbeitet.

Kommen wir zu den Lehren für weitere Projkete oder auch nur die Neuanlage neuer Tabellen:

  1. An InnoDB führt kein Weg vorbei wenn Fremmdschlüssel im Spiel sind, und Fremdschlüsselmechanismen sind generell begrüßenswert
  2. Beim Import von Alt-Daten wenn es möglich ist, deren ID-Werte verwerfen und neue vergeben (leider nicht immer ohne größeren Aufwand möglich)
  3. Wenn sinnvoll möglich BigInt als Datentyp für die ID-Spalte verwenden, das schafft Luft und es klappt auch mit dem Überlauf richtig
  4. Für den Fall der Fälle Mittel in Bereitschaft haben, um das Problem durch „Renumerierung“ lösen zu können (nicht immer hat man die Zahlen in einem bestimmten Bereich liegen so wie in diesem glücklichen Fall).

Weitere Kommentare herzlich willkommen.

Lehrgang FüS UFü (H91) in Hoya

Kurzfristig ergab sich für mich die Möglichkeit zur Fortbildung im THW. Thema diesmal Führungssystem für Unterführer – erster Teil eines zweigeteilten Lehrgangs. Da ich ja mittlerweile einen Truppführerposten übernommen habe, war es nur noch eine Frage der Zeit bis dieser Lehrgang fällig würde.

Auf dem Lehrplan standen unter anderem die Kernbereiche Ausbildung und Führung. Während Ausbildung für mich als ehemaligen Jugendbetreuer doch ein alter Hut ist, war in Sachen Führung doch einiges an Neuland dabei. Nichts was ich nicht schon mal grundlegend gehört gehabt hätte, aber jetzt ist es doch mal ganz gut alles im Zusammenhang zu kennen.

Höhepunkt in Sachen eigner Ausbildung war sicherlich die Erkundungsübung nach einem angenommen Unfall in Hoya. Dies hat den doch sehr stark theorielastigen Lehrgang deutlich aufgelockert.

Donnerstag stand dann die Prüfung samt sogenannter Lehrprobe an – mit ein wenig Vorbereitung war die Prüfung aber ohne weiteres machbar. Auch wenn man sich jeden Abend noch der Kameradschaftspflege im Treffpunkt gewidmet hat. Wie immer: Alles mit Maß und Ziel und Abwägung – dann klappt es alles.

Die Lehrprobe war mich schon fast kalter Kaffee – ich habe es vielmehr als Möglichkeit warhgenommen mal wieder einen Vortrag zu halten und dabei etwas zu Üben und zu experimentieren. Das Thema war frei wählbar – ich habe mich dann der Berichterstattung auf Websites und die zugehörigen Bilder angenommen. 20 Minuten – einige Leute empfanden das als echte Herrausforderung – für mich eher weniger – denn wer einen ganzen Tag mit praktischer Ausbildung für einen Sack Flöhe (aka Jugendgruppe) regelmäßig erfolgreich gestaltet hat für den sind erwachsene Zuhörer und eine kurze Zeitspanne ja schon fast Erholung.

Erholung war der Lehrgang für mich auch in anderer Hinsicht, wenn auch nicht in der Entspanntheit wie ich mir das gewünscht hätte. Eine vollständige Loslösung von meiner Arbeit war nicht möglich. Noch auf der Hinfahrt habe ich just-in-time eine neue Funktionalität für das Datenbanksystem eingebaut. Alles andere als erfreulich, aber manchmal geht es nicht anders.

Das ich dann auch noch während des Lehrgangs abends Bugs nachverfolgen musste und diverse e-mails aufgelaufen sind, war so nicht geplant und hat mich doch etwas unter Stress gesetzt. Den hätte ich nicht unbedingt noch gebraucht. Auch wenn ich den Lernaufwand für absolut überschaubar halte. Die Prüfung war absolut im Rahmen, da bin ich anderes gewohnt, wohl auch eine der Nachwirkungen aus der Uni und FH-Zeit.

Entpsannung habe ich mir dann aber auch verschafft und bin duch die herrliche Landschaft gejoggt. Leider ist die Vielfalt der Wege etwas eingeschränkt, vor allem sieht man gleich zu Beginn wo man am Ende sein will. Die Gegend ist einfach nur flach – von ein paar Einschränkungen der Weitsicht durch Bäume/Sträucher etc. mal abgesehen. Wer jetzt denkt das ist alles locker flockig zu Laufen, der hat die Rechnung ohne den Wind gemacht. Auf dem Hinweg habe ich mich noch ein wenig gewundert, warum alles so locker flockig läuft und ich so zügig unterwegs bin. Der Rückweg war denn um so anstrengender – was ich sonst an Steigungen übe, übt man im Flachland einfach gegen den Wind. Man ist sogar richtig froh um jedes Bisschen Bewuchs rechts und links der Wege – Wahnsinn wie viel Wind das doch abhält.

Insgesamt ein sehr guter Lehrgang und eine interessante Woche, auch wegen der Erfahrungsaustausches mit anderen Helfern.

Posted in THW |

Die Sache mit dem richtigen Fokus

Der menschliche Organismus ist schon ein Wunderwerk – man kann es kaum anders ausdrücken. Im Zusammenspiel der Augen und dem Gehirn ermöglicht es uns in aller Regel einen großen Bereich der Wahrnehmung abzudecken. Sei es ein Panorama, ein Ausblick über eine große Fläche bei dem wir weniger auf Details achten sondern das Gesamtbild auf uns wirken lassen, oder das genaue Gegenteil: Der stark eingeschränkte Blick auf einen sehr kleinen Bereich, die Betrachtung eines winzigen Details um es bis ins Letzte zu erfassen und zu verstehen. Der Sehaparat leistet hierbei ganze Arbeit aber auch die Aufbereitung der Information im Hirn ist hochgradig spezialisiert. Mit dem Heranwachsen entwickeln wir die Fähigkeit unwichtige Dinge auszublenden, uns auf das Wesentlich zu konzentrieren – ganz egal ob Weitwinkel oder Tele-Einstellung – unser Hirn blendet unwichtige Dinge aus die wir derzeit nicht dringend benötigen. Wir nehmen sie nicht in voller Intensität war. Und das ist auch gut so, andernfalls würden wir irgendwann vor lauter Reizen erschlagen werden. Wer beispielsweise mit dem Auto unterwegs ist, kennt den Effekt sicherlich: Noch eben plaudert man gemütlich mit den Mitfahrern, der Verkehr fliest gemütlich vor sich hin. Aber dann kommt etwas, dass diese Ruhe stört – sofortiges und richtiges Handeln ist gefordert – beispielsweise weil man vor sich plötzlich ein Stauende hat. Mit einem Mal ist der Fokus voll auf der Straße, die ganze Konzentration steht zur Aufnahme der wichtigen Infos zur Verfügung – alles ander wird beiseite geschoben.

Auch im Geschäftsleben haben wir ständig mit einem Wechsel des Fokus zu tun – auf der einen Seite dürfen Details nicht übersehen werden, auf der anderen Seite gilt es den Überblick nicht zu verlieren. Besonders augenfällig wird die Problematik, wenn man Software entwickeln soll, die das Zusammenspiel mehrer Menschen ermöglichen oder vereinfachen soll. Auch hier gibt es zwei konträre Skalen-Enden: An einem Ende die Erfassung der Details des Facharbeiters mit allen Informationen bis hin zur letzten Schraube. Am anderen Ende die Verwaltung, bzw. neudeutsch das Management. Dort sollte es nicht auf die einzelne Schraube ankommen – wichtiger ist hier die Frage: Sind genügend Schrauben vorhanden, damit alle Arbeiten erledigt werden können?

Als Programmierer steht man somit vor einem Dilemma: Richtig recht machen kann man es auf Anhieb sowieso niemandem.
Die Lösung heißt in diesem Fall: spezialisierte Ansichten für jeden Anwender schaffen. Dies wird im Englischen gerne zusammenfassend beschrieben als „Overview first, zoom and filter, detail on demand“. Auf deutsch: Beginne mit einem groben Überblick und lasse den Benutzer entscheiden wie er weiter vorgehen möchte. Filtern hat hier nicht zwingned die Bedeutung der Anwendung eines regelbasierten Filters (auch wenn es dem Programmierer oftmals das Leben um ein Vielfaches leichter machen würde). Welche Auswahl ein Benutzer trifft ist eine sehr komplexe Sache, die sich nicht immer zur vollsten Zufriedenheit aller Beteiligten lösen lässt. Das man Details nur anschaut, wenn man sie auch wirklich braucht ist dann ja nur eine logische Konsequenz.

Soweit die Theorie, es folgt die Praxis. In meiner doch recht umfangreichen Erfahrung mit dem Design im Web habe ich Tabellen für den Überblick schätzen gelernt. GGf muss man diese auf mehrere Seiten zerlegen, damit die Ladezeit sich in Grenzen hält und der Benutzer nicht erschlagen wird. Problematisch wird es insbesondere bei der Datenverwaltung, wenn die Anzahl der Datensätze trotz eines möglicherweise gesetzten Filters zu groß wird als dass man sie vollständig erfassen und verstehen kann. Ich rede hierbei explizit von den gerade aktuell notwendigen Daten, dass Archive stark angefüllte Gebilde sein können ist mir bewusst, aber hier kann man ja noch recht gut über die Zeitschiene arbeiten. Bei einer Liste aktuell zu erledigender Aufgaben geht das nunmal nicht, allenfalls lässt sich über eine Priorität nachdenken. Zusammenfassen zu Gruppen ist eine weitere Alternative, allerdings ist diese nicht immer anwendbar. Programmseitig lässt sich vieles davon ohne größere Verenkungen umsetzen.

Richtig problematisch wird es allerdings wenn die Daten aus dem betreffenden Projekt zu umfangreich werden – die Software es dann aber richten soll. Wenn ich mehr als 50 Probleme in einer Liste stehen habe, die alle höchste Priorität haben, dann muss ich mich fragen ob es wirklich ein Software-Problem ist wenn der Überblick verloren geht. Ich sage ja auch immer: Eine Software löst keine Probleme im Allgemeinen. Eine Software kann nur unterstützen, oder sehr sehr spezialisierte Aufgaben übernehemen. Diese Aufgaben müssen sich aber auch in Code gießen lassen. Geht es beispielsweise um eine statische Berechnung, so kann man eine Software erstellen, die anhand der Geometrie, der verwendeten Materialien und einigen anderen Randbedingungen wie Temperatur mögliche Schwachstellen berechnet. Die Software kann dann nicht die Schwachstellen beseitigen, darüber muss man sich immer im Klaren sein.

Noch eine Stufe problematischer, und das erlebe ich derzeit leider mal wieder, ist es wenn die Filterung bzw. der eingangs erwähnte Focus auf die richtige „Ebene“ nicht vorhanden ist. Eine Vorgänger-Software zeigte beispielsweise immer alle Ergebnisse immer vollständig an – eines pro Seite zum „Blättern“ (Access verleitet dazu solche Konstrukte zu bauen) – Ergebnis: Man verlor ggf. auch bei gefilterten Ergebnissen den Überblick. Gerade den braucht man aber, wenn man fundierte Entscheidungen auf der Management-Ebene treffen möchte. Gerade das ist ja die Aufgabe eines Vorgesetzten: Er hat nichts anderes zu tun, als dafür Sorge zu tragen, dass die unterstellten Mitarbeiter möglichst effizient arbeiten können. Ich verlange hier jetzt bewusst nicht das alte Bild vom Vorgesetzen der nur nebendran steht und zusieht wie seine Mitarbeiter sich abquälen. Ein guter Vorgesetzer weiß wann es sinnvoll ist, auch mal eben selbst mit anzupacken und sich ggf. auch mal die Finger schmutzig zu machen. Aber es darf kein Dauerzustand sein.

Als Software-Entwickler endgültig gekniffen ist man dann, wenn es heißt: Wir wollen das weiterhin so haben, nur besser. Was macht man da? Ich habe noch keine richtige Antwort darauf gefunden. Klar kann man hergehen und es alles etwas aufhübschen und auf den neusten Stand der Technik heben – aber das löst die Problematik einer schlecht gestalteten Software eben nicht. Genausowenig wie das 1:1 umsetzen einer Datenbank auf einen neuen Unterbau sinnvoll ist um die Funktion zu erweitern oder die Performance zu steigern. Leistungsfähige Hardware kann sicherlich etwas bringen, genauso wie gute Datenbank-Server oder andere Infrastruktur, aber all das verpufft im Nichts, wenn die Datenstrukturen unterhalb nicht stimmig sind oder das Modell an allen Ecken und Enden nicht mit der Realität überein stimmt. Leider sind solche Probleme gerade gegenüber Vorgesetzten sehr schwer zu erläutern und zu rechtfertigen.
Auch da fehlt es in meinen Augen mal wieder an der richtigen Einstellung des Focus.

Es ist nicht immer einfach die richtige Einstellung des Focus zu finden, jeder der Bilder gestaltet kennt das Problem. Aber mit ein wenig Übung und Sorgfalt und vor allem der regelmäßigen Kontrolle kann es doch recht gut in den Griff bekommen. Dazu gehören unter anderem Fragen wie: Ist diese Aufgabe bei mir richtig angesiedelt? Sollte ich sie an einen Fachmann deligieren? Gehört das wirklich auf meine Ebene, in meinen Aufgabenbereich? Dann klappt es auch mit der Verwendung von Software und dieses Werkzeug entfaltet dann auch seine Wirkung.

Lauf in Groß-Gerau (Fastnachtslauf)

Die Laufsaison läuft seit etwas anderthalb Monaten, eigentlich Zeit für einen kleinen Test wie es um die eigene Fitness steht – auch im Hinblick auf die weiteren Marathonvorbereitungen. Aber so richtig bin ich nicht in die Pötte gekommen mit der Planung für einen Lauf.
Am Freitag hatte ich dann mal bei unserem Trainer im Verein angefragt, ob er mir mal einen Trainingsplan zusammenstellen kann. Dazu brauchte er allerdings eine Angabe über den letzten Wettkampf, vorzugsweise etwas über 10km. Mein letzter Wettkampf war im November, LGA-Indoor-Marathon – die Zeiten von dort kann man aufgrund der Streckencharakteristik nicht gut vergleichen und als Grundlage heran ziehen. Außerdem ist das ja auch schon wieder einige Zeit her.

Ich wusste, dass es in Groß-Gerau (ca. 50km von Mannheim) einen Lauf immer am Fastnachtsamstag gibt, an dem hatte ich sogar schon einmal teilgenommen – das war 2008. Also nach dem Training mal nachgeschaut: Ja findet statt, Start um 15:00h und 7 EUR Nachmeldegebühr. Insgesamt ein sehr humanes Angebot, aber es sind ja auch nur 10km – in Erinnerung hatte ich komischerweise 12km, aber das dürfte die Erinnerung an den Dreikönigslauf in Kersbach gewesen sein.
Immerhin lässt mir das ja doch einige Stunden mehr Zeit zur Regeneration als ich gedacht hatte – ich hatte schon befürchtet, dass der Lauf sehr früh um 9:00h startet – also ca. 12h nach der letzten Trainingseinheit.

Samstag, das Wetter grau in grau, anfänglich sogar noch mit etwas Nieselregen garniert. Eigentlich absolut kein Laufwetter, aber egal ich mache mich dennoch auf den Weg nach Groß Gerau. Das Wetter wird etwas besser, allerdings auch windiger und somit etwas kühler 6°C lese ich ab als ich auf dem schon rappelvollen Parkplatz 45 Minuten vor dem Start eintreffe. Umziehen, Nachmeldebogen ausfüllen, Startnummer anheften und noch ca. 15 Minuten aufwärmen. Etwas was ich bisher bei Wettkämpfen eher vernachlässigt habe – aber man ist ja lernfähig.
Angesichts des Windes laufe ich mit Jacke und Handschuhen – auch darunter lange Funktionskleidung. Das Starterfeld ist auch bunt gemischt – teilweise in kurzen Hosen (mir wird schon bei dem Gedanken kalt) aber auch passende Bekleidung für die 5. Jahreszeit ist vertreten. Gefühlt ordne ich mich doch recht weit vorne in die Reihen der Starter ein – ob es gut geht weiß ich noch nicht, aber ich bin gewillt das ausgegbene Ziel von 5 min/km oder weniger anzugehen. Im Training tue ich mir da immer sehr schwer, da ich keine GPS-Uhr mit mir herum trage sondern nur einen Pulsmesser (der macht dafür auch klaglos so Dinge wie Ulm mit ohne das die Batterie irgendwann aufgibt). Aber im Wettkampf stehen ja alle Kilometer angeschrieben.

Die Strecke an sich bietet keinerlei besondere Highlights, sie ist bis auf wenige Stellen topfeben, und geht in langen Geraden durch den Wald – fast wie ich sie aus meinen Anfangszeiten in Nürnberg kenne. Pünkltich um 15:00h knallt der Startschuss und der Pulk setzt sich in Bewegung. Nach etwa 10 Sekunden bin auch ich endlich über die Startlinie gelaufen. Es beginnt das übliche Sortieren des Feldes auf den ersten Kilometern. Ich überhole jede Menge Läufer, mal links mal rechts, wo es der Weg eben gerade hergibt. Die Strecke bis zum ersten Kilometer fühlt sich elend lang an – aber ich bin recht flott unterwegs – die Stoppuhr zeigt 4:18 – also doch recht flott – aber ich merke es auch, so weiter wird wohl nicht ganz drin sein, auch wenn ich mir das wünschen würde. Ich zwinge mich dazu mein ständiges Überholen etwas zu reduzieren – das Feld hat sich etwas gelichtet aber es ist immer noch recht dicht. Es folgt die Abzweigung auf die Schleife, eine Gerade die sich knapp 3 km wie mit dem Lineal gezogen durch den Wald zieht. Dabei zieht sich das Feld immer weiter auseinander – ich versuche mich etwas im Zaum zu halten und reihe mich bei hinter einem etwa gleich schnellen Läufer ein. 4:25, 4:27, 4:34 – ich werde also langsamer, aber innerlich fühle ich mich langsam besser – es ist nicht mehr kühl um die Zehen und auch die Handschuhe habe ich zwischenzeitlich in der Jacke verpackt. Außerdem zwischendrin schon mal vorsorglich einen Schluck aus der Flasche genommen – auch wenn andere meinen 10km könne man ohne irgendwas machen – wenn ich Durst habe laufe ich schlechter, also rein mit dem Apfelschorle, und wenn es nur ist um den Mund zu befeuchten.

Mit dem Passieren des 4km Schilds kommt auch die nächste Kurve in Sicht – fast die Hälfte habe ich geschafft motiviere ich mich, während es durch die Lagerstätte der örtlichen Försterei geht – dort liegt derzeit jede Menge Holz fein säuberlich aufgereiht auf den Wiesen rechts und links des Weges – eine interessante Kulisse. Kurz danach geht am 5km Schild vorbei, wieder 4:34 – das scheint mein Los für diesen Lauf zu sein. Wenige Meter nach dem Schild geht es um die nächste Kurve, man ist also jetzt auch psychologisch auf „Heimweg“ eingestellt. Auf dem folgenden Streckenabschnitt gibt es immerhin einige leichte Kurven, damit ist die Strecke etwas kurzweiliger und die Kilometer kommen mir kürzer vor. zudem geht es ganz leicht bergan – ich merke an dieser Stelle doch einige Muskeln die sich für das Training am Vorabend rächen. Aber die werden jetzt einfach ingnoriert. Eine rechts-links Kombination folgt, und direkt nach derersten Kurve steht auch schon das 6km Schild. Noch 4 Kilometer, Ankommen ist auf alle Fälle drin, nur die Zeit noch nicht ganz sicher. Wahrscheinlich aufgrund der langezogenen Abwärtsphase des letzten Kilometers bin ich wieder schneller geworden 4:32 meldet die Uhr.

Ich motiviere mich weiter, mahne mich allerdings auch wieder zu etwas mehr Disziplin – jetzt nur nicht reintreiben lassen, sonst gibt es am Ende ein böses Erwachen. Mit einer Läuferin liefere ich mir fast den gesamten Kilometer ein zähes Ringen, wir bewegen uns scheinbar ewig auf gleicher Höhe, wann ich immer ich etwas Gas gebe zieht sie auch an, ebenso natürlich umgekehrt. Dazu kommt teilweise ein ekelhafter Wind an den Lichtungen: Schräg von vorne – da heißt es zusätzlich nochmal Kraft aufbringen. Dafür fliegt der Kilometer 7 schon fast an mir vorbei – 4:31 laut Uhr, also nochmal schneller geworden. Das Feld ist an meiner Stelle doch schon sehr weit auseinander gezogen – ich habe gute 20 m bis zum Vordermann und hinter mir ist auch eine größere Lücke. Nahc der nächsten Kurve taucht auch schon das 8km Schild auf – trotz allem Apell an die Vernunft ich bin wieder schneller geworden, das muss der Stallgeruch des Ziels sein, der mich da antreibt: 4:28.

Noch zwei Kilometer, kurz nach dem Kilometerschild 8 verläuft die Strecke wieder auf der gleichen Trasse wie zu Beginn, nur eben in die andere Richtung. Ich versuche bewusst die Geschwindigkeit konstant zu halten, um noch etwas Luft zum Beschleunigen zu haben – nochmal ein Zug aus der Getränkeflasche und dann kommt auch schon der Kilometer 9 in Sicht – 4:30 also doch etwas langsamer geworden – heißt im Gegenzug: Für den letzten muss ich noch etwas Gas geben. Leider fehlt es gerade an Läufern, an die man sich „heransaugen“ könnte – Stück für Stück komme ich doch einigen näher, aber auf der Zielgeraden sind doch ettliche Meter Abstand zur Läuferin vor mir – noch dazu bremst sie im Zielkanal völlig abprupt ab, so dass ich fast mit vollem Schwung des Endspurts in sie reinrausche … vor allem vergesse ich meine Stoppuhr zu betätigen – es dürften aber auch wieder etwas um die 4:25 rum gewesen sein.

Am Ende sind es 44:58,8 die ich für die 10km benötigt habe, also deutlich unter der Vorgabe der 5 min/km. Von daher bin ich ja mal ganz zufrieden mit dem Lauf. Im Nachinein muss ich feststellen – gegenüber 2008 waren es nur knapp 38 Sekunden weniger. Aber immerhin schneller. Nur bei der Platzierung bin ich diesmal schlechter – was wohl auch daran liegt, dass dieses Jahr mehr Teilnehmer dabei sind – und vor allem deutlich mehr in meiner Altersklasse – gesamt Platz 181 und in der Altersklasse im hinteren Drittel auf Platz 32 bei insgesamt 430 Teilnehmern (davon 39 in meiner AK). Zum Vergleich 2008: Platz 161 gesamt, 14. in der AK, 386 Teilnehmer und 32 meiner Altersklasse. Damit werde ich wohl leben müssen – die Traumzeiten meiner Altersklasse werde ich wohl nicht mehr erreichen: 32:15,3 dieses Jahr und damit auch der Gesamtsieger – und das ist noch nicht mal Streckenrekord. Da müsste ich wohl wirklich meinen Trainingsplan ganz gehörig umstellen und noch mehr Einheiten machen um auf solche Zeiten zu kommen. Die Grenzen zwischen Freude am Sport und Quälerei sind ja bekanntlich fließend.

Die Siegerehrung findet in der Turnhalle in Groß-Gerau statt, das ist leider etwas weiter weg vom Start und Ziel – was sich auch in der Teilnehmerzahl dort und den Ehrungen bemerkbar macht. Es dauert relativ lange bis es endlich losgeht und auch die Startnummern-Tombola bringt mir diesmal nichts. Aber auch egal – das Kuchenbuffet sorgt auf alle Fälle für den zeitnahen Kalorien-Ausgleich. Auch hier merkt man wieder, dass die Veranstaltung ehrenamtlich organisiert wird – die Preise sind mehr als im Rahmen – 1 EUR für ein Stück Kuchen, 50 Cent für eine Tasse Kaffee – da kann man echt nicht meckern. Ich denke mal ich nehme den Lauf in den Plan für kommendes Jahr auf – auch wieder als Test für die Fitness – mal sehen ob nicht doch noch ein paar Sekunden rauszuholen sind.

Die unbeschreibliche Macht des Doppelklick

Da bekomme ich mal wieder eine Nachricht: Da funktioniert was nicht richtig, kannst du mal helfen …
Klar kann ich das in aller Regel – ist ja mein Job, und in dem Fall auch noch meine Software.

Wie in so vielen Fällen (ja auch meine Software hat mal den ein oder anderen Fehler, ich bin auch nur ein Mensch), liegt das Problem aber nicht bei meiner Programmierung sondern sitzt ca. 80cm vor dem Bildschirm. Genauer gesagt liegt das Problem rund 60cm neben selbigem. Die Rede ist von nichts anderem als einem Zeigerät – wahlweise als Maus, Nager, Ratte, Trackball oder Touchpad zu bezeichnen.

Die Verwendung ist denkbar einfach: Aufgrund von Bewegungen des Geräts (oder entsprechenden Sensoren bei Touchpads und Trackballs) kann man den Mauszeiger über den Bildschirm bewegen. Für die Leute die es sich nicht vorstellen können: Es gab auch eine Zeit, da bediente man Rechner nicht über eine graphische Oberfläche oder musste diese gar von Hand erst starten. Auch heute ist solches Wissen oftmals Gold wert. Wer regelmäßig im Remote-Bereich arbeitet weiß wie mächtig die angeblich so dröge Kommandozeile sein kann (egal für welches Betriebssystem) – nur erfordert sie deutlich mehr Wissen und Mitdenken des Benutzers. Das will man nicht immer, gerade wenn man für andere Arbeiten den Kopf frei haben möchte.

Aber zurück zum eigentliche Problem, bzw. dessen genauerer Eingrenzung: Während die Interaktion des Mauszeigers mit der Bewegung der Hand für die allermeisten Benutzer recht zügig zu erlernen und intuitiv verstanden wird (wenn nicht gerade jemand die Auswertung von X und Y-Koordinate vertauscht hat – ein großer Spaß um Kollegen zu verwirren), ist die nächste Ebene der Interaktion schon deutlich komplexer: Es geht um die Tasten die auf dem Gerät vorhanden sind. Die aktuellen Ausführungen bestehend zumeist aus drei Tasten:
[list]
[*]links
[*]rechts
[*]Mitte (oftmals als Rad ausgeführt)
[/list]
Das Mausrad als eine eigentlich recht späte Entwicklungsphase des PC-Nagers (eingeführt von Microsoft mit der IntelliMouse im Jahr 1996), häufig ist er mit der praktischen Funktion verknüpft durch den aktuellen Bildinhalt zu scrollen (je nach Ausführung sogar waagrecht, in aller Regel jedoch nur vertikal) – diese Funktionalität hatte man früher auf der Tastatur mit den Pfeiltasten – auch heute funktioniert das noch erstaunlich gut. Eigentlich eine sehr komplexe Funktion, dennoch wird sie intuitiv meist richtig angewandt.

Die eigentlichen Funktionstasten der Maus bereiten hingegen immer wieder Probleme, obwohl die Funktion denkbar einfach ist: Durch das Drücken einer Taste wird ein Schalter geschlossen – der Rechner erkennt welche Taste gedrückt wurde und meldet das der Software weiter, damit diese darauf reagieren kann. Wie die Reaktion ausfällt ist von Software zu Software unterschiedlich. Software meint in diesem Zusammenhang auch ausdrücklich das Betriebssystem des Rechners (also Windows, Linux, MacOS – ob man es glaubt oder nicht, auch das ist „nur“ Software).

Im allgemeinen hat sich ein gewisser Standard herausgebildet – die Maustaste unter dem Ringfinger (bei 3 Tasten) bzw. dem Mittelfinger (bei 2 Tasten) öffnet ein Menü mit zusätzlichen Funktionen, abhängig vom Kontext. Daher auch der Name Kontext-Menü. Schon die Verwendung dieser alternativen Funktion ist vielen Benutzern nicht wirklich geläufig. Dabei ermöglichen sie dem Programmierer von graphischen Oberflächen eine direkte Möglichkeit auf die Bedürfnisse des Benutzer so spezifisch als möglich zu reagieren. Denn vielfach kann man heute nicht mehr zwingend vorhersagen was sich genau an welcher Stelle auf dem Bildschirm finden wird, auch das ein Folge von graphischen, fenster-basierten Benutzeroberflächen.

Noch weniger bekannt (und oftmals auch ohne weitere Funktion) ist die Tastenfunktion des Mausrades – diese variiert von Software zu Software stark.

Bleibt eigentlich nur noch eine Taste übrig, im Regelfall als linke Maustaste bezeichnet, allgemeiner ist es die unter dem Zeigefinger. Mit dieser Taste führen wir die allermeisten Operationen aus – von Markieren durch Ziehen, Positionieren des Cursors im Programmcode bis hin zum Anwählen/Anklicken von Schaltflächen verschiedenster Art. Eigentlich ganz logisch, der Mauszeiger als verlängerter, digitaler, virtueller Zeigefinger. Leider hat sich unter Windows die Technik des Doppelklicks zum Starten von Programmen etabliert (unter Linux reicht ein einfacher Klick) – mit teilweise skurielen Auswüchsen: Auf nahezu alles und jedes wird doppelt drauf geklickt – ob sinnvoll oder nicht! Da wird im Netz auf Links ein Doppelklick ausgeführt, weil man ja eine Aktion erwartet und man bei Rechnern immer alles mit Nachdruck tun muss … so oder ähnlich muss sich das Doppelklicken bei einigen Leuten ins Gedächtnis eingebrannt haben. Ich frage mich manchmal was wohl passiert wäre, wenn Microsoft damals es für praktischer befunden hätte den Tripleclick oder gar den Penta-Klick als Startoperation zu verwenden …

Falls irgendjemand eine Idee hat, wie man die „Seuche“ der Doppelklickeritis auszurotten – ich bin für jede Anregung dankbar. Ich habe ja schon überlegt, ob ich einfach überall ein JavaScript einbaue, das zentral die Doppelklicks zählt und dann ggf. nach übermäßiger Menge eine Fehlermeldung ausgibt. Ob das wirklich zielführend ist, wage ich zu bezweifeln. In diesem Sinne „happy x-fach clicking“

RPM und andere Höllen

Da denkt man an nichts böses und will nur mal eben eine aktualisierte Software auf dem Server einspielen. Eigentlich keine größere Sache sollte man meinen, sind doch die aktuellen Linux-Distributionen allesamt mit einem Paket-Management-System ausgestattet, das es erlaubt Software recht einfach zu installieren und zu warten. Wenn alles glattläuft, wie gesagt, wenn …

Angefangen hat alles mit einer Fehlermeldung, dass in einem Webinterface die Bilder nicht angezeigt werden. Im Hintegrund werkelt ein PHP-Skript, das die Bilder bei Bedarf auf die passende Größe runter sakliert – das senkt den Bandbreitenbedarf und die Übetragungszeiten für eine Website. Zudem hat man dann als Autor noch ein wenig mehr Einfluss auf die Qualität – die Skalierungsmechanismen der verschiedenen Browser sind nicht alle wirklich gut.

Ursprünglich habe ich mal auf die integrierte GD-Bibliothek von PHP gesetzt allerdings musste ich recht bald schon feststellen: Die ist für einfache Dinge ganz brauchbar (und in den meisten Fällen auch einfach schon vorhanden), aber die Performance ist nicht unbedingt berauschend. Gerade aber für die Erstellung von Bildergalieren on-the-fly ist die Performance (oder die Ungeduld des Benutzers) wichtig. Fündig geworden bin ich bei der Imagick-Erweiterung für PHP. Diese basiert auf der ImageMagick-Bibliothek. Diese hat den Vorteil direkt in C geschrieben zu sein und die Performance macht echt Freude. Zudem sind die Möglichkeiten doch mittlerweile sehr ausgefeilt.

Wie nahezu jede Software hat sich auch Imagick weiterentwickelt und damit gab es einige Veränderungen an den Schnittstellen und Funktionen – daher funktioniert die Bilder-Skalierung nicht mehr wie gewünscht: Auf dem Testserver hatte ich eine aktuellere Version installiert und auch auf dieser Basis programmiert – mit der älteren wollte das nicht so recht harmonieren, es fehlten einfach ein paar Funktionen bzw. diese wurden verändert und teilweise umbenannt.

Nun gut, dann aktualisiert man doch einfach auch mal das produktive System. Da mein Hosting-Anbieter zum Installationszeitpunkt nur die Wahl zwischen Plesk (alles vorgefertigt und Clicki-Bunti) oder CentOS 5 minimal geboten hatte, habe ich mich notgedrungen für CentOS als RedHat-Devirat entschieden, denn auf einigen Komponenten möchte ich doch gerne etwas mehr Einfluss nehmen als es Plesk von Hause aus zulässt (Stichwort Mailserver, Virenscanner und Authentifizierungsmethoden). CentOS ist ein Unternehmenslinux und das merkt man – hier wird viel Wert auf stabile und sichere Software gelegt, weniger darauf die aktuellsten Funktionen bereit zu halten. Als Folge habe ich damals schon einige Software von Hand kompiliert und installiert – eine Zeit lang hatte ich ja auch mit Linux from Scratch gearbeitet – also kein wirkliches Neuland für mich. Allerdings klappt es nicht immer auf Anhieb, die Software selbst zu installieren und nur bestimmte Teile direkt wie geliefert zu verwenden. Aber es hat ja am Ende alles funktioniert. Nur mit den Updates muss man dann halt vorsichtig sein.

Das letzte Update ist denn auch irgendwo mal stecken geblieben. Als Folge davon gab es noch nicht vollendete Transaktionen des Paket-Managers (yum) – mit

yum-complete-transaction

lässt sich soetwas auch beheben. Nur ärgerlich wenn das auch nicht klappt, weil dem virtuellen Server mal wieder der Arbeitsspeicher ausgeht – also erst mal einige Server-Prozesse stoppen, und dann das Update machen … Immerhin läuft es dann auch durch. Auch wenn noch ein paar Klippen wie beschädigte Repository-Datenbanken zu beheben sind.

Wie sich herausstellt: Leider ist mit den verwendeten Quellen / Repositories keine aktuellere Version von Imagick zu bekommen. Aber es gibt ja alternative Quellen wie das Remi-Repository – dort finden sich viele Pakete aktuellerer Software als in den offiziellen Quellen von CentOS. Das führt ggf. zu doppelten und widersprüchlichen Paketen und Abhängigkeiten die sich im Kreis drehen. Mit ein wenig Nacharbeit kann man diese Abhängigkeiten aber auflösen, indem man explizit vorgibt, welche Version aus welcher Quelle man denn nun haben möchte. Damit lässt sich schon mal die aktuelle Fassung von ImageMagick installieren (das Paket dazu im Remi-Repository heißt ImageMagick2).

Wie ich bereits geschrieben hatte, habe ich einiges an Software selbst kompiliert – unter anderem PHP, da es das von Haus aus bei CentOS nicht mit den Erweiterungen und Einstellungen und vor allem in einer aktuellen Fassung gab. Das macht mir natürlich jetzt etwas Probleme, denn die Imagick-Erweiterung lässt sich nicht so ohne weiteres per Paket-manager installieren. PHP hat dafür mittlerweile etwas vergleichbares wie einen Paket-Manager – nur auf Quellcode-Basis mit automatischer Kompilierung. Vergleichbar ist das mit dem CPAN-Archiv von Perl – auch dort werden viele Module für Perl bereit gehalten und lassen sich damit auch problemlos installieren und auf dem aktuellen Stand halten. Bei PHP heißt das Tool dazu PECL (PHP Extension Community Library), zudem gibt es noch PEAR (PHP Extension and Application Repository) – beide arbeiten recht gut zusammen und machen das Leben mit PHP um einiges leichter.

PECL ist das richtige Stichwort – es bietet unter anderem auch die Option die Imagick-Erweiterung zu installieren. Leider ist die Freude erst mal nur kurz – das verwendete PHP-Modul wird weiterhin gegen die veraltete Version (6.2.x) von Imagick gelinkt. Klar die hatte ich ja nicht deinstalliert, denn das Package ImageMagick2 darf parallel zu ImageMagick installiert sein. Also das alte endlich mal loswerden und per Paket-Manager deinstallieren. Aber oh Wunder – PECL kann auf einmal das Modul nicht mehr bauen….
Lösung: Es fehlten die notwendigen Header-Dateien zum Paket ImageMagick2 – das Paket dazu heißt praktischerweise ImageMagick2-devel (für development-version) – das bringt die Header mit, im normalen Betrieb werden die nicht benötigt, nur wenn man eben selbst Software unter Verwendung der Library schreiben oder kompilieren möchte.
Damit klappt dann auch endlich die Kompilation des aktuellen Modules. Nochmal den Webserver neu starten und dann funktioniert auch endlich die ursprünglich gewünschte Anzeige der Bilder. 🙂
Mittlerweile ist es mal wieder kurz vor 0:00h geworden, aber die Mühe und der Bastelaufwand waren ja vom Erfolg gekrönt.

Nur noch kurz testen ob auch sonst alles auf dem Server noch richtig läuft – beim Update wurden ja doch auch einige andere Pakete gleich mit aktualisiert. Und – oh Schreck! – der Mailserver mag nicht … genauer gesagt, das Filter-Daemon amavisd kommt nicht mehr richtig in Gang. Amavisd ist die zentrale Schnittstelle zwischen Mailserver und diversen Viren und Spam-Scannern. Ohne die Software, kein e-mail-Vekehr.
Der Neustart von Amavisd bringt die Ursache recht schnell an den Tag: Da sind einige Perl-Module beim Update zu Bruch gegangen, wahrscheinlich, weil sie in verschiedenen Versionen installiert wurden – einmal per CPAN und einmal per Paket-Manager der Distribution (leider sind sich diese beiden Werkzeuge in den seltensten Fällen wirklich grün). Das manuelle Entfernen der Module aus der Installation bringt auch das wieder ins Lot.

Nun stellt sich nur noch der Virenscanner Clam-AV etwas bockig – das Scanner-Daemon will und will nicht starten – Ursache ist diesmal aber nicht die Software sondern leider mal wieder die Beschränkungen der Virtualisierung – zum Starten braucht Clamd recht viel Arbeitsspeicher: ca. 100 Megabyte – bei nur 768 MB virtuellem RAM kann es aufgrund der anderen Prozesse wie MySQL, Apache, Postfix usw. da recht bald recht eng im Speicher werden. Da MySQL sich doch auch recht gut im Speicher breit macht (klar Cache braucht nunmal Platz) ziehe ich dort die Daumenschrauben ein wenig fester an, dann reicht es auch noch für den Start von Clamd – aber gut ist diese Lösung auf Dauer nicht, ich werde wohl oder übel einen anderen Server brauchen, ob es wieder ein virtualisierter wird, weiß ich noch nicht so genau. Auf alle Fälle machen derartige Nachschichten nicht wirklich Spaß

Ein echter Mangel – mehrere Dimensionen in HTML

Die Erde ist eine Scheibe … dieser fehlerhaften Auffassung ist ein Großteil der Menschheit mittlerweile entwachsen. Leider ist die mehrdimensionale Denkweise in Rechnern immer noch ein Problem. Vor allem in einem der modernsten Kommunikationsmittel überhaupt. Das WWW ist bestenfalls noch zweidimensional, aber eigentlich ja noch nicht mal das.

Jetzt werden einige einwenden, dass ein Bildschirm doch schon immerhin mal 2 Dimensionen (Breite und Höhe) mitbringt, und es auch schon Ansätze für dreidimensionale Videos im Netz gibt – alles recht und schön – nur das Datenformat HTML ist leider so flach wie man es sich nur irgend vorstellen kann. Es sollte halt möglichst universell und einfach sein – so war einmal die Philosophie.

Schlecht gefahren ist man damit nicht – vor allem in der Anfangszeit des Netzes war es auch mehr als ausreichend – lästig wird die flache Struktur, wenn man nicht mehr nur die Anzeige einer Seite betrachtet sondern an Web-Applikationen denkt.

Altbekannt ist den meisten Leuten das Dilemma mit den Tabellen – jeweils eine Zeile und dann die Spalten Stück für Stück füllen. Soweit ja kein Problem und mit vergleichsweise wenig Aufwand lässt sich auch aus jeder mehrdimensionalen Struktur (z.B. einer Datenbank) eine „plattgeklopfte“ Variante erzeugen die für die Anzeige taugt.

Umgekehrt wird es aber ungemütlich – ich habe es beruflich immer wieder mit tabellenförmigen Daten zu tun, die auch als solche am leichtesten intuitiv eingegeben werden können. Klassisches Beispiel ist die Relation von Mitarbeitern und deren geleisteten Arbeitsstunden – im allgegenwärtigen Excel würde man kurzerhand hergehen und je nach Gusto in die Zeilen die Personen und in die Spalten die Tage des zu betrachtenden Zeitraums eintragen, wahlweise geht es natürlich auch mit vertauschten Rollen zwischen Zeilen und Spalten. Aber: Jede Zelle in Excel lässt sich wunderbar über Zeile und Spalte adressieren. In HTML gibt es für entsprechende Formularlemente nur einen Referenz-Wert: Das name-Tag – denn nur dieses wird als Schlüssel für die serverseitige Auswertung geliefert, immer ein Satz Tupel. Zwar gibt es gerade in PHP Vereinfachungen auf Basis der Benennung um beispielsweise multiple-Choice etwas leichter zu machen, aber das hilft auch nur bei Ankreuz-Antworten.

Was bleibt ist eine eigene Logik zu erstellen nach der die Felder benannt werden und dann anhand dieser die Felder eindeutig zu kennzeichen – z.B. mittel AxB wobei A und B beliebige ganze Zahlen sind. Das macht auf der Serverseite oder auch im JavaScript natürlich wieder jede Menge Aufwand. Ein anderer Weg ist mir derzeit aber nicht bekannt. Ich frage mich, mit welcher Version von HTTP und/oder HTML endlich vernünftige Möglichkeiten geschaffen werden mehrdimensionale Eingaben standardisiert zu behandeln.

Wie gesagt: So selten sind mehrdimensionale Daten in der realen Welt gar nicht – sie ist ja bekanntlich auch keine Scheibe.

Insolvenz von Schlecker – ein Zeichen der Vernunft?

Jetzt ist es also raus: Schlecker ist pleite. Nachdem ja bereits weitere Schließungen angekündigt waren und die roten Zahlen auch ein offenes Geheimnis, war das eigentlich nur der nächste logische Schritt.

Ich finde es gerade bezeichnend, dass ein Geschäftsmodell, welches uns in der Hochschule als eines der effizientesten angepriesen wurde sich in Wohlgefallen aufgelöst hat. Damals wurde uns wunderbar erklärt warum das Konzept so super erfolgreich sei und die größte Drogeriekette dennoch ein Familienunternehmen ist.

Ehrlich gesagt bin ich ja mal gespannt welcher Dominostein der BWL-Weißheiten demnächst wackelt oder gar umfällt. Ich hätte da so ein paar Ideen
[list]
[*] ständiges Just-in-time für alles und jedes
[*] kaum stimmen die Zahlen nicht muss gespart werden, egal was es kostet
[*] Forschung und Entwicklung darf nichts kosten, Entwicklung über mehrere Jahre ist schlecht
[*] Know How kann man einkaufen und verkaufen wie man es braucht, Ausbildung machen doch andere …
[*] Outsourcing löst alle Probleme
[*] Hauptsache ISO-zertifiziert
[*] Immobilien mieten ist günstiger als sie zu besitzen
[/list]

Die Liste erhebt keinen Anspruch auf Vollständigkeit – mit ein wenig Überlegung ließe sie sich sicherlich noch bedeutend erweitern.
Irgendwie finde ich es erheiternd, wie mehr und mehr an verschiedenen Stellen diverse angeblich so tolle Techniken der BWL hinterfragt und teilweise demontiert werden. Es scheint, als ob einige Dinge der „Altvorderen“ – den Geschäftsleuten vom Anfang des letzten Jahrhunderts doch nicht so verkehrt waren.

Sicherlich hat sich die Welt verändert und gewisse Anpassungen sind ja auch richtig. Dazu gehört auch der ein oder andere Irrweg, keine Frage. Im PC-Bereich wurde ja auch einige Zeit auf objektorientierte Datenbanken gesetzt, weil Objektorientierung ja das „Allheilmittel“ schlechthin ist. Mit Maß und Ziel eingesetzt ist Objektorientierung ein mächtiges Werkzeug, nur für die Datenhaltung in Datenbanken hat es sich als nicht effizient genug erwiesen – da ist man einfach relational besser bedient.

Einige Denkanstöße zu den oben genannten Punkten in dieser Richtung:

[b]Just-in-time[/b] Ein wichtiges Prinzip, das die Herstellung von komplexen Maschinen wie Autos revolutioniert hat – aber ist es deshalb plötzlich falsch einen gewissen Teilepool auch weiter als Lager zur Verfügung zu haben? Sicherlich ein Lager kostet auch Geld, aber es hat auch seine Vorzüge. Manchmal ist etwas weniger Dynamik und geringfügige Flexibilitätseinschränkungen im Endeffekt doch besser: Störungen auf dem Transportweg wirken sich nicht sofort negativ aus – mit intelligenter Technik lässt sich auch etwas längerfristig planen.

[b]Sparen egal was es kostet[/b] Sparsamkeit ist kein Fehler an sich – aber panisch zu reagieren, wenn die Gewinne mal nicht über denen des Vorjahres liegen ist in meinen Augen einer. Es kann nicht immer nur nach oben gehen – die Finanzkrise hat das sehr deutlich gezeigt. Vielleicht muss man für das ein oder andere Projekt einfach einen etwas längeren Atem haben. Es gilt immer den Kontext zu sehen. Am Beispiel Schlecker hat man gesehen wohin übermäßige Sparsamkeit führt – es wollte dort keiner mehr einkaufen. Merke immer den Kontext beachten und sich nicht kirre machen lassen.

[b]Forschung zum Nulltarif[/b] Klar will jeder irgendwann die Früchte der Arbeit ernten insbesondere in der Forschung und Entwicklung. Nur leider werden oftmals Projekte und Versuche sehr frühzeitig eingestellt, nur weil sie nicht profitabel sind. Klar, irgendwann muss man einen Schlussstrich ziehen – nur hat man das in den letzten Jahrzehnte oftmals zu früh getan und sich zu kurzfristig orientiert. Ich halte es durchaus für möglich, dass man schon heute mit Brennstoffzellen und Wasserstofftechnik Autos bauen kann – Projekte dazu gab es mehrere. Leider wurde oftmals gesagt: Rentiert sich nicht, daher machen wir erst mal nicht weiter. Nun haben wir derzeit den Salat: Öl wird langsam aber sicher knapp, Atomkraft wollen wir nicht – aber wir wollen dennoch mobil sein. Jetzt hat man das Nachsehen, weil man die Entwicklung nicht weiter verfolgt hat und derzeit die sich bietende Chance nicht nutzen kann.

[b]Know How Zukauf/Verkauf[/b] Am Arbeitsplatz merke ich es gerade immer wieder: An vielen Stellen fehlen derzeit die „alten Hasen“, Menschen die schon geraume Zeit für ein Unternehmen gearbeitet haben und viele Dinge aus ihrer Erfahrung angehen und lösen können. Lange Zeit hat man darauf gesetzt, dass ja genügend Potential vorhanden ist, in Zeiten hoher Arbeitslosigkeit klappt das auch halbwegs. Aber wehe die Konjunktur zieht ein wenig an, dann ist der Acker recht schnell abgeräumt. Da man ja auch keinen Anlass hatte etwas nachzusähen (im Personalbereich nennt man das auch Ausbildung) muss man jetzt wohl warten bis die neuen Pflanzen endlich Früchte tragen. Leute entlassen und damit Know How abgebaut ist sehr schnell passiert, Know How zu bilden dauert sehr lange. Man denke an Eugen Roth:
„Zu fällen einen schönen Baum, braucht ’s eine halbe Stunde kaum. Zu wachsen, bis man ihn bewundert, braucht er, bedenk‘ es, ein Jahrhundert.“

[b]Outsourcing als Dauerlösung[/b] Man muss nicht alles wissen, man muss nur wissen wo es steht. Dieser Satz ist im Prinzip das Prinzip Outsourcing auf das Gedächtnis angewandt. Sicherlich muss man heute nicht mehr alles selbst produzieren was man braucht. Schon im Mittelalter gab es aber auch spezialisierte Betriebe, die einander zugearbeitet haben oder in etwas, das man heute Projekt nennen würde gemeinsam etwas erreicht haben. Wie bei fast allem muss man hier aber mit Augenmaß arbeiten um Erfolg zu haben. Komplexe Produkte zuzukaufen ist kein Fehler – jedoch einfach alles zuzukaufen, auch das was man eigentlich selbst machen könnte oder auch einmal gemacht hat, da wird es schnell kritisch. Ich würde sicherlich heute nicht anfangen einen Prozessor noch selbst zusammen zu Löten, wenn ich einen benötige. Aber bestimmte innerbetriebliche Arbeiten und Herstellungsprozesse sind Gold wert, wenn man sie direkt im Griff hat – man gewinnt an direktem Einfluss und somit an Flexibilität und Know How – das gibt man sonst einfach aus der Hand. Mitarbeiter vor Ort haben einen entscheidenden Vorteil: Sie kennen die Bedürfnisse in aller Regel deutlich besser als externe Kräfte, die nur gelegentlich da sind. Ergebnis ist oftmals mangelnde Flexibilität und lange Reaktionszeiten weil man vertraglich gebunden ist. Immerhin haben immer mehr Firmen erkannt, das Verkaufen nicht alles ist und auch eine eigene Produktion oder eigene interne Dienstleistungen sinnvoll sind.

[b]ISO-Wahn[/b] Normen und Regelungen vereinfachen die Arbeit verschiedener Organisationen – man denke gerade an Maße für Strecken und Gewichte oder auch Schrauben. Man kann sich darauf verlassen, das man bei Berufung auf die Norm etwas bestellt, das Gegenüber genau weiß was man möchte.
Warum muss man aber jeden Arbeitsprozess normen und exakt festhalten? In meinen Augen ist das eine Folge von mangelndem Zutrauen und Vertrauen in den Mitarbeiter – auch weil diese (siehe oben) immer weniger Erfahrung mitbringen. Jeder ist ersetzbar, wenn es eine idiotensichere Anleitung für eine Tätigkeit gibt. Vielleicht sind die Mitarbeiter aber nicht alle Idioten – ganz im Gegenteil, ich denke jeder anständig ausgebildete Mitarbeiter ist in der Lage seine Arbeit zu überblicken und zu wissen was er tut. Ich wehre mich ausdrücklich nicht dagegen bestimmte Verfahrensweisen zu dokumentieren – damit auch mal ein Anfänger nachschlagen kann oder die Vertretung auch weiß wie etwas zu machen ist. Dokumentierte Prozesse haben aber einen wesentlichen Vorteil: Sie sind flexibler und lassen sich anpassen. Einen genormten und zertifizierten Prozess zu ändern ist verdammt aufwändig, vom Nerv-Faktor für die Mitarbeiter mal ganz abgesehen – die fühlen sich nämlich beim Audit regelmäßig verschaukelt um es mal höflich auszudrücken.

[b]Mieten statt kaufen[/b] Auch ich leihe oder miete mir Dinge, zum Beispiel auch meine Wohnung. Aber ich weiß, dass ich dafür ab einem gewissen Punkt mehr bezahle als die Wohnung eigentlich wert ist, wenn ich sie kaufen würde. Miete ist hilfreich für Dinge die man nicht en Block finanzieren kann oder die man selten braucht. Aber gerade bei Immobilien weiß doch jeder wie praktisch es ist, Eigentum zu besitzen. Die Pleite von Karstadt hat das Prinzip verkaufen und zurückmieten klar und deutlich als wenig sinnvoll abgestempelt. Selbst wenn ich für eine Immobilie oder ein anderes Objekt Instandhaltungsarbeiten durchführen muss – vieles davon kann ich geschickt auch mit eigenen Kräften sehr effizient lösen.

Wie gesagt, ich warte mal ab was da noch kommen mag und freue mich über jeden Schritt in Richtung mehr Verwendung des gesunden Menschenverstandes.