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.

 

In den letzten 12 Jahren habe ich dewarim.de wiederholt komplett neu gestartet - und jedes Mal gehofft, es wäre das letzte Mal. Ob die aktuelle Version länger hält?

Immerhin setze ich nun Joomla ein - ja, das ist in PHP geschrieben... - früher hätte ich gefragt "Wie konnte ich nur so tief sinken...". Aber nachdem ich mehrere Programme zur Verwaltung meiner Webseiten geschrieben habe bzw. zwischenzeitlich auch Plone eingesetzt habe, bin ich zu dem Schluß gekommen, daß ich lieber ein gutes Web-CMS einsetze als das Rad selbst noch einmal neu zu erfinden.

Das Problem mit dem Neustart (modern: "relaunch") ist: danach zeigen die URLs zu den bisherigen Inhalten alle ins Nichts. Und Suchmaschinen aktualisieren ihren Index nicht so häufig, wie man denkt - ich habe im Log gerade einen Bot gesehen, der nach Seiten fragte, die 2005 existierten. Wenn wir in einer gläsernen Gesellschaft leben würden, könnte ich das Problem einfach durch einen Link auf das Staatliche Archiv Systemrelevanter Informationen (St.ASI) aller Bürger lösen, das jegliche Aktivität (und: Inaktivität) auf ewig archiviert. Aber dann kämen bestimmt gleich die Klagen "Och nö, da muß ich immer den Bundestrojaner updaten, der ändert sich häufiger als Steam!" und "Ich finde das voll unfair, daß meine Webcam mich dann filmt, wie ich über deine Texte lache - das Speichern des Films in der Bundeswolke geht voll zu Lasten meines Drosselkom-Volumens!"

Also, das mit den alten Seiten ist schwierig - ich könnte sie natürlich alle wieder rekonstruieren. Tagelang tief in den Archiven buddeln, bis ich die Perlen meines kreativen Schaffens vom Schlick alter HTML-Konstrukte befreit habe. Aber ... manchmal ist es vielleicht auch besser, Dinge ruhen zu lassen. Wie die Sache mit Paracetamol und den Todeszahlen... - ich hatte ein Programm geschrieben, das automatische Spielerlisten zu einem MMORPG (Dark Age of Camelot) erstellte - inklusive der Info, wie oft eine Figur gestorben ist. Und Google schickte Leute für "Paracetamol Tod" vorbei, die vermutlich nicht wissen wollten, wie oft der Spieler "Paracetamol" sein virtuelles Leben aushauchte...

Oder die Sache mit den Leuten, die wegen "Mädchen, Rohrstock, Züchtigung" vorbei kamen und die Lebenserinnerungen eines Pastors aus dem 19. Jahrhundert fanden. Nun ja.

Aber ... so ein paar Texte gibt es vielleicht, die ich noch aus der Versenkung holen sollte. Umzugshelfer, Best of Adventskalender ... schließlich sollen die Bots, die meine Seite lesen, auch Inhalte finden. Ok, was ein Programm, das nach Stellenangeboten sucht, mit meinem Rezept zu einem Mais-Bohnen-Auflauf will - wer weiß. Do web spiders dream of electric cows?

 

Subcategories

Joomla templates by a4joomla