dewarim.de

Vergangenen Samstag war ich nach sehr langer Zeit (~20 Jahre...) auf einem Rock-Konzert und zum ersten Mal auf einem richtig großen ... genauer gesagt auf dem Knock Out Festival 2013 in Karlsruhe, mit über 6000 Besuchern nach eigenen Angaben das größte Hallenfestival in Deutschland.

Die erste Band (Kissin Dynamite) habe ich leider aus Zeitgründen nicht gesehen. Dafür die meisten Songs von Pink Cream 69, die soliden Hard Rock / Metal spielten. Ich mag das ja, wenn man die Aktionen der einzelnen Musiker auf der Bühne dem Sound, der aus den riesigen Boxen kommt, dann auch irgendwie zuordnen kann. Das war im weiteren Verlauf des Abend nicht immer der Fall.

Danach folgte das erste Highlight des Abends: Lordi. Buchstäblich bekannt aus Funk und Fernsehen, begeisterten sie laut und mit der guter & unterhaltsamer Bühnenshow die Masse :) - Mr Lordi auch als Weihnachtsmonster, das zum Ende nach den Klassikern (Hard Rock Halleluja, Devil is a loser u.a.) Geschenke in die Menge warf. Sehens- und Hörenswert.

Dann folgte Saltatio Mortis, die in Karlsruhe ein Heimspiel hatten - und von denen ich mir nach den kreativen Videos (Wachstum über alles und Früher war alles besser) mehr erhofft hatte. Ok, laut waren sie. Nach 2-3 Songs konnte ich dann auf einem Ohr nicht mehr so viel hören und bin dann erstmal auf die Empore gegangen... Aber laut allein reicht halt nicht.

Zwischendurch wieder eine längere Umbaupause - und die Menge strömte zum Bieraustausch: Literbecher abgeben, Wasser ablassen, nachfüllen. ... Nächsten Mal sollte ich vielleicht nicht gerade mit dem Auto hinfahren ;). Das Catering war duchaus ok, man mußte nicht lange warten auf seine Getränke. Die Pizzalappen waren so lala, die Brezeln ok. Ach ja, die Garderobe war eindeutig überfordert - als ich reinkam, machten die gerade zu "Nein, wir haben keinen Platz mehr". Vermutlich haben die Veranstalter gedacht "Rock-fans, die tragen sowieso dichtes Fell und legen das nie ab" ... aber dann gab's doch noch eine Lösung, so daß die Fans sich ihrer Winterkleidung entledigen konnten. Leider haben einige Leute sich nicht gleich ihrer Kippen entledigt und dann in der Halle geraucht.

Dann kam Doro Pesch, als Teil ihrer 30-Jahre-Tour. Wow, so viel Energie mit fast 50 Jahren und eine Bühnenpräsenz und -show - überragend. Neue und alte Songs, und zum Mitsingen dann "All we are", eines der ersten Metal-Stücke, mit denen ich damals Ende der 80er / Anfang 90er der härteren Musik näherkam. Und mit 6000 Menschen das unerwartete "Breaking the Law" (Judas Priest) singen - cool. Zumal ich das gerade in Rocksmith 2014 übe ;)

Danach war es schon spät, und die vielen Sabaton Fans konnten es kaum noch erwarten und kamen dann auch voll in Bewegung, selbst wenn der vom Bier klebrige Hallenboden mit der Schwerkraft eine unheilige Allianz einging, um die Besucher auf dem Boden zu halten. Sabaton haben ja mit Carolus Rex und dem noch bekannteren Primo Victoria erstklassige Metal-Songs im Programm. Leider hatten sie das Bedürfnis, Saltatio Mortis in Sachen Lautstärke zu übertrumpfen, so daß ihr musikalisches Talent in einer Welle aus Lärm ertrank. Vielleicht bin ich ja zu alt für harte Live-Musik ... andererseits: die Besucher waren altersmäßig gut zwischen 20 und 60 verteilt, und ich war nicht der einzige, der bei Sabaton auf die Empore ging ;)

Insgesamt war's gut, sehr laut, aber gut. Und auf jeden Fall ein Erlebnis. Außerdem weiß ich jetzt, warum einige Leute den ganzen Abend auf ihre Smartphones schauten, während sie die das Geschehen filmten: wenn die Statur nicht ausreicht, um über die Köpfe zu schauen, dann hilft's, die kurzen Ärmchen vom Bierbauch in die Höhe zu heben um wenigstens per Handy die Band live sehen zu können :)

Für's nächste Jahr ist Gotthard angekündigt - mal schauen, wer noch dazu kommt ...

Da ich nach längerer Zeit nun wieder auf der Suche nach neuen Aufgaben bin, stellt sich für potentielle Auftrags- und Arbeitgeber die Frage, "Was hat er denn bisher gemacht?" - darum hier eine Übersicht über einige bisherige Projekte.

In den letzten 5,5 Jahren habe ich viel Individualsoftware entwickelt, also Programme komplett nach Kundenwünschen erstellt. Leider bedeutet das auch, daß einiges an Code nur direkt beim Kunden läuft, die Projekte mithin nicht öffentlich sind. Über diese kann ich natürlich nur anonymisiert und unter Berücksichtigung der jeweiligen Geheimhaltungsvereinbarungen berichten  (Andere Projekte sind im Open Source-Bereich angesiedelt - da kann ich natürlich auch den Code und die Webseiten zeigen).

Validierung von S1000D-Datenmodulen

Eine in Grails geschriebene Webapplikation, die hochgeladene Datenpakete auf die Einhaltung von Business Rules prüft,  Fehler teilweise korrigiert und am Ende die einzelnen Probleme an der jeweiligen Stelle im XML-Code der Datenmodule im Browser darstellt.

Technologien: Grails, XPath (mit Saxon-SA), Perl,

Anforderungen: Verteiltes Team, iterative Entwicklung, Umsetzung von Corporate Design-Vorgaben.

Mein Anteil: Mitarbeit an der Konzeption, das Projekt-Management und die Implementierung des größten Teils des Server-Codes. Die Business-Regeln wurden gemeinsam mit dem Team umgesetzt, das Design vom Webdesigner entworfen.

Open Source ECMS Cinnamon

Cinnamon ist ein Enterprise CMS mit einem Schwerpunkt auf der Verwaltung von technischer Dokumentation. Es besitzt einen Desktop-Client (.NET) und einen Server (Java) - für letzteren habe ich recht früh die Verantwortung  übernommen und bin seitdem Hauptentwickler und -maintainer dieses Projektteils. Cinnamon ist von "großen" CMS-Systemen wie EMC documentum inspiriert - unterscheidet sich aber von den großen durch den unschlagbaren Preis, die bessere Performance und der noch beherrschbaren Komplexität.

Technologien bis Version 2: Java 6, JPA 2, Lucene, Hibernate, Grails für Admin-Oberfläche, MSSQL, PostgreSQL

Technologien Version 3: Java 7, Grails 2.2, Lucene, Hibernate, MSSQL, PostgreSQL, JavaScript, jQuery, AJAX, gPars (Actors für Hintergrundprozesse)

Anforderungen / Features

  • Extrem customizable für proprietäre und Open Source-Kundenwünsche - an vielen Stellen können kundenspezifische Erweiterungen integriert werden, die das Verhalten einzelner Aspekte verändern.
  • eigene Workflow-Engine (z.B. für Review-Workflows)
  • semantische Suche mit Lucene
    Ein Beispiel für mögliche Anpassungen sind spezielle Index-Klassen, die Bauteilnummern in ein allgemeines Format bringen, das die Suche nach Produkten mit genau diesen Bauteilen ermöglicht (also deutlich über bloße Volltext-Suche hinaus)
  • umfangreiche Rechteverwaltung
  • Lifecycle-Management inklusive Logging von Lifecycle-Änderungen und der Möglichkeit, eigenen Code beim Wechsel von Lebenszyklen auszuführen.
  • Übersetzungsmanagement (liegt Version 4 des Handbuches mit den deutschsprachigen Schautafeln auch auf Englisch vor? Dann kann die englische Version als Pivot-Sprache für die Übersetzung ins Portugiesische verwendet werden.)
  • Unterstüzung für modulare Dokumentation, z.B. DITA

Mein Anteil: Konzeption, Umsetzung und Support für den Cinnamon Server, Entwicklung von kundenspezifischen Erweiterungen (Workflows, ChangeTrigger [Code, der konfigurierbar bei bestimmten API-Aufrufen ausgeführt wird], Lifecycles, Indexklassen)

Code: Cinnamon auf Github

Projektplanung von verteilten Dokumentationsprojekten (Automotive)

Die Technische Dokumentation für ein Produkt erfolgt oft an unterschiedlichen Standorten und besteht aus einer Vielzahl von Modulen. Ein Kunde benötigte eine Webapplikation zur Kalkulation der Arbeitsumfänge und zur Verwaltung der darauf folgenden Projekte. Ziel war die Ablösung einer Excel-Applikation hin zu einer modernen Weboberfläche für gleichzeitigen Zugriff durch Projektmanager und Redakteure.

Anforderungen:

  • Mehrere Standorte mit unterschiedlichen Stundensätzen mussten berücksichtigt werden
  • Import von Excel-Daten in die Datenbank, mit Update der betroffenen Projekte
  • Rechteverwaltung für Admins, Projektmanager, Redakteure
  • Nachvollziehbarkeit von Change Requests durch den Auftraggeber des Kunden (um ausufernde Projekte zu vermeiden, bei denen nachher nicht klar ist, wann und wie es zu Verzögerungen kam bzw. welcher Umfang noch in der Kalkulation enthalten ist)
  • Grafische Darstellung der Anlaufkurven und der Fertigstellung der einzelnen Projektteile (mit jFree)

Technologien: Grails 2, Hibernate, jQuery, Twitter Bootstrap

Mein Anteil: Konzeption, Spezifikation & Kalkulation, Umsetzung

Projektplanung und -verwaltung von Dokumentationsprojekten (Aerospace)

Eine Webapplikation, bei der der Auftraggeber Datenmodule zum Download bereitstellt, die ein Subunternehmer dann herunterlädt und bearbeitet, um sie wieder hochzuladen. Daraufhin erfolgt eine automatische Prüfung der Daten durch proprietäre Software des Auftraggebers. Der Subunternehmer wird über das Ergebnis informiert, kann die Ergebnisse auf der Webseite einsehen und dann Nachfragen stellen, zusätzliche Daten herunterladen (z.B. weitere Konstruktionszeichungen oder Style Guides) und dann eine neue Version verfassen für eine weitere Iteration des Workflows.

Anforderungen

  • Integration von Software des Auftraggebers (Input zur konfigurierbaren Prüfung bereitstellen, Output in Webpplikation übernehmen)
  • Alles muß aus Sicherheitsgründen geloggt werden - es muß ein komplettes Log aller User-Aktionen erstellt werden. (Aerospace-Technik ist generell extrem in dieser Hinsicht - bis zu dem Techniker, der jede Schraube am Flugzeugrumpf prüfen und auf seiner Liste abhaken muß [und haftbar gemacht werden kann, wenn das Flugzeug wegen seiner Unachtsamkeit runterkommt])
  • Workflow muß mehrere verschiedene Rollen (Projektadministratoren, Redakteure, Quality Management) nicht nur rechtemäßig sondern auch von den unterschiedlichen Funktionen berücksichtigen.

Technologien: Grails 2, Hibernate, MS-SQL Server

Mein Anteil: Mitarbeit in Konzeption in Absprache mit dem Kunden; Angebotserstellung und Umsetzung

Verwaltungssystem für Verbände und Vereine

Das Verwaltungssystem dient der Organisation der täglichen Aufgaben in kleinen bis mittleren Organisationen, wie z.B. dem Kreisverband einer Partei. Dies ist ein aktuelles Nebenprojekt, das zur Zeit bei einem Kunden intern getestet wird.

Anforderungen / Features

  • Alle Objekte im System müssen verschlagwortet werden können - dies gilt für Kontakte, Dokumente, Dateien, Termine, Newsletter.
  • Alle Objekte im System müssen verknüpft werden können - Kontakte mit Dokumenten und Terminen, Dateien mit Dokumenten, Dokumente mit Newslettern (werden als Anhänge mitgeschickt) etc.
  • Alle Basis-Objekte haben Berechtigungen für ihre Sichtbarkeit im System. Dies dient dem Datenschutz gerade hinsichtlich der Kontaktdaten.
  • Verteiler- und Newsletterfunktion für Emails, die abhängig von den konfigurierten Interessen der Abonnenten individuell beim Versand zusammengestellt werden (d.h., ein Empfänger bekommt nur Infos zu den Themen und Regionen, die ihn oder sie interessieren)
  • Umsetzung eines festen Webdesigns mit sehr detaillierten Vorgaben
  • Import von CSV-Daten (Kontakte)
  • Export von Teilnehmerlisten

Technologien: Grails 2, Hibernate, PostgreSQL, jQuery, AJAX, CSS

Mein Anteil: Kompletter Re-Write eines nicht mehr gewarteten Perl-Catalyst-Projektes mit MySQL als Backend und deutliche Erweiterung des Funktionsumfangs, weitgehende Migration der disparaten Altdaten des aktuellen Testkunden in das neue System.

Little Goblin

Ein Browserspiel-Framework in Grails - ongoing project. Noch lange nicht fertig, und wird auch nur nebenbei weiterentwickelt. Ist mittlerweile ein Grails-Plugin, das also auch von anderen Entwicklern verwendet und erweitert werden kann.

Anforderungen / Features

  • Tech-Trees
  • Asset-Management (Lizenzen und Artists für Bilder)
  • Quest-System
  • Gilden
  • Crafting
  • Französische Übersetzung
  • Hilfestellung für nicht-Grails-kundige Programmieranfänger; Bereitstellen einer Ubuntu Entwicklungs-VM mit IntelliJ-IDEA
  • Erstellen von Doku-Videos ;)

Mein Anteil: Konzeption, Umsetzung. Zeitweilig unterstützt durch drei französische Studierende (Webdesign, franz. Übersetzung), die LittleGoblin als Studienprojekt verwendet haben.

Einleitung

Klingt nicht so spannend, ist es aber. S1000D ist ein (3500-Seiten dicker) Standard zur modularen Dokumentation von Aerospace und Military-Projekten. Modular heißt, da sitzt kein einsamer Redakteur und dokumentiert mal so mit MS-Word einen A380, bis er das als PDF abgeben kann. Sondern alles, was da beschrieben wird, wird auf viele tausend Datenmodule (XML) verteilt, in denen die Struktur, die Reparatur, die Ersatzteile, die Lerninhalte und vieles mehr beschrieben wird - und die natürlich extrem untereinander verlinkt sind. Das ist so komplex, daß es dafür eigene Datenbanken gibt -  Stichwort Common Source Database (CSDB). Aber bevor ein Zulieferer seine Datenmodule einchecken / hochladen kann, sollte er sicher sein, daß diese auch formal korrekt sind. Und da hat jeder Flugzeugbauer oder jede Armee eigenen Vorschriften - in Buchstärke.

Es gibt sogar einen eigenen Englisch-Dialekt (Simplified Technical English), der nur ganz bestimmte Substantive, Verben und grammatikalische Konstrukte zulässt - damit auch nicht-Muttersprachler eine Boeing 747 reparieren können, ohne durch umfangreich verschachtelte Satzungetüme verwirrt die Hydraulik- mit der Treibstoffleitung zu verwechseln.

Die Aufgabe

Wenn ein Zulieferer fehlerhafte Datenmodule abliefert, müssen diese nachbearbeitet werden, was teuer ist und die Abgabefristen gefährden kann. Die Software sollte die Einhaltung der ca. 100 Businessregeln überprüfen und darüber hinaus auch Fehler korrigieren, die beim Checkout aus der CSDB des Zulieferers entstanden waren und für Probleme beim Import in das System des Abnehmers gesorgt hätten.

Umsetzung

Ich habe über einen Zeitraum von mehreren Monaten in einem kleinen Team mit internen und externen Entwicklern eine Grails-Anwendung erstellt, die eine Weboberfläche zum Upload der Daten und die Darstellung der Probleme in syntax-highlighted XML mit Protokollfunktion beinhaltete.

Technologien

  • Grails 1.x
  • XPath für die Regeln
  • MySQL als Datenbank
  • Groovy für programmatische Prüfungen und Fehlerkorrektur.
  • Java 5
  • Saxon XML Bibliothek (kommerzielle Variante)
  • Automatische Integration Tests (in Perl, Test::WWW::Mechanize)
  • Basisfunktionalität für Konformitätstests für Simplified Technical English (STE)

Herausforderungen

  • verteiltes Team (meist aus dem Home-Office)
  • häufig neue Kundenanforderungen und Änderungswünsche
  • mehrere teils willkürliche Deadlines
  • S1000D ist komplex
  • STE prüfen ist noch viel komplexer

Notizen

Eine Analyse von CGM-Dateien (Grafik-Standard) und eine Prüfung der Texte auf Einhaltung der STE-Regeln waren geplant, aber wurde beides nur im Prototypen-Stadium umgesetzt. (CGM-Prüfung wurde später als eigenes Projekt von einem Kollegen umgesetzt).

Mein Anteil: Mitarbeit an der Konzeption, das Projekt-Management und die Implementierung des größten Teils des Server-Codes. Die Business-Regeln wurden gemeinsam mit dem Team umgesetzt, das Design vom Webdesigner entworfen.

Seit einiger Zeit arbeite ich an einem gemeinsamen Projekt mit Andreas Sommer: ich schreibe ein Verwaltungssystem für Vereine, Verbände und Organisationen aller Art, basierend auf dem Grails-Framework.


Ziel ist in der ersten Ausbaustufe die effiziente Verwaltung von Kontakten, Terminen, Dateien, Dokumenten und anderen Informationen. Mittlerweile ist das Projekt, das seinen Ursprung in einer Perl-basierten Catalyst-Webapplikation von Jonas Pasche hatte, als Beta-Version verfügbar und wird vom ersten Kunden auf Herz und Nieren getestet.

Einen Kontakt im Verwaltungssystem anlegen

Kontakte können einfach erfasst werden, wobei außer dem angezeigten Namen alle Einträge optional sind.

Kontakt mit allen Daten

Einer Person oder Firma können Adressen und andere Kontaktinformationen hinzugefügt werden, und diese kann - wie alle anderen Objekte im Verwaltungssystem auch - mit frei definierbaren Kategorien verschlagwortet werden. Die Kategorien sind gruppiert, um die Übersichtlichkeit gegenüber einer einzigen großen Tag-Cloud zu verbessern.

Zusätzlich können alle Objekte miteinander verknüpft werden. Beim dargestellten Kontakt ist dieser mit dem "Projekt Weltfrieden" verbunden.

Ein Projekt (Dokument) im Verwaltungssystem

Projekte sind Dokumente, die von mehreren Autoren bearbeitet werden können. Einsatzgebiet sind z.B. Sitzungsvorlagen und Geschäftsbriefe. Als Editor kommt TinyMCE zum Einsatz. Das Layout der Dokumente kann in mehrere Bereiche gegliedert werden, so daß auch 2 oder 3-spaltige Layouts umgesetzt werden können. Selbstverständlich können auch Projekte kategorisiert und verknüpft werden.

 Ein Termin mit Verknüpfung

 Termine sind weitgehend selbsterklärend ... und gewähren einen schnellen Überblick über Zu- und Absagen.

Hinter dem Punkt Email verbergen sich Verteiler und Newsletter, die themen- und regionenspezifisch von mehreren Anwendern erstellt werden und dann an Kontakte und Benutzer des Systems versendet werden können. Doch dazu mehr in einem späteren Artikel.