Super GAU im Enterprise Lab

Was bisher geschah….

  1. Samstag, 20.02.2016, 08:00: Die Mainframe meldet sich bei IBM und meldet dass die Umgebungstemperarur verändert hat.
  2. Samstag, 20.02.2016, 14:00: Unser Hauswart Franz Zimmermann bekommt einen Anruf von IBM bezüglich Gebertemperatur beim Mainframe (dieser hat begonnen graduell den Prozessortakt runter zu fahren).
  3. Samstag, 20.02.2016, 14:30: Bruno trifft im Lab ein nachdem er von Hansjörg einen Anruf bekommen hat (Hansjörg wurde von Franz Zimmermann avisiert). Bruno stellt fest, dass im Lab kritische Temperaturen herrschen und sich einige Devices selber abgestellt haben. Um die Situation zu entschärfen werden Dachluke und Lab Eingang geöffnet.
  4. Samstag, 20.02.2016, 15:00: Bruno telefoniert mit Lukas Gasser vom CC Thermische Systeme und wird von diesem angewiesen den Ventilator vom Hybridkühler im Handbetrieb laufen zu lassen. Die Temperatur im Lab fällt daraufhin sofort auf die gewünschte Temperatur ab. Eine erste Vermutung zeigt auf einen defekten Zufluss Thermostat der den Ventilator vom Kühler zum Stillstand brachte. Anmerkung: Jäggi beweist uns später dass diese Annahme falsch war.
  5. Samstag, 20.02.2016, 17:00: Ein Großteil der Geräte hat sich selber abgestellt. den Rest hat Bruno mit Power-Off abgestellt. Die Temperatur ist nun auf 18/25 Grad abgesunken. Man beschliesst morgen Sonntag eine Bestandsaufnahme zu machen und die Geräte wieder online zu schalten.
  6. Sonntag, 21.02.2016, 13:30: Bruno, Sandro und Dario machen einen ersten Versuch die Maschinen geordnet hochzufahren.
  7. Sonntag, 21.02.2016, 17:00: Die wichtigsten Services sind wieder online, aber es machen sich unerklärliche Glitches bemerkbar. Ebenso sind nur 5 FC Links up. Wie es sich später herausstellt waren das die FCoE Links. Das heisst die nativ FC Ports waren zu diesem Zeitpunkt down. Ebenso waren ein paar IP Links down wie zB jener vom NAS01.
  8. Sonntag, 21.02.2016, 17:30: Das Team beschliesst am Montagmorgen die restlichen Services hochzufahren.
  9. Montag, 22.02.2016, 09:00: Als wir am Montagmorgen die Services überprüfen stellen wir kleine Ungereimtheiten fest. Um sicher zu gehen beschliessen wir über die Mittagszeit einen Reboot vom Netzwerk vorzunehmen.
  10. Montag, 22.02.2016, 11:40: Bruno verschickt ein email an alle Dozenten, dass über die Mittagszeit das Netz kurz runtergefahren wird und es zu einem kleinen Unterbruch kommen werde.
  11. Montag, 22.02.2016, 13:00: Das Netzwerk kommt nicht mehr hoch. Die als “singe chassis” Cluster konfigurierten Switches kommen in einen “split brain” Zustand und formieren sich nicht.
  12. Montag, 22.02.2016, 14:00: Erster Telefon Support von Brocade wird initiiert. Ohne Resultate. Die Gespräche mit Philipp Gasser und Alex Suhl bringen auch keinen Erfolg.
  13. Montag, 22.02.2016, 17:00: Zweiter (offizieller) Telefonsupport von BNC wird initiiert. Ohne Resultate.
  14. Montag, 22.02.2016, 21:00: Bruno beschliesst den Abbruch vom Telefonsupport und verlangt einen Experten vor Ort am nächsten Morgen.
  15. Montag, 22.02.2016, 21:55: Bruno informiert alle Informatik Dozenten. dass die Experten das Netzwerk nicht zum laufen bringen konnten. Auf den Dienstag Morgen ist ein Netzguru von BNC angeboten worden um das Problem zu lösen.
  16. Dienstag, 23.02.2016, 09:00: Der verlangte Experte reist von Lausanne an. Er findet die Netzwerkprobleme und schickt die “dumps” an das Headquarter von Brocade USA zur Analyse.
  17. Dienstag, 23.02.2016, 17:00: als endlich das Netz wieder hochfährt bemerkten wir, dass die Firewall HW Schaden genommen hat. Wir versuchen sofort auf die zweite, redundante Firewall umzuschalten. Auch diese ist beschädigt. Die HW muss ausgetauscht und neu aufgesetzt werden.
  18. Mittwoch, 24.02.2016, 13:30: Am Standup Meeting wird von Jörg Hofstetter vorgeschlagen dass das elcore Team bis Montag morgen Zeit bekommt um alle Services wieder herzustellen. Das Team hat nun einwenig Luft zum atmen. Bis auf einen Dozenten haben alle sehr viel Verständnis gezeigt und auch Hilfe angeboten.
  19. Sonntag, 29.02.2016 21:55: Der Leiter vom Enterprise Lab Bruno Joho informiert alle Informatikdozierenden sowie Mittelbau, das die meisten Dienste wieder laufen und bittet um Feedback bei Problemen.
  20. Rene Hülsler informiert sich bei Bruno Joho über die Auswirkungen und Folgen des Ausfalles. Er verlangt, dass die Erkenntnisse daraus in das Betriebskonzept einfliessen.
  21. Dienstag, 01.03.2016, 10:00: FITI läuft wieder. Später im Unterricht stellt sich heraus, dass ein paar wenige Clientmaschinen (Windows) nicht erreichbar waren was jedoch unerheblich für den Unterricht war.
  22. Dienstag, 01.03.2016, 13:00: alle Services auf dem Research Cluster laufen wieder (inkl. d3s.chd3s.ch, Redmine Service und der AD Trust) ausser der interne Update-Server der für alle unsere Windows-Machinen zuständig ist.
  23. Montag, 07.03.2016, 10:58: Bruno Joho schreibt folgendes email:

Verteiler: Dozierende hauptamtlich/nebenamtlich und Mittelbau

Liebe Kollegen, liebe Kolleginnen

Ich melde mich, hoffentlich zum letzten mal, bezüglich der Enterprise Lab Störung vom 20. Februar.

  • Nachdem wir einige Rückmeldungen bezüglich nicht verfügbaren Services bekommen haben sind nun bis auf die folgenden 3 alle online:
    Lab interne Testumgebung “elshadow” (wird nur für das interne Entwickeln und Testen verwendet)
  • “VMware vRealize Automation Center” SaaS Cloud Platform (wird im Modul SSM erst in 2 Wochen verwendet und wird momentan hochgefahren)
  • Übungsinterne Konfigurationen und Services vom Modul INFSEC (diese Übung findet erst Mitte April statt. Wir arbeiten mit dem Übungsbetreuer zusammen und helfen die Probleme zu beheben bevor der Dozent mit dem Testen beginnt)

Bald beginnen wir die Erkenntnisse aus dem GAU zu verarbeiten. Etwas das ich aber schon mit Sicherheit sagen kann ist die ungenügende Zusammenarbeit und Dokumentation der Leute die eine Unterrichtsübung im Lab entwickeln und dem Lab Team das die Ressourcen dazu bereitstellt. Das wird ein Thema der nächsten ELMi Sitzung sein.
Ich möchte nochmals allen Danken die ihre Hilfe angeboten haben und Verständnis gezeigt haben in dieser schwierigen Situation.

Enterprise Lab Team
Bruno Joho

 

what we learn from old rock’n roll dinosaurs

Finally Neil Young brought it to the point: We need better sounding source and equipment. Read here. I still got hope for good quality music reproduction. Read the article here. You don’t need equipment like this:5 channel high endAsk Robert what you really need for a outstanding sounding equipment. In fact as a good start this would be enough:
ponomusic

 

2014-03-13 | Posted in: /etc | Comments Closed

Let’s play tennis, with TDD

TDD & Code Kata’s

Now I’m working since more than four months as a software engineer at bbv Software Services in Switzerland. Every new employee at bbv needs to attend several courses (bbv Academy) to improve and extend his skills towards a good software developer. After my Scrum Master course, the next one on my schedule was Test Driven Development.

In addition to the theory why TDD, clean code and pair programming is highly desirable the course was accompanied with hands-on code kata’s. For those who don’t know what a code kata is, here is a citation from Wikipedia:

A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition.

One kata of the course was the Tennis Scorer. The goal was to implement a mechanism, which prints the score of a single game (therefore there are no sets).

Our Referee

The rules given were the following:

  1. A game is won by the first player to have won at least four points in total and at least two points more than the opponent.
  2. The running score of each game is described in a manner peculiar to tennis: scores from zero to three points are described as “love”, “fifteen”, “thirty”, and “forty” respectively.
  3. If at least three points have been scored by each player, and the scores are equal, the score is “deuce”.
  4. If at least three points have been scored by each side and a player has one more point than his opponent, the score of the game is “advantage” for the player in the lead.

Our implementation should be based on the ITennisScorer interface, which of yourse was changed during the exercise.

</span>
<pre>namespace Tennis
{
    public interface ITennisScorer
    {
        void AchievesScore(Player player);

        string GameScore { get; }
    }

    public enum Player
    {
        PlayerA,
        PlayerB
    }
}

Because it was a TDD course, we needed to build up a TODO list of appropriate unit tests first (e.g. Game just started, no one scored so far, expected score “love”).

Then we implented the unit tests one by one. Each of them had to fail first. Then came the actual implementation, test should pass afterwards. Code Refactoring -> All tests should pass.

Our Players

My initial implementation was blotched with many if statements, handling all the special cases for the game score (deuce, advantage, …). I also had code duplication, because I needed to track and update the score of player A and B separately.

But here comes the ultimate advantage of TDD. You’re not afraid anymore to refactor your code to a better architecture and solution. Because you know you can (and should) always run your unit tests and see if everything is still behaving as desired. You can sleep comfortably without to fear the next morning from an upcoming design change. Ok, I know. Some can still sleep during the nights without TDD, but they will be haunted by bad dreams 😉

So I refactored my code and eliminated the code duplication. Instead of using an enum to track the actual player score, I simply use a two-dimensional array, which holds all the possible scores of a game.

namespace Tennis
{
    public class TennisScorer : ITennisScorer
    {
        private int scoreA;
        private int scoreB;

        private const string GameA = "gameA";
        private const string GameB = "gameB";
        private const string AdvantageA = "advantageA";
        private const string AdvantageB = "advantageB";

        private static readonly string[][] PlayerScores = new[]
            {
                new[] {"love",  "15:0",     "30:0",     "40:0",     GameA},
                new[] {"0:15",  "15:15",    "30:15",    "40:15",    GameA},
                new[] {"0:30",  "15:30",    "30:30",    "40:30",    GameA},
                new[] {"0:40",  "15:40",    "30:40",    "deuce",    AdvantageA},
                new[] { GameB,   GameB,     GameB,      AdvantageB}
            };

        public void AchievesScore(Player player)
        {
            switch (player)
            {
                case Player.PlayerA:
                    UpdateGameScore(ref scoreA, ref scoreB);
                    break;
                case Player.PlayerB:
                    UpdateGameScore(ref scoreB, ref scoreA);
                    break;
            }
        }

        public string GameScore
        {
            get { return PlayerScores[scoreB][scoreA]; }
        }

        private void UpdateGameScore(ref int playerToAddScore, ref int opponentScore)
        {
            if (GameScore == AdvantageA || GameScore == AdvantageB)
            {
                opponentScore--;
            }
            else if (GameScore != GameA && GameScore != GameB)
            {
                playerToAddScore++;
            }
        }
    }
}

The Regulating Authority

I also refactored my unit tests. There were many tests, testing all the possible game processes. But my course instructor gave me the hint to use Nunit’s RowTest. Instead of writing many, almost identical tests for each case, I wrote just one parametrized unit test and the many case were provided as a parameter.

namespace Tennis.Test
{
    using NUnit.Framework;
    using FluentAssertions;

    [TestFixture]
    public class TennisScorerTest
    {
        private TennisScorer testee;

        [SetUp]
        public void SetUp()
        {
            testee = new TennisScorer();
        }

        [TestCase("", "love")]
        [TestCase("A", "15:0")]
        [TestCase("AAB", "30:15")]
        [TestCase("AAAB", "40:15")]
        [TestCase("BBB", "0:40")]
        [TestCase("BBB", "0:40")]
        [TestCase("ABABAB", "deuce")]
        [TestCase("AAABBB", "deuce")]
        [TestCase("AABBAB", "deuce")]
        [TestCase("AAABBBA", "advantageA")]
        [TestCase("AAABBBB", "advantageB")]
        [TestCase("AAAA", "gameA")]
        [TestCase("AAAAA", "gameA")]
        [TestCase("AAAABBBBBB", "gameA")]
        [TestCase("AAABBBBB", "gameB")]
        [TestCase("ABABABABABABABABABABABAA", "gameA")]
        public void PlayerScores(string game, string expectedScores)
        {
            foreach (var currentScore in game)
            {
                switch (currentScore)
                {
                    case 'A':
                        testee.AchievesScore(Player.PlayerA);
                        break;
                    case 'B':
                        testee.AchievesScore(Player.PlayerB);
                        break;
                }
            }
            testee.GameScore.Should().Be(expectedScores);
        }
    }
}

References & Coaches

If you want to practice your programming skills, I can encourage you to do some code kata’s, or similar challenges, to stay fresh in your head.

Here is a list of some useful sites with some brain-teasers and, if given, their solutions:

My Tennis Scorer implementation is available on GitHub.

2013-03-10 | Posted in: C#, Coding | Comments Closed

Requirements for the Mainframe

Dr. Martin Schmatz currently teaching z system architecture lessons during Mainframe intensive course at the University of applied science in Lucerne made the following statement:

“For me as a member of IBM HW research the requirement for the Mainframe is very simple: The probability for a HW failure which results in a user noticeable error must be smaller then the probability that of an meteorite falls on the Mainframe!”

2013-02-05 | Posted in: /etc | Comments Closed

Hirnzellen knacken beim Möbelpacken

Wer braucht schon Sudoku?

Also ehrlich. Wer braucht schon diese Rätselheftchen, die man im Kiosk für knapp 2 Franken kaufen kann.
Wer seine Gehirnmasse trainieren will, der kann uns das nächste Mal beim Zügeln helfen 🙂

Da gibts nämlich die kniffligsten Aufgaben

Wo waren schon wieder diese IKEA Anleitungen…?

  • Aah, da sind sie ja. Wo sind aber die 64 Schrauben für die Schranktüren?
  • Warum musste ich mir einen überdimensionierten Schrank kaufen. Das Zeug kann man ja nur in senkrechter Position aufbauen.
  • Zwischen den Lippen finden 13 Schrauben Platz (Anzahl kann je nach Grösse der Klappe variieren)

Wie transportiere ich ein Sofa mit dem Lift?

  • Gar nicht! Blöder Pythagoras. Die Rechnung ging gar nicht auf.

Das Bett heisst Hopen, quietscht aber beim Poppen. Schlage IKEA vor diesen Namen zu ändern.

Ah ja, die Lampen. Kein Problem, kaufen wir doch neue. So energiesparende. Sind ja momentan ganz im Trend:

  • Ähm… ja. Energiesparlampe, stromsparende Halo Eugen Lampe, LED, Leuchtröhre.
  • 11 Watt entspricht 68 Watt. 764.4657 Lumen, kalt, warmweiss, blau, gelb (ist ja ein ganzer Farbkasten hier)
  • Leuchtet sofort 100%, manche erst nach 30 Sekunden (als ich sie anschloss leuchteten sie gar nicht)
  • Hält 2 Jahre, 6 Jahre, sogar 25 Jahre (will mal sehen wer so lange die Garantie aufbewahrt)

Strom und so

  • Phasenprüfer: Egal ob der Schalter auf ON oder OFF ist, der blöde Prüfer leuchtet andauernd.
  • Holen wir ein Multimeter: Wieso fliessen 78 Volt wenn der Schalter auf OFF ist?
  • Bohrmaschine läuft nicht wenn die Sicherungen draussen sind.
  • Sind diese Handschuhe gegen Stromschläge gedacht?
  • Im Wohnzimmer fehlt ein Draht. Man kann keine Lampe mit einem Draht anschliessen. Oder haben wir Wireless Strom verpasst?
  • 650 Watt Bohrmaschine reicht nicht um Löcher in die Decke der Küche zu bohren. Liebe Nachbarn: Wir bitten um Entschuldigung für die 40 Minuten um drei Löcher zu bohren.
  • Der Null-Leiter ist der blaue Draht, bei alten Systemen der braune Draht. Bei Conforama Lampen anscheinend der rote Draht.

Hausratversicherung

  • Befindet sich in der Nähe von 100 Metern ein Hydrant? Was weiss ich?!? Die Feuerwehr ist grad um die Ecke, reicht das?

Was ist der maximale Winkel beim Verlegen vom Netzwerkkabel, damit die Elektronen nicht aus der Kurve schiessen?

Wieviel 20 Räppler brauche ich um die Kochwäsche vollständig durchlaufen zu lassen?

Die absolute Knacknuss?

100 Punkte gehen an die gekaufte Lampe von Thailand.
Ich brauchte 1:20h um eine 30-teilige Lampe zusammenzubauen. Hey, immerhin eine halbe Stunde weniger als beim Lucerne Marathon.
Und ohne Fehler, musste nie von vorne anfangen. Hab mir auch schön viel Zeit genommen bzw. nehmen müssen.
Mein räumliches Denkvermögen hat sich vermutlich um 687% verbessert.

Seht aber am Besten selbst wie das Kunstwerk nun aussieht.

2012-10-30 | Posted in: Fun | Comments Closed

Debug- und Testcode haben nichts im Release zu suchen

Jaja, da hab ich mir doch die Sunrise Mein Konto App von Google Play runtergeladen. Mit der App kann man unter sein eigenes Sunrise Konto zugreifen und dabei laufende Kosten, Inklusivleistungen und Rechnungen der eigenen Produkte einsehen. Es ist wirklich eine gute App, teilweise umständlich zu navigieren aber ansonsten ist alles ersichtlich was man an Kontoinformationen braucht.

Und Windows Phone 7?

Da dachte ich mir doch: Hey, eine solche App muss ich auf dem Windows Phone 7 auch haben. Aber leider Fehlanzeige. Für WP7 gibts von Sunrise noch keine App.
Ja gut, dann schreib ich doch selber eine Sunrise Mein Konto App fürs WP7.

Doch so einfach ist das nicht: Die Verbindung zwischen App und Server ist mit SSL gesichert. Ich habe keine Ahnung welche Services (REST, SOAP?) an welchen Endpunkten aufgerufen werden. Was für Daten und in welcher Form (JSON, XML?) diese übertragen werden. Wie läuft der Login Vorgang, HTTP Authentication, GET/POST Variablen, selbstgemachtes Gemüse? Hier wurden die Hausaufgaben gut gemacht, der Datenverkehr ist verschlüsselt.

Aber ich möchte dennoch herausfinden was so vor sich geht. Machen wir doch eine Man in the Middle Attacke mit dem Emulator. Dafür werde ich meine persönlichen Login Daten opfern müssen.
Das Übliche halt:

  • Meinen PC als Proxy dazwischenschalten, am Besten mit Charles Web Debugging Proxy
  • Lokales Zertifikat erstellen wo www1.sunrise.ch als Common Name eingetragen ist
  • Das “Sunrise” in den Zertifikatsspeicher des Emulators oder eines echten Android Gerätes (Root Zugriff erforderlich) installieren
  • Applikation auf Emulator oder Android Gerät laufen lassen und mit LogCat zugleich noch den Output der App aufzeigen

Aber ich bin gerade auf Wohnungssuche, habe also keine Zeit und brauche eine schnellere Lösung 😉

Hey App, lass mich rein, ich bin Entwickler

Meine Faulheit muss ja bekanntlich belohnt werden. Und das wurde ich auch. 😀
Ich wollte sehen ob die App irgendwelchen Debug Output an LogCat sendet und habe die offizielle App von Google Play runtergeladen. Der Output war jedoch minimal. Einige Standardmeldungen wie “Login successful” kamen heraus aber nichts Auffschlussreiches über die Internals der App.

Also habe ich mich etwas am APK File zu schaffen gemacht. Mit dem APK MultiTool die App dekompiliert, und anschliessend das AppManifest.xml in Klartext geöffnet.
Folgendes ist mir aufgefallen:

  1. android:debuggable=”true” ist nicht gesetzt. Ist auch gut so, ist ja schliesslich ein Release und keine Debug Version.
  2. Eine Activity mit Namen Administration ist registriert. Lässt vermuten, dass es irgendwo in der ofiziellen App einen ServiceDialog o.ä. gibt.
Also schön das Debug Flag setzen und die XML Datei speichern. Mit dem APK MultiTool die “modifizierte” Applikation wieder in ein APK File builden und anschliessend noch erneut signieren.

Oh, ich bin ja schon drin

Und wer hätte das gedacht: Die Debug Statements wurden alle schön brav mit in die ofizielle App kompiliert. LogCat spuckte fröhlich alle möglichen Statements raus. JSON Objekte und Inhalt, Hostnamen und Pfade der jeweiligen Services, Login Infos uvm.

LogCat Output

Debug Infos im LogCat Output

Nun gut, aber was ist mit der registrierten Administration Activity? War nicht schwer herauszufinden. Sobald man im Login Screen ist, einfach mal den “Search” Button drücken (F5 im Emulator) und schon kommt man ins Service Menü, oder sollte ich besser sagen in den Test Dialog? Das neue APK File auf mein Android Gerät installiert. Übrigens: Die App lässt sich auch installieren, wenn “Installation von Nicht-Market Anwendungen zulassen” deaktiviert ist.

Fazit

Service Dialog

Service Dialog

Es ist nichts sensitives ans Tageslicht gerückt. Ich habe weder Zugriff auf vertrauliche Kundendaten erhalten oder sonstige Hinweise auf sicherheitskritische Bereiche. Da haben die Entwickler der App gute Arbeit geleistet.

Aber dennoch sollte man darum bemüht sein Debug Informationen, Testdaten, Testabläufe und sonstige interne Informationen nicht in den offiziellen Release zu veröffentlichen. Solche Daten verschwenden nicht nur zusätzlichen Speicher auf dem Phone, sondern sie können sicherheitskritische Informationen an jedermann preisgeben.

Testabläufe sollten auch möglichst mithilfe von Tools und Unit Tests vorgenommen werden und nicht mit echten Testern, welche auf Test Screens mit den Fingern herumdrücken. Solche Tests sind nicht immer einfach. Dies resultiert auch oft daraus, dass eine Entkopplung vom User Interface und der Business Logic nicht einfach zu bewerkstelligen ist. Ein guter Ansatz um eine gute Entkopplung zu erzielen und somit die Applikation “testbarer” zu machen wäre das Model View ViewModel (MVVM) Pattern.

Ich persönlich freue mich sehr über die ganze Sache. Dadurch habe ich genug Einblicke bekommen um meine Windows Phone App zu entwickeln. Die Authentisierung läuft über HTTP POST. Die Session wird mittels eines Login Keys, welcher vom Server zugewiesen wird, identifiziert und die Daten werden im JSON Format vom Server zurückgesandt.

Biken nach der langen Reisepause

Hab ich’s noch drauf?

Mein achtmonatiger Asia-Pacific Trip ist nun seit zwei Wochen zu Ende. Es wird mal langsam Zeit wieder aktiv und regelmässig Sport zu betreiben. Ich hatte während den ersten vier Monaten in Australien Sport betrieben aber kaum in der gewohnten Regelmässigkeit wie in der Schweiz. In Südostasien wurde dies immer schwieriger. Velos konnte man nicht überall mieten, zum Joggen war’s oft zu heiss.

Biken Glaubenberg – Nahe der Passhöhe auf 1540m

Mein Mountainbike ist zwar eher in einem mässigen Zustand aber durch einige, von mir durchgeführte, Reparaturen lässt es sich wieder fahren. Also ab auf’s Bike. Wollte prüfen ob ich überhaupt noch annähernd so fit bin wie vor acht Monaten. Ich wollte zuerst keine anstrengende Route wählen aber dann schoss mir der Gedanke zum Glaubenberg zu fahren in den Kopf. Ich konnte mich mit der Idee anfreunden und erachtete es als ein realistisches Ziel.

Ich konnte jedoch erst um 15:30 Uhr starten und wusste, dass es dunkel werden könnte bevor ich wieder zu Hause ankomme, aber ich wollte es dennoch versuchen.
Zu meiner Überraschung habe ich meine Erwartungen übertroffen, was mir den Beweis gab, dass ich nicht all zuviel an meiner Fitness eingebüsst habe während meiner mehrmonatigen Reise. Freue mich bereits diese Strecke eines Tages mit einem Rennvelo zu fahren.

Leistungsdaten

Daten wie Geschwindigkeit und zurückgelegte Strecke (mit GPS) sowie Herzfrequenz (mit Brustgürtel) habe ich mit einer Polar RS800CX aufgezeichnet.
Unten sieht man die gefahrene Strecke in Google Maps sowie die Profile für Herzschlag, Geschwindigkeit und Höhe. Schön zur Anzeige gebracht wird dies über das WordPress XML Google Maps Plugin von Patrick Matusz.

Strecke: 74km (Littau – Malters – Finsterwald bei Entlebuch – Glaubenberg – Sarnen – Littau)
Dauer: 3:55h
Aufstieg: 1378m

[gpxheartratechart=show; gpxspeedchart=show; gpxelevation=show;gpxcheckpointinterval=10;]

Datenaufbereitung

Export und Aufbereitung der Daten von der Polar Personal Trainer 5 (PPT) Software für das WordPress Plugin ist etwas umständlich.
In der GPX Datei von PPT werden nur die üblichen GPS Daten festgehalten. Zusätzliche Daten wie Herzschlag, Kadenz, Höhe (Barometer) usw. werden in einer separaten HRM Datei gespeichert.
Die Zusatzdaten in der HRM Datei können mit dem Polar HRM to GPX Merger tracksbox.net in die GPX Datei eingebettet werden.

2012-09-15 | Posted in: Biken | Comments Closed

PADI Rescue Diver & EFR @ Perhentian Island

Die Reise geht langsam dem Ende zu. Noch knapp 10 Tage und dann geht’s wieder zurück in die Schweiz. Sabrina hatte leider bis zum heutigen Tage keine Tauchausbildung gemacht und das wollte ich natürlich noch ändern 😉
Auf der Trauminsel Langkawi in Malaysia haben wir ein schweizer Pärchen kennengelernt. Sie wollten ebenfalls den PADI Open Water machen und sie inspirierten uns unseren geplanten Trip durch Malaysia komplett umzusztellen und mit Ihnen nach Pulau Perhentian Kecil zu reisen um gemeinsam zu tauchen.
Sabi fühlte sich etwas unwohl was das Tauchen anbelangte. Den Discovery Dive, den sie in Vietnam gemacht hatte war eher schreckerregend statt vertrauenerweckend. Dort hatte sie nämlich keine detaillierte Schulung gekriegt und musste dem Material sozusagen blind vertrauen. Da hätte ich persönlich auch meine Bedenken gehabt. Dies sollte nun ganz anders aussehen und ich brachte Sabrina dazu sich für den Open Water anzumelden.
Damit mir nicht langweilig wurde währenddessen sie ihre Ausbildung absolvierte, gönnte ich mir die PADI Rescue Diver und Emergency First Responder (Nothelferkurs) Ausbildung für drei Tage. Fun Dives wollte ich anschliessend mit Sabi machen, sobald sie ihr Zertifikat in der Tasche hatte.

Mentale Stärke ist gefragt

Der einmonatige Ramadan wurde am Ende mit einem grossen Fest abgeschlossen. Darum war es sehr schwierig für unser gewünschtes Datum von der Westküste zur Ostküste zu gelangen. Schliesslich hatten wir es geschafft einen Busanbieter zu finden. Wir mussten zwar zwei Mal mitten in der Nacht umsteigen aber wir erreichten unser Ziel immerhin “nur” mit einem Tag Verspätung. Zum guten Glück kamen wir schon um 8 Uhr früh an. Die Hotels waren praktisch alles ausgebucht und wir konnten mit Glück ein nettes Bungalow finden. Eine Stunde später waren wir schon in der Tauchschule und fingen unseren Unterricht an. Da ich einen Tag zu spät kam sollte ich die ersten Kapitel am anschliessenden Abend nachbüffeln.

Schade, denn dadurch habe ich am ersten Schultag schon mal total versagt. Als wir von unseren gespielten Notfallübungen mit dem Boot zur Schule zurückfuhren, sprangen plötzlich zwei Insassen vom Boot ins Wasser und schrien um Hilfe. Das Ganze war natürlich gestellt. Nun wurde ich zusammen mit dem anderen Schüler, der übrigens erst 17 Jahre alt war, zur Hilfeleistung gefordert. Der andere Schüler sprang dann mal ins Wasser und ich wusste nicht wie weiter und machte es ihm nach. Grosser Fehler!!! Das habe ich aber am Abend beim Nachbüffeln erst erfahren.

Sobald ich ohne Flossen, Maske, Schnorchel und der ganzen Tauchausrüstung ins Wasser hinein sprang, fing der ganze Ärger erst richtig an. Dem Mitschüler befahl ich zu der “ertrinkenden” Frau, die natürlich total panisch um sich schlug, zu schwimmen und ihr zu helfen. Ich widmete mich meinem Instruktor zu, da er schwerer und grösser war und vermutlich eine Spur zu anstrengend für meinen Mitschüler gewesen wäre. Nun, mein Ausbildner wollte es mir auf die harte Tour beibringen. Er schlug dauernd um sich, versuchte mich unters Wasser zu kriegen und mich zu packen. Ich konnte mich mit den gelernten Techniken jeweils von einer sicherer Distanz aus von ihm entfernen. Aber nach einiger Zeit dachte ich mir ich müsse ihn doch endlich mal retten, tauchte unter Wasser und versuchte ihn von hinten zu packen und somit an der Oberfläche zu beruhigen. Sense, sobald ich ihn von hinten packte und zur Oberfläche schwamm nahm er mich in den Schwitzkasten. Kein Wunder, er hatte ja keine Tauchflasche am Rücken und deshalb funktionierte mein Trick um ihn festzuhalten nur teilweise.

In den Klauen des Opfers

Nun kam der anstrengendere Part: Zwar hatte ich den Taucher fest im Griff, er mich aber auch. Er benutzte meinen Körper regelrecht als Schwimmring und drückte mich dadurch immer wieder nach unten. Am Anfang war das keine grosse Sache, da ich genügend lange die Luft anhalten konnte. Aber nach jedem weiteren Versuch mich zu befreien kam ich schnell aus der Puste. Mein Mund war immer knapp über der Wasseroberfläche und jedesmal wenn eine Welle kam, bekam ich eine schöne Nasenspülung. Ich hatte immer mehr Mühe nach Luft zu schnappen. Auch wenn es nur eine Übung war, diese Situation strapazierte meine Nerven gewaltig. Ich wusste genau, dass im Ernstfall diese unvorteilhafte Lage mein sicheres Ertrinken bedeuten würde. Ich realisierte wie schnell aus einer vermeintlich ungefährlichen Situation innerhalb von wenigen Sekunden das eigene Leben in Gefahr stehen konnte. Mein Ausbildner lies mich dann los und erklärte uns anschliessend unsere gemachten Fehler. Ich büffelte die ersten Kapitel am Abend nach und wusste, dass praktisch alles was ich gemacht habe falsch war. Darin stand ganz gross

Stop, Breathe, Think, Act

Ich hatte mich direkt für den letzten Schritt entschieden, nämlich ins Wasser zu springen. Die ersten drei Schritte hätten mir geholfen die Lage zu analysieren und mit Scharfsinn entsprechende Rettungsmassnahmen einzuleiten. Ganz nach dem Motto: Safety first! Ganz einfach wäre gewesen, wenn ich vom Boot aus einen Schwimmring mit Seil zum Opfer geworfen hätte. Oder den Kapitän aufgefordert zur Unglücksstelle zu fahren und die Taucher mit einer Verlängerung (Stab, Seil, …) an Bord zu ziehen. Wenn alles nichts hilft, so sollte man erst dann die Möglichkeit ins Wasser zu springen in Erwägung ziehen. Aber immer mindestens mit Flossen, Maske und Schnorchel. Viel besser, man hat Zeit um seine Tauchausrüstung anzulegen, da man in diesem Fall die Tarierweste (BCD) für einen wesentlich erhöhten Auftrieb und die Luftflasche zum atmen sich als grosse Unterstützung erweisen. Können BCD und Luftflasche nicht angezogen werden, so mindestens etwas für den Auftrieb mitnehmen (Rettungsring, Benzinkanister, Tankflasche, Luftmatratze). Dies sind alles Gegenstände welche man der Person in Not reichen kann. Diese können sich daran festhalten und sich somit gegen Erschöpfung und Ertrinken schützen. Hat man nichts von alledem, so bleibt man auf sicherer Distanz zum Opfer und versucht dieses zu beruhigen. Im schlimmsten Falle wartet man solange bis das Opfer erschöpft oder bewusstlos ist und unter Wasser geht um es erst dann mit den entsprechenden Abschlepptechniken an eine sichere Stelle zu bringen.

Gut, muss ja gelernt sein. Habe im Nachstudium meine Fehler erkannt und die nächsten zwei gestellten, aber dennoch überraschend aufgetretenen, Notsituationen konnten wir dann besser meistern.

Fazit

Nun fühle ich mich viel sicherer im Wasser. Mit der Ausbildung, wie man Notsituationen erkennen, vermeiden oder damit umgehen kann geben einem zusätzliche Sicherheit im Wasser. Ich weiss, dass ich (hoffentlich) nicht hilflos ausgeliefert bin, wenn jemand (oder ich selber) in Not ist und man weiss was man tun kann um zu helfen. Denn: Jegliche Hilfe ist besser als keine Hilfe!
Und der zusätzliche Nothelferkurs war eine gute Auffrischung, damit man auch über Land in Notsituationen Hilfe leisten kann.

So, nun genug von Ausbildung. Das nachfolgende Video zeigt meinen ersten Fun Dive, den ich mit Sabrina als Buddy machen durfte. Jegliche Angst, die sie vor dem Tauchen hatte ist nun verflogen. Ihr gefällt’s, es macht ihr Spass und nun schwärmt sie schon davon mit mir im roten Meer zu tauchen 😉

Diving @ The Great Barrier Reef (9.-11.4.2012)

Nun sind knapp zwei erlebnisreiche Wochen mit StevO im Litchfield und Kakadu National Park im Northern Territory vergangen. Die Ostküste darf bei einem Australien Aufenthalt natürlich keinesfalls fehlen und darum gehts nun weiter mit dem Billigflieger nach Cairns in Queensland. Damit ja nicht langweilig wird treffen wir dort Magic P1450359.jpgmit seiner Freundin Marion, die gerade den weiten Weg von der Schweiz hinter sich haben, und Jonas, der ebenfalls in Perth die Sprachschule besucht hat. Nach wenigen Tagen Party machen, Sonne geniessen und einigen, teils erfolgreichen, Wakeboard-Versuchen kam als Nächstes das Great Barrier Reef ins Visier. So haben wir alle beschlossen einen zwei bzw. drei Tages Tauchtrip auf dem Schiff, der Kangaroo Explorer, zu verbringen. Da ich den Open Water bereits schon habe, entschloss ich mich zusammen mit Marion meine bevorstehenden zehn Tauchgänge mit der SSI Advanced Adventurist Prüfung zu ergänzen.

Alle Bilder des Liveaboard Trips gibts in meinem Picasa Album.

Tagesablauf auf der Kangaroo Explorer

Das Programm war eher locker teilweise aber auch sehr intensiv. Morgens um 05:15 ist der erste WakeUp Call. 15 Minuten später folgt der Zweite für die Schlafmützen, die noch im warmen Bettchen liegen. 06:10 bereits der erste Tauchgang ohne Morgenessen. P1450558.jpgDieses folgt anschliessend. Danach ein weiterer Tauchgang vormittags, einer nachmittags und um den Tag schön abklingen zu lassen folgt ein Nacht-Tauchgang. Letzteres war für mich absolutes Neuland als auch Highlight zugleich. Beim WakeUp Call stand bereits schon der Kameramann neben der Türe um die verschlafen dreinblickenden Gesichter aufzuzeichnen. Hat bei mir jedenfalls nicht geklappt. Am zweiten Morgen stand ich bereits schon vor der Türe und verpasste dem Anklopfer wohl den Schreck des Lebens. Mit soviel Energie um diese unchristliche Zeit hat wohl keiner gerechnet.

Say Cheese

_MG_0101.jpg Beim morgendlichen Tauchgang war ich erstaunt wie schnell die Sonne aufging. Unter Wasser herrschte bereits schon Hochbetrieb. Die Sicht war stets perfekt (>20m). Man konnte zur Mittagszeit auch Schnorcheln gehen und man sah fast ebenso viele Fische wie beim Tauchen. Bei den Tauchgängen wurde ich für die von mir gewählten Spezialitäten für die Advanced Prüfung geschult. Unterwasserfotografie, Navigation, Deep Dive (30m), Meereskunde und der Night Dive. Persönlich fand ich das Fotografieren unter Wasser das Anspruchsvollste. Stets den Körper und die Kamera ruhig halten um scharfe Bilder hinzukriegen. Die Lichtverhältnisse sind unter Wasser ebenfalls schwierig. Einerseits hat man weniger Licht unter Wasser und man muss vielmehr auf den optimalen Aufnahmewinkel achten. Andererseits verlieren die Farben schnell an Gewicht. Rot wird dabei am stärksten absorbiert und die Bilder wirken oft fad. Da ich keinen Rotfilter vor der Linse hatte und man keinen Live Weissabgleich machen konnte, wirken die Bilder manchmal farblos.

Wo ist Nemo?

Die Meereskunde war irgendwie verwirrend. Nach einer kurzen Einführung wie das Great Barrier Reef vermutlich entstanden ist wurden mir und meinem Buddy Marion mehrere Schablonen mit aufgedruckten Fischen und Pflanzen in die Hände gedrückt. P1450650.jpgDie Aufgabe war, einige dieser Arten unter Wasser zu finden und als Beweis zu fotografieren. Keine Zeit die gesuchten Arten vorher zu studieren. Kamera packen und ins Wasser. Wir hatten echt Mühe die Zielobjekte zu finden, hatten auch keine Ahnung wo man suchen soll. Zugleich mussten wir auch sparsam mit unserer Luft umgehen für einen möglichst langen Tauchgang um somit mehr Zeit für die gewünschten Aufnahmen zu haben. Erstaunlich was man so alles an einem Ankerstein kleben sieht. Da konnten wir auf ein Mal fast die Hälfte der gesuchten Pflanzen abknipsen.

Haste einen Rausch?

P1450690.jpg Am zweiten Morgen kam ich erst recht nicht auf die Höhe. 05:30 Uhr, Deep Dive auf unter 30m war angesagt. Bei dieser Tiefe wurden mir Rechenaufgaben gestellt, Koordination und Orientierung geprüft um zu ermitteln ob ich in einem Tiefenrausch verfallen bin. Eine Stickstoff-Narkose, auch Inert-Narkose genannt, kann bereits bei einer Tiefe von 30m vorkommen. Heute geht man davon aus, dass diese Nervenzellen in ihrer Funktion durch den gelösten Stickstoff in dieser Tiefe gestört werden. Dies wirkt sich aus indem der Taucher in seinem Urteilsvermögen stark eingeschränkt werden kann, visuelle und physische Einschränkungen bis hin zur Bewusstlosigkeit. Ein typisches Phänomen, welches sehr irrational wirkt, ist, wenn der Taucher in dieser Tiefe seinen Regulator aus dem Mund nimmt. Zum Glück war ich beim Test nicht von der Narkose betroffen und konnte die Tests mit Bravur meisten. Aber Achtung: Dies heisst nicht, dass ich nun immun gegen den Tiefenrausch bin. Dies hängt immer von der individuellen körperlichen Verfassung und aktuellem Zustand ab.

Tag & NachtP1450400.jpg

Ich hätte nie gedacht, wie interessant ein Nachttauchgang sein kann. Die meisten Fische schlafen in der Nacht. Sie können zu dieser Zeit kaum etwas sehen und sind leichte Beute. Deshalb verstecken sie sich unter Steinen, Riffspalten oder Höhlen. Aber dennoch steht nicht alles still. Einige Fische sind munter auf der Jagd. Ein kluger wie auch dummer Fisch zugleich war der Red Snapper. Man kann mit der Taschenlampe die Beute des Red Snappers anleuchten. Wenn der fast blinde Snapper diese erspäht beginnt er seine Jagd. Um ihn zu unterstützen muss man jedoch die Beute bei ihrer Flucht mit der Taschenlampe verfolgen. Mit etwas Glück frisst der Snapper sein Opfer vor den Augen des Tauchers. Wir haben es immerhin geschafft beim einten Nachttauchgang 2.5 Fische von Red Snappern fressen zu lassen. Der halbe Fisch dadurch, weil er nur angeknabert wurde.
Interessant war die Erkenntnis, dass ich in der Dunkelheit sparsamer mit der Luft umgehen. Irgendwie scheine ich mich wohl vom ruhigen nächtlichen Treiben in der Unterwasserwelt mehr zu entspannen.

Und wie weiter?

P1450710.jpgDie Ausbildung ist nach 3 Tagen und zwei Nächten auf der Kangaroo Explorer zu Ende. Die Tauchgänge habe ich pflichtbewusst ins Log-Buch eingetragen. Nun bin ich bereit für mehr Tauchgänge. Wer weiss, vielleicht nehme ich mir den Rescue Diver ins Visier für die nahe Zukunft.