Ich hab so einen Hals!

Ich versuch schon das halbe Wochenende über ein Hg-Repository in ein Svn-Repository zu konvertieren. Das ist halt die Richtung die sonst (scheinbar) keine braucht weil Hg (oder Git) ja soo viel toller ist und man immer nur ZU diesen konvertieren will. Es funktioniert *kein einziges* der Tools da draußen in der Richtung. Um mein Hg-Repository ist nun wirklich nicht besondern komplex. Die Tools scheitern an so hochkomplexen Aufgaben, wie dass Dateien nicht gelöscht werden können, weil sie nicht da sind. Das kann es ja wohl echt nicht sein.

Anfang der Woche war ich auf dem Workshop Molecular Modeling and Simulation. Zwei Tage die ich unter Physikern, Chemikern und Ingenieuren verbracht habe. Ich als Informatiker und Visualisierer war da etwas ein Exot, aber ich fand es sehr spannend zu sehen was in den entsprechenden Forschungsgebieten so aktuell passiert. Andererseits hab ich nach meinem Vortrag auch sehr positive Rückmeldung gekriegt, dass auch meine aktuellen Arbeiten als sehr interessant aufgenommen wurden.

Visualisierungsforschung ist toll. Man kann so viel machen und man sollte auch noch so viel machen. Das einzige Problem ist, es gibt oft Unmengen an technischen Herausforderungen die man lösen muss, bevor man sich an die Forschungsfragestellungen überhaupt herangetastet hat. Hier fließt viel Arbeit und Zeit in Software, die für die eigene Karriere als Forscher kaum etwas beizutragen scheinen. Das frustriert manchmal.

Vermutlich kann man mir (völlig zurecht) vorwerfen ein Windows-Fanboy zu sein. Warum auch nicht. Ich finde das OS einfach gut und Windows 8 überzeugt mich auch je länger ich es benutze, so auch wieder diese Woche:

Jede Software altert. Das ist (irgendwie) einfach so. Ob das jetzt bit-rot ist, oder ob man Software einfach nicht benutzen sollte, sei mal da hingestellt. Da sind auch Betriebssysteme keine Ausnahme. Zu Windows-95-Zeiten war man es ja noch gewohnt, dass man etwa alle zwei Monate sein System neu installiert hat. Und, bevor der erste Linux-Fanboy jetzt aufschreit, wir benutzen geschäftlich auch sehr viel Ubuntu. Das ist ja wirklich auch keinen Deut besser! Durch bloßes Nicht-Benutzen gehen hier Konfigurationen von Hardware kaputt. Eine echte Meisterleistung. Aber: Das geht jetzt nicht gegen Linux. Da sind alle System blöd.

Anfang der Woche wurde die Festplatten IO von meinem Windows 8 auf einmal abartig langsam! Ich habe nach dem Klicken auf eine Datei mehrere Sekunden gewartet bevor das entsprechende schon laufende Programm davon was mitgekriegt hat. Den Schuldigen hab ich nicht gefunden. (Das letzte was ich installiert hatte war ein Update für Java.) Ich hatte schon Angst es könnte tatsächlich der Vorbote für einen Hardware-Defekt sein. Aber, die Erfahrung lehrt: eigentlich ist es immer die Software.

Also hab ich das Windows 8 Feature „PC Auffrischen“ ausprobiert (Neuinstallation-Lite). Und ich muss sagen, ich bin total begeistert. Der Rechner fliegt jetzt wieder. Ok. Ich muss die Programme jetzt nach und nach wieder neu installieren und ich hab bei zweien vergessen meine Einstellungen zu sichern. Aber immerhin ist das System nun sauber. Ich find’s gut.

Ich habe mir dieses Wochenende „Arbeit mit nach hause genommen“. Die Implementierung einer Code-Bibliothek für Forschungsprototypen geht unter der Woche einfach nicht richtig voran. Da gibt es zu viele andere Arbeiten (E-Mails, Meetings, Anträge, Berichte, etc.) die mich in Anspruch nehmen.

Gestern habe ich dann die Quelltexte auseinander genommen und angefangen grundlegend umzubauen. Warum ist es nur so, dass man ein Programm zu mehr als 60% schreiben muss, bevor man weiß wie man es richtig machen muss? Jaja. Ich kenn die ganze Softwaren-Engineering Philosophie. Ich bin selber Softwaretechniker und weiß wie man es richtig macht, aber es klappt trotzdem nicht, wenn das geplante Programm zu komplex ist, bzw. man es zu komplex macht, weil man für die (schon bekannte) Zukunft vorbereitet sein will. Es ist wie eine Variante von Hofstadter’s law: Es gibt immer ein Problem mit einem Softwaredesign, selbst wenn man alle Probleme gelöst glaubt. Es wäre wirklich besser, wenn Software wirklich stinken könnte. Dann würde man früher merken, dass es in die falsche Richtung geht.

Die Arbeit an der TheLib geht weiter.

Eins habe ich in meiner bisherigen Arbeit als Entwickler von Forschungssoftware gelernt: große Softwareprojekte an Universitäten sind extrem schwierig durchzuführen. Hauptsächlich weil alle beteiligen Personen „Forscher“ sind und keine „Entwickler“. Es fehlt die Erfahrung, es fehlen die Prozesse und es fehlen die Strukturen um gemeinsame Ziele (Kompromisse) zu definieren. Gleichzeitig gibt es einfach Aufgaben, die durch kleine Programme nicht zu lösen sind. Als Ergebnis ist die meiste Software die im Rahmen von Forschungsprojekten an Universitäten entstehen nicht praktisch einsetzbar. Ein Zustand, mit dem ich mich nicht abfinden will.

Der Ansatz den wir mit TheLib verfolgen basiert auf der Idee von „Divide and Conquer“. Anstatt eine große Software zu entwickeln und zu warten die alles kann, konzentrieren wir uns auf kleinere Bestandteile der Software und steigern die Nutzbarkeit, Wartbarkeit und dadurch die Wiederverwendbarkeit dieser Komponenten. Die TheLib stellt Basisklassen zur Verfügung. Ich sehe das Projekt als „Ergänzung“ zu den bestehenden Projekten wie die STL oder BOOST an. Es ist keine Konkurenz und will auch keine sein. Darum achten wir auf eine extrem hohe Kompatibilität mit diesen Projekten.

Und, obwohl die TheLib in ihrem Ziel und Umfang recht bescheiden gehalten ist, macht sie uns schon sehr viel Arbeit. Naja. Aber das gehört dazu. Wenn es einfach wäre, dann könnte es ja jeder. ;-)

Da meine Festplatte unangenehm voll geworden ist, habe ich diese Woche eine neue Platte gekauft und eingebaut. Dabei ist mir wieder aufgefallen, wie ungern ich inzwischen an Computern herumbastele. Egal.

Mein Rechner hat als Motherboard das ASUS P8Z77-V, das ich übrigens nur in den höchsten Tönen loben kann. Aber, als ich jetzt meine neue Platte ansteckte und mein Windows gebootet hatte, tauchte eben diese neue Platte bei den Geräten zum sicheren Entfernen hinter dem entsprechenden Icon bei den Notification Icons auf. So ein Unsinn.

Nach etwas googlen kam raus, dass es am ASMedia-Controller liegt, der zwei der acht SATA-Ports steuert. Und ausgerechnet für den Controller kann man dieses Hot-Plug-Verhalten nicht im Bios einstellen. Es gibt im Netz dann einige Lösungsvorschläge, z.B. mit irgendwelchen Registry Hacks die per Scheduler bei Systemstart ausgeführt werden sollen, etc. Was ich im Netz aber nicht gefunden hatte, sondern was ich nach einigem Ausprobieren selber gefunden habe ist die „echte Lösung“. Man kann es einfach am Controller einstellen:

Gerätemanager > IDE ATA/ATAPI-Controller > Asmedia 106x SATA Controller > Eigenschaften > Policies

Was mich irgendwie stört, ist das diese Lösung nicht der erste Treffer bei Google war. …

In unserer Arbeitsgruppe läuft gerade die Diskussion über die Präsentation unserer Forschung und der Definition von Themengebieten für studentische Arbeiten (z.B. Themen für Bachelor-, Master- und Diplomarbeiten). Hierzu listet jeder Mitarbeiter sein persönlichen Forschungsinteressen und -schwerpunkte auf.

Hier sind meine:

  • wissenschaftliche Visualisierung
    • Kein Volumenrendering und keine Strömungsvisualisierung (das machen schon genug andere)
    • Visualisierung von partikelbasierten Daten, z.B. aus der Molekulardynamik (weiterarbeit des Themas meiner Dissertation, denn es sind noch genug Probleme und Fragen übrig)
    • Effizientes Rendering bei hoher Bildqualität
    • Auch neue und abstrakte visuelle Metaphern für besseres Begreifen der Daten
  • Visualisierung von dynamischen Daten
    • Nicht nur „Daten der klassischen wissenschaftlichen Visualisierung“ sondern auch abstrakte Daten aus der Informationsvisualisierung
    • Auch Daten aus hochdimensionalen Räumen (meist Räume mit „geometrischem“ Kontext, z.B. physikalische Phasenräume)
    • Visuelle Analyse von dynamischen Aspekten in statischen Darstellungen
  • Software Engineering für Visualisierungs-Forschungsprototypen
    • Für Publikationen entstehen immer nur Proof-of-concept-Prototypen, diese sind schnell und unsauber gecoded und können praktisch nicht gewartet werden
    • Für Forschungsschwerpunkte benötigt man oft umfangreichere Software
    • Größere Softwarepakete in der akademischen Welt scheitern sehr sehr häufig. Warum?

Natürlich interessiere ich mich darüber hinaus für fast alles. Aber irgendwie muss man sich ja fokussieren. Naja, die drei Schwerpunkte da oben sind so breit, dass ich mir nicht sicher bin, ob man das wirklich als Fokus bezeichen darf. Egal. Ich mach es trotzdem. Das ist mein Forschungsfokus.

Heute will ich mal kurz über das Projekt sprechen in dem ich nun seit fast einem Jahr an der TU Dresden arbeite: die Nachwuchsforschergruppe VICCI

VICCI steht für „Visual and Interactive Cyber-physical systems Control and Integration“.

Kernelement sind die Cyber-Physcial Systems (kurz: CPS). Fragt man zehn Leute was CPS sind, dann kriegt man zehn Antworten. Es ist nicht so ganz klar. Hier nun meine Meinung zu dem ganzen:

CPS sind „smarte“, (semi-)autonome Systeme (Netzwerke) aus Elementen (embedded Systems) die sowohl eine reale Bedeutung haben (z.B. Sensoren oder Aktoren) sowie eine virtuelle (Abbildung von Daten in Software). Die vernetzen Elemente zusammen bilden ein System, welches selbständig optimiert oder adaptiert und hierbei Prozesse in der realen Welt durchführt oder unterstützt.

Ok. Die Beschreibung macht das jetzt auch nicht wirklich klarer. Vielleicht so: CPS ist „Automatisierung 3.0“. Während klassische Automatisierung einfache Regelkreisläufe zur Steuerung benutzt oder lediglich eine Verbedienung für den Benutzer darstellt, können CPS komplexe Steuerungen selbständig optimieren. Typische Schlagwörter sind „Smart Factory“, „Smart Grid“, „Smart Office“, „Smart Home“, etc. Es geht immer darum, dass die Umgebung „mitdenkt“.

In VICCI verfolgen wir das Szenario des „Smart Home“, sprich eine Wohnung die mitdenkt und dem Bewohner hilft. Beispielsweise in dem Transport- und Suchaufgaben erledigt werden. Unser CPS besteht aus Sensoren und Aktoren. Die Sensoren sind in einem Laborraum verbaut, der die Wohnung repräsentieren soll. Hier sind es Temperatursensoren, Kameras, Lichtsensoren, Feuchtesensoren, etc. Als Aktoren haben wir Roboter angeschafft die wir als beispielhafte Service-Roboter nutzen werden. Ihr erinnert euch an I, Robot. Wir (Forscher) arbeiten daran ;-)

Mein Arbeitsbereich innerhalb der Gruppe ist (neben Koordinations- und Verwaltungsaufgaben) die Visualisierung des CPS, genauer, der interne Zustand des CPS. Ich erzeuge Darstellungen für die Analyse. Etwas plakativer: „Was denkt das CPS eigentlich gerade?“ ist die Frage die meine Visualisierung angehen soll. Erste Ergebnisse sind da, aber gerade noch nicht veröffentlicht. Sobald es was neues gibt, werde ich es natürlich auch hier vorstellen.

Die Windows PowerShell (liebevoll auch MachtMuschel genannt) ist eigentlich sehr nett. Natürlich nöhlen die Linux-Nutzer dass die sowas schon immer hatten und dass es ja wohl nix besonderes sei. Das leugnet ja auch keiner, aber trotzdem kann man sich an der PowerShell doch erfreuen. :-)

Heute wieder ein kleines Problem: Ich brauch einen einfachen Hex-Dump einer Datei:

PS >  $str = ""; $cnt = 0; get-content -encoding byte C:\pfad\zur\Datei.txt | foreach-object { $str += (" {0:x2}" -f $_); if ($cnt++ -eq 7) { $cnt = 0; $str += "`n"; } }; write-host $str

Ist nur bedingt elegant, das gebe ich gerne zu, aber es erfüllt seinen Zweck voll und ganz. Und ist irgendwie auch nett …