Software-Architekt, OpenSource-Experte, SCM, Embedded-Linux. DevOps / Build-Engineering, Custom Groupware (Zimbra)
Aktualisiert am 16.09.2019
Profil
Freiberufler / Selbstständiger
Verfügbar ab: 21.08.2019
Verfügbar zu: 100%
davon vor Ort: 100%
Embedded
Kernel
Linux Treiber-Programmierung
Zimbra
Linux
Deutsch
Muttersprache
Englisch
praxistauglich

Einsatzorte

Einsatzorte

Deutschland
nicht möglich

Projekte

Projekte

(DevOps) Vollautomatisches Deployment von Eclipse /Sigasi-Studio

Der Kunde setzt verschiedene Eclipse-Versionen und Eclipse-basierte Tools wie zB. Sigasi Studio
ein. Diese galt es vollautomatisch auf verschiedene Zielsysteme auszurollen. Jegliche manuelle
Schritte gilt es hier zu beseitigen, um unnötige Störung der Entwickler zu elimieren und eine jederzeit vollständig reproduzierbare Arbeitsumgebung zu gewährleisten.

Ein Hauptproblem bei Eclipse liegt hier darin, daß die Installation und Updates auf manuelle
Durchführung und Ablage innerhalb des Home-Verzeichnis der einzelnen Nutzers ausgelegt ist.
Dabei werden uA. auch User-Configuration mit Programmcode vermengt - eine saubere Trennung,
wie zB. in der Unix-Welt seit Jahrzehnten bewährt, fehlt hier. Dies führt zu fehlender Reproduzierbarkeit und erheblichen Störungen, insbesondere beim Parallelbetrieb verschiedener
Versionen.

Bei Sigasi-Studio kam erschwerend hinzu, daß dieses lediglich mittels interaktivem Installer
zur Online-Installation angeboten wurde. Diese ist aber im Netzwerk des Kunden aufgrund von
Sicherheitsvorgaben nicht möglich.
Zur Lösung des Problem habe ich folgende Maßnahmen ergriffen:

  • Reverse-Engineering des Deployment-Prozess und Struktur der P2-Repositories (die offizielle
    Dokumentation ist äußerst mangelhaft)
  • Scripte zur automatischen Spiegelung von P2-Repositories ohne GUI nebst Ablage in Git
  • Scripte zum automatischen Ausfiltern von Komponenten, die bereits im Standard-Eclipse
    enthalten sind (Sigasi bietet lediglich ein Bundle aus Eclipse und Sigasi-Erweiterungen an)
  • Analyse der Abhängigkeiten und tatsächlich benötigter Komponenten / Versionen
  • Scripte/Makefiles zur Generierung eines finalen Installations-Image und Debian-Metadaten.
  • Vollautomatisch Build-Pipeline via Jenkins und docker-buildpackage, inclusive Generierung
    direkt installierbarer APT-Repository.
  • Einbindung der APT-Repository in Ansible-Scripte für die verschiedenen Zielsysteme.

Tools+Spachen:

Debian, APT, Packaging, Ansible, Eclipse, Jenkins, Sigasi-Studio, Docker-Buildpackage, Docker


(DevOps) Docker-Buildpackage: Build-Automatisierung für Debian-/Ubuntu-Pakete

Das Aufsetzen einer Build-Automation für Debian-/Ubuntu-Pakete (zB. via pbuilder oder buildd)
ist mit einigem Aufwand verbunden. Dies hängt vorallem mit der historischen Entwicklung, aber auch komplexen Anwendungszenarien wie zB. der Pflege kompletter Distributionen (mit vielen tausenden Paketen) zusammen.

Für einfachere Szenarien, wie die Pflege von Zusatz-Repositories für existierende Distributionen,
zB. Backports/Updates, zusätzliche Software, kundenspezifische Anpassungen, kommerzielle
Produkte, etc. der Komplexität exitierender Tools nicht erforderlich.

Docker-Buildpackage schafft hier unter Einsatz moderner Technologien wie Docker und Git eine
sehr einfache Alternative mit minimalem Configurations-Aufwand.

Nach initialer (geringfügiger) Configuration der Zielplattform ist der komplette Build-Prozess
aus dem Quelltext heraus, bishin zur installierbaren APT-Repository, abgewickelt. Das Tool erzeugt
dabei auch vollautomatisch die benötigte Build-Umgebung und fährt den Build-Prozeß
isoliert in einem Docker-Container ab.

Auch die Integration in CI, wie zB. Jenkins, gestaltet sich trivial.

Tools+Spachen:

Debian, APT, dpkg, Docker, docker-buildpackage, CI, Jenkins, DevOps


Beratung/Entwicklung Embedded-Linux/IOT Diagnose - Bahntechnik, Hochsee-Schiffahrt, Kraftwerke

Der Kunde ist Hersteller von Sensorik und Meßtechnik. Das Projekt befaßte sich mit der OSPlattform
und SW-/System-Architektur eines Telemetrie-/Diagnose-Geräts (vorrausschauende Wartung) für rotierende Kraftmaschinen, insbesondere große Motoren und Turbinen. Es wird vorallen in den Bereichen Bahntechnik (Lokomotiven), Seefahrt (Schiffsmotoren-/Aggregate), Kraftwerke (zB. Gas-Turbinen) eingesetzt, um frühzeitig etwaige Maschinen- Schäden, lange vor einem Ausfall, erkennen zu können.

Wichtige Anforderungen sind hier uA. hohe Robustheit/Ausfallsicherheit und lange Lebenszeit
unter rauhen Bedingungen (zB. auf hoher See, in Kraftwerken, etc) geringer Wartungsaufwand,
Umgang mit schlechten Datenverbindungen. Hinzu kommen vielfältigste kundenspezifische
Anpassugen.

Kernaufgaben im Projekt waren uA.:

  • Einführung von auf Langzeitpflege und großeVariantenvielfalt ausgelegte SCM-Techniken
  • robuste vollautomatische Build-/Deployment-Prozesse (devops)
  • Kernel-Portierung / Treiberentwicklung für div. Controller (uA. Duagon IONIA)
  • Konsolidierung der HW-Ansteuerung auf Linux-Standard-Subsysteme (zB. IIO)
  • Beratung zum Configurations- und Lizenzmanagement
  • Portierung von nodejs für embedded systems
  • Beratung zur SW-Architektur und Entwicklungs-Prozessen
  • Beratung zur Chipset-Auswahl / HW-Architektur für Custom Boards
  • Evaluation div. HW (zB. NI cRIO) auf SW-technische Nutzbarkeit für GNU/Linux-Systeme

Tools+Spachen:

C/C++, Linux-Kernel, PtxDist, Nodejs, Barebox, ADC, Git, RS485, CAN, RS232, Duagon IONIA, MVB, cmake, javascript


Kernel / BSP für Duagon IONIA (Bahntechnik / IOT)

Für einen Kunden aus der Bahntechnik wurde ein neues Linux-BSP für Duagon IONIA Maschinen
entwickelt. Die mitgelieferte/vorinstallierte Software war für den Anwendungsfall (als generischen
Industrie-Rechner anstatt MVB-Controller) nicht geeignet, uA. wegen:

  • sehr veraltet (uA. viele fehlende Kernel-Features), sehr geringe SW-Auswahl
  • fehlende Reproduzierbarkeit aus dem Sourcecode heraus (Duagon selbst konnte das BSP
    nicht mehr komplett recompilieren, geschweige denn Komponenten wie zB. Kernel upgraden)
  • proprietäre Treiber-APIs, die umfangreiche HW-spezifische Anpassungen in den Anwendungen
    nötig machen - statt Standard-APIs (zB. IIO)
  • zudem nur auf single-process / root only ausgelegt ? sehr problematisch bzgl. Stabilität
    und Sicherheit
  • keine robusten / vollautomatischen Deployment-Mechanismen (Paketmanagement etc.
    fehlt)

Das Projekt beinhaltete uA:

  • Portierung des aktuellem Mainline-Kernels (4.x) für das IONIA CPU-Modul (Treiber, Devicetree,
    Config, ...)
  • Kernel-Treiber: backplane/serial ports, RPC, DIO, LOG, IO, I701, I202, I012, IIO backend,
    etc.
  • Basis-System / BSP (ptxdist-basiert)
  • Factory-Tools
  • Beratung/Schulung zu IIO

Tools+Spachen:

C/C++, Linux-Kernel, PtxDist, ADC, Git, CAN, RS232, Duagon IONIA, MVB, cmake


HW-Anforderungen und Embedded-Linux BSP (Bahntechnik / IOT)

Für einen Kunden aus der Bahntechnik wurde ein neues Mainboard nebst Linux-BSP entwickelt.
Das Gerät dient der Messung von Rotationsmaschinen (zB. große Dieser-Motoren) zwecks
Diagnose und vorrausschauender Wartung.

Das Projekt beinhaltete uA:

  • HW-Systemanforderungen
  • Spezifikation der Schnittstelle zwischen CPU und ADC-Baugruppe/FPGA
  • Anpassung von Kernel und Bootloader
  • BSP und Build-Umgebung
  • Treiber-Entwicklung
  • Factory-Tools

Tools+Spachen:

C/C++, Linux-Kernel, Barebox, PtxDist, ADC, Git, CAN, RS232


devops: Vollautomatisches Deployment virtueller Entwicklungsumgebungen

Für einen Sensorik-Hersteller wurde das Deployment virtualisierter Entwicklungsumgebungen
unter GNU/Linux (Debian / Ubuntu) vollständig automatisiert. Diese werden sowohl als VMImages,
Docker-/LXC-Container als auch direkt in vorhandene Systeme installiert.

Hierbei wurde auch die Deployment zahlreicher kommerzieller Software, welche sonst manuelle
Installation via GUI erfordert, vollständig automatisiert.

  • vollautomatischeVMProvisionierung / Image-Erzeugung viaVagrant, Integration in ESXIUmgebung, Integration in Win7 Desktop-Umgebung des Kunden
  • vollautomatisches SW-Deployment und System-Configuration via Ansible
  • Deployment/Provisionierung von Multi-User Workstations / VNC-Servern
  • Build-Prozesse und automatisches Testing via Jenkins CI
  • Archivierung in Artifactory und Git-Repositories
  • Paketierung diverser Zusatz-SW für APT (VTK8, Sigasi Studio, Vivado, ...)
  • Lizenz-Prüfung (zB. Einhaltung div. FOSS-Lizenzen)

Vom Kunden eingesetzte kommerzielle Software läßt sich von Haus aus nicht vollautomatisch
und reproduzierbar via Paketmanagement installieren, sondern erfordern aufwändige manuelle
Installation via GUI. Zuweilen verlangt der GUI-Installer auch Internet-Zugriff oder erfordert
imensen temporäten Speicherplatz (zB. Vidado: über 30 GB!), was in der gegebenen Kunden-
Umgebung nicht möglich war.


Hier war zuweilen tiefergehende Analyse/Reverse-Engineering nötig, um einen vollautomatischen
und hinreichend performanten Installationsprozess zu entwickeln.

  • Xilix Vivado
  • Sigasi Studio
  • Sysgo PikeOS, Codeo
  • MentorGraphics Modelsim, Questa
  • Eclipse

Tools+Spachen:

Debian, APT, Ansible, Vagrant, Jenkins, ESXI, Docker, Vivado, Modelsim, Questa, PikeOS, Codeo, Eclipse, Sigasi


Beratung/Entwicklung Embedded-Linux Gebäudetechnik

 

Der Kunde ist internationaler Hersteller von Gebäudeautomatisierungen, insbesondere Aufzugstechnik. Für diesen Kunden wurden zwei Projekte bzw. Geräte betreut: einerseits Aufzugssteuerung, andererseits ein externes Telemetriegerät für Monitoring und ?predictive maintenance?.

 

Aufzugssteuerung

  • Automatisierung und Optimierung von Build- und Deployment- Prozessen und Source-Control-Management
  • Beratung bzgl. Software-Archiktetur und Entwicklungsstrategie
  • Schulung der Kollegen bzgl. Entwicklung unter GNU/Linux
  • Code-Reviews und Cleanup

 

Telemetriegerät (IOT) 

In diesem Projekt wurde ein vorhandenes Telemetriegerät um weitere Funktionen, insbesondere ?Aufzugswärter? (externes Monitoring des Steuergeräts) und Notrufsystem, aber auch Anbindung weiterer Steuergeräte- Modelle, erweitert. (uA. zur Ablösung auslaufender Zusatzgeräte) 

  • BSP- und Kernel-Anpassungen
  • Refactoring und Optimierung zur Nutzung von GNU/Linux-Bordmitteln (statt Legacy-Code)
  • Refactoring der HW-Ansteuerung / Treiberschicht
  • Refactoring der Techniker-Funktionen
  • Refactoring der Cloud-Kommunikation
  • Implementierung von Aufzugswärter- (Monitoring/Selftest) und Notruf-Funktion
  • Anbindung von Modem/GSM-TA
  • Anbindung weiterer Steuergeräte
  • Harmonisierung auf internationale Gegebenheiten (div. Gehäuse/LED-Panel, Bedienfunktionen, etc.)
  • Architektur- und Code-Review

 

Tools+Spachen:

C/C++, Linux-Kernel, PtxDist, Azure, Git, Perforce, Redmine, LaTeX, RS485, CAN, RS232, cmake, javascript


HIL-Test/Werksprüfung: Gebäudetechnik / Embedded-Linux

Der Kunde ist Hersteller von Premium-Haustechnik.
In dem Projekt wurde mittels eines HIL-Testands sowohl die Werksprüfung, als auch Entwicklungstests
automatisiert. Dies wurde durch eine Kombination von Selbsttests auf dem Gerät
und externe Signalgeber/-Abnehmer realisiert.

Dabei enthalten uA.:

  • Netzwerk-Schnittstellen (Last- und Langzeittests, Stabilität, ...)
  • Display- und Touch: Kalibierung und Qualitätskontrolle
  • Thermische Prüfung
  • Prüfung von IOs.
  • Test von Audio/Video-Streaming, Codec, GPU

Tools+Spachen:

C/C++, Linux-Kernel, PtxDist, Git, RS485, CAN, RS232, cmake, Qt, GStreamer, Labview


Beratung/Entwicklung Embedded-Linux Medizintechnik

 

Der Kunde ist Hersteller für klinische Sterilisationsgeräte. Im Zuge des Projektes wurde die Plattform für die neuen Gerätegenerationen entwickelt.

 

Im Gerät befindet sich ein imx53-Rechner mit Touch-Panel, Netzwerkport (zum Anschluss ans Praxisnetz), diverse USB-Ports (Wartungsschnittstelle, Drucker-Anschluss, externer Speicher, etc) sowie CAN-Ports zur Kommunikation mit weiteren Steuerprozessoren. Über dieses findet neben der Bedienung auch Datenverfassung und Ausdruck, Monitoring, SW-Updates, udgl. statt.

 

Hauptaugenmerk des Projekteinsatz bestand in der Bereitstellung einer Betriebssystemumgebung und Entwicklungsinfrastruktur für og. Bedienteil, bis hin zu Deployment und Feld-Updates nebst Beratung bzgl. Wartbarkeit und Sicherheit.

 

Kernpunkte waren uA.:

  • ptxdist-basiertes BSP (Board Support Package) nebst Treiberentwicklung/-Anpassung (uA. auch Portierung von Qt5 auf KMS/DRI)
  • Build- und Deployment-Prozesse mit Hinblick auf Fertigung und Wartung im Feld
  • allgemeine Entwicklungsrichlinien nebst Schulung der Kollegen
  • Automatisierung von Dokumenten und Code-Generierung
  • Sicherheitsanalysen (insb. Manipulationssicherheit und Knowhow-Schutz)
  • Beratung bzgl. SW-Architektur
  • cryptographisch gesicherte Wartungsschnittstelle
  • Evaluation neuer Prozessor-/SOC-Generationen (uA. IMX6)
  • Review und Abnahme der Zulieferungen externer Dienstleister

 

Tools+Spachen:

LaTeX, C/C++, Linux-Kernel, ptxdist, Git, shellscript, python, cmake, GNU make, OpenGL/Mesa, Qt5, imx53, imx6


Beratung zu Entwicklungsmethoden im Embedded-Linux-Bereich (BARTEC)

 

Der Kunde ist Hersteller von Meß- und Erfassungstechnik für Tanklastfahrzeuge, welche u.a. im Bereich Treibstoff- als auch Nahrungsmittel-Transport eingesetzt werden. Diese mobilen Geräte können zugleich auch die erfassten Daten online zurückmelden, welche dann zT. Auch auf dessen Servern verarbeitet und zum Endkunden geliefert werden.

 

Da die Software-Basis (Betriebssystem, Build-Umgebung, Source control management, etc) bereits sehr veraltet ist und in naher Zukunft uA. auch ein Umstieg auf neue CPU-Architekturen ansteht, benötigte der Kunde Beratung zu konkreten Strategien für eine reibungsfreie und zugleich kosteneffiziente Umstellung, welche die Weiterpflege existierender Geräte im Feld (die Lebenszeiten liegen hier in Größenordnung von 20 Jahren!) ohne große Doppelarbeiten ermöglicht.

 

Im ersten Zuge bestand die Aufgabe in eine gründlichen Bestandsaufnahme der aktuellen Situation, Konsolidierung der verschiedensten Wissens-Inseln, sowie Rekonstruktion von bereits verloren gegangenem Wissen (einige kritische Bereiche, zB. die grundlegende Build- und Deployment-Architektur, Toolchains, Kernel, Bootloader, udgl. waren Wissensmonopole von längst nicht mehr vorhandenen Mitarbeitern). An dieser Stelle traten u.a. auch immense Defizite beim Source Control

Management zu Tage, welche nicht nur erhebliche vermeidbare Aufwände, sondern auch Produktionsrisiken (z.B. fehlende Versionierung der Kernel-/Bootloader-Quellen und Mangel an reproduzierbare Build-Infrastruktur für selbige) mit sich bringen.

 

Anschließend wurden dem Kunden konkrete Vorschläge für eine eingehende Restrukturierung der Entwicklungs-Infrastruktur unterbreitet, welche auch für die nächsten Jahrzehnte eine robuste Weiterentwicklung (uA. einfacher Wechsel von CPU-Architekturen, auch bei existierenden Geräten im Feld) bei gleichzeitiger kontinuierlicher Pflege existierender Produkt-Releases ermöglicht.

 

Eine weitere Baustelle stellte die Beratung bzgl. einer ausfallsicheren Server-Infrastruktur und Datentransfer-Mechanismen für die von den Endgeräten erfassten Messdaten dar.

 

Tools+Spachen:

Git, SVN, C/C++, Linux-Kernel, GNU make, USB


Joomla Veranstaltungskalender- und Buchung für Wohlfahrtsverband (Parisat)

 

Der Kunde ist eine gemeinnützige Gesellschaft, welche operative Tätigkeiten für den Thüringer Wohlfahrtsverband erledigt. Einer der Hauptaufgaben sind Schulungsveranstaltungen für die Mitglieder angeschlossenen Wohlfahrts-Organisationen.

 

Traditionell wurden die Terminplanungen mittels Lotus-Notes erledigt und händisch in die Joomla-basierte Website eingepflegt. Buchungen fanden manuell via eMail, Telefon oder Post ab.

 

Um diesen Vorgang zu automatisieren wurde ein Veranstaltungskalender mit Buchungsfunktion in der Website implementiert, welcher einerseits in der Veranstaltungen, andererseits auch bei der Buchung fachspezifische Informationen verwaltet. Zur einfachen Integration verfügt die Lösung über Import-/Export-Schnittstellen, welche uA. auch als Datenquelle für verschiedene Abteilungen, wie zB. die Print-Redaktion fungiert.

 

Derzeit wird - nach vielen Jahren erfolgreichem Betrieb - ein Relaunch auf aktuelle Joomla-Version und Integration mit der beim Kunden verwendeten Groupware (Exchange) realisiert.

 

Tools+Spachen:

PHP, Joomla, Git, iCal, SMTP, IMAP


Source-Control- und Release-Management / Git-Migration /Contigous Integration

 

Der Auftraggeber bietet neben Systemintegration auch tiefergehendes Customizing von OpenSource-Anwendungen und Entwicklungen von Erweiterungen für selbige (insbesondere Zimbra, OpenERP, Plone, OwnCloud).

 

Die einzelnen Entwicklungsteams hatten zunächst ihren Source-Code, aber auch (meist sogar manuell erzeugte!) Builds sehr unstrukturiert in einer Subversion-Repository abgelegt. Dabei mangelte es allerdings gänzlich an einer sauberen Repository-Organisation, strukturierten Entwicklungs-, Testing- und Abnahme-Prozessen, Versions-Schemata, reproduzierbaren Build-Prozessen, udgl.

Letztlich wurde SVN hier nur als unstrukturierte Datenhalde (Fileshare) mißbraucht, einzelne Entwicklungsstände konnten nicht (ohne Weiteres) definiert herausgezogen und gebaut werden. Selbstredend hat dies immense unnötige Kosten und Verzögerungen verursacht und den Entwicklungsablauf großen Risiken ausgesetzt.

 

In meiner Rolle als Chief Architekt habe ich diese Mißstände in mehreren Schritten bereinigt:

 

Git-Migration, Reproduktion der Historie

Der Source-Code der einzelnen Produkte wurde an verschiedensten Stellen im SVN-Baum abgelegt, teils mit nicht zusammenhängenden Kopien unterschiedlicher Stände, partiell als ZIP-Archive, oft mit falschen Character-Sets, sowie auch vielen nicht zum Zugehörigen Dateien (temporäre Files, Build-Outputs, fachfremende Files, etc)

Zur Bereinigung habe ich hier einzelnen Produkte jeweils in Git importiert und anschließend mit speziell entwickelten Filter-/Rewriting-Tools über die gesamte History hinweg unnötigen Ballast entfernt, falsche Codierungen korrigiert, Verzeichnis-Strukturen angepaßt und die History aus den einzelnen Fragmenten rekonstruiert.

Das Ergbnis war eine konsistente History, aus der die einzelnen Änderungen (diff?s) jederzeit sofort ersichtlich sind, sodass nun einerseits definierte Versionsstände jederzeit reproduzierbar sind, aber auch ein detailiertes Change-Review möglich ist.

Desweiteren wurden die Entwicklungs-Teams im Umgang mit Git, sowie allgemeinen Source-Control-Methodiken trainiert.

 

Repository-Management und Redmine-Integration

Im Vorfeld hatten lediglich einige Entwickler Zugriff auf das SVN, andere haben Ihre Stände über lokale Fileshares abgeglichen. Projektspezifische Zugriffskontrolle gab es nicht.

Selbstverständlich erzeugte dies enorme Zusatzaufwände, Verzögerungen und Fehlerquellen, welche sich als sehr teuer erwiesen.

Als Lösung habe ich hier eine Redmine-Integration implementiert, welche automatisch zentrale Git-Repositories zu den einzelnen Redmine-Projekten anlegt und die Zugriffskontrolle anhand der jeweiligen Projekt-Rollen steuert. Somit war es nun möglich, ohne manuelle Zusatzaufwände, für die einzelnen Projekte Git-Repositories zur Verfügung zu stellen und je nach Bedarf Zugriffsrechte zuzuteilen.

 

Branch-Policies, Versions-Schema, Release-Management

Da im Vorfeld die Entwicklungs- und Änderungsabläufe sehr unstrukturiert und schwer nachvollziehbar verliefen, habe ich für die Entwicklungsteams definierte Prozesse eingeführt.

Zunächst habe Topic-Branches (fein granulierte Tasks/Tickets und jeweils zugehörige Branches) eingeführt, sodass hier einzelne Aufgaben weitestgehend unabhängig voneinander abgearbeitet und deren Ergebnis vor Integration in den Hauptzweig begutachtet werden können. Dieser Ansatz steigerte die allgemeine Code-Qualität und verbesserte das tägliche Lernen im Job.

Desweiteren mangelte es an einer klaren Versions-Systematik, welche es anderen Beteiligten (Produktmanagement, Operating, etc) nicht erlaubte, Rückschlüsse auf die Qualität des eines Versionssprungs (zB. welche Konsequenzen und Querabhängigkeiten wären zu erwarten?) zu ziehen. Deshalb habe ich hier ein striktes ?Semantic Versioning? eingeführt,

welches sich auch in der Branch-Struktur und Change-Management niederschlug

 

Reproduzierbare Build-Prozesse, Paketierung, Contigious Integration

Der Entwicklung mangelte es gänzlich an definierten und automatisierten Build-Prozessen. Stattdessen wurden die Builds jeweils manuell vorgenommen, was nicht nur große Kosten und Verzögerungen, sondern auch erhebliche Risiken mit sich brachte. Ebenso mangelte es auch an automatisierbaren Deployment-Prozessen, was erhebliche Zusatzaufwände in Validierung und Operating nach sich zog.

Zur Lösung des Dilemmas habe ich zunächst für die einzelnen Produkt- Bereiche automatisierbare Build-Systeme und Paketierung implementiert, sodaß jegliche Software direkt über das Paketmanagement der jeweiligen Zielplattform ausgerollt werden kann.

Für Zimbra-Erweiterungen habe ich hier eigens das Tool ZmPkg entwickelt, welches, basierend auf der bewährten dpkg/Apt-Technologie basiert und innerhalb einer Zimbra-Umgebung eine eigenständige Paketmanagement-Infrastruktur zur Verfügung stellt.

Anschließend wurde Source-Control, Build, Paketierung mit einer Jenkins- basierten Contigious-Integration zusammengeführt, welche automatisch neue Versionsstände baut, paketiert (die Pakete dabei in Repositories ablegt), auf Testsysteme ausrollt und Tests abfährt.

 

Durch diese Maßnahmen wurden die Aufwände im gesamten Entwicklungsablauf, von Design über Entwicklung, Testing bishin zum Rollout/Operating um Größenordnungen (in einigen Teilen auf weniger als ein Drittel!) reduziert.

 

Tools+Spachen:

Zimbra, Java, Javascript, Git, Shellscript, ZmPkg, Release-Engineering, Jenkins, Dpkg, Apt

 

Zeitraum:

wiederkehrend, 2012..2014


Konzeption für Groupware-Integration des Elektronischen Gerichts- und Verwaltungspostfach (EGVP)

 

Der Endkunde ist eine öffentliche-rechtliche Körperschaft in der Rechtspflege, deren Mitglieder umfangreiche Dokumente mit den Gerichten mittels des Elektronischen Gerichts- und Verwaltungspostfach (EGVP) austauschen müssen.

 

Aktuell existieren hierfür nur rein Client-seitige Lösungen mit spartanischer Benutzerführung, aufwändigem Rollout (nicht automatisierbar) und Fehlen jeglicher Integrationsmöglichkeiten.

Zudem sind diese (entgegen offizieller Verlautbarungen) ausschließlich für die grundsätzlich als unsicher einzustufende Windows-Plattform benutzbar.

Im Vorfeld des Projekts wurde dem Endkunden bereits eine Zimbra-basierte Groupware-Lösung geliefert, welche er seinen Mitgliedern (und deren Mitarbeitern) zur Verfügung stellt. In diese Groupware sollte EGVP derart integriert werden, da ß es auch - ohne zusätzliche lokale Installationen - über die Web-GUI verwendet werden kann, ohne dabei die Ende-zu-Ende-Verschlüsselung zu brechen. Dabei sollen auch erweiterte Funktionen wie zB. Mailbox-Delegationen, Volltext-Suche, Termineinladungen, udgl. für EGVP nutzbar sein.

Desweiteren wurde hier eine Dokumentation der (zu diesem Zeitpunkt noch undokumentierten) Zimbra SOAP APIs für Provisionierung und Management aus externen Führungssystemen heraus geliefert.

 

Tools+Spachen:

Zimbra, Java, EGVP, LaTeX, SOAP, GnuPG, ZmPkg


iOTP-/iTAN-Authentizierung für Zimbra

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Für verschiedene Endkunden wird eine Multifaktor-Authentifizierung mittels iOTP (aka. iTAN) als Alternative zum existierenden OTP via SMS benötigt. Das Problem besteht hier darin, daß die SMS-Zustellung in verschiedenen Ländern nur sehr unzureichend funktioniert, sodaß hier oft die Kundenbetreuer angerufen werden müssen, um ein gültiges OTP zu erhalten. Dies sind idR. gleichzeitig auch Länder, in denen eine Postzustellung noch unzuverlässiger oder unsicherer als Telefonie/SMS ist.

 

Hierzu wurde als Alternative ein iOTP-Modus entwickelt, welcher kurz umrissen wie folgt agiert:

  • Bei Problemen mit der SMS-Zustellung aktiviert der Kundenbetreuer den iOTP-Modus
  • Es wird ein iOTP-Blatt generiert und dem Kunden innerhalb der Zimbra-Plattform zugestellt
  • Dieser erfragt zu diesem Zeitpunkt noch das OTP telefonisch vom Kundenberater
  • Nach Sicherung/Ausdruck des iOTP-Blatts aktiviert er dieses durch Eingabe eines iOTP
  • Von nun an erfolgt die Authentizierung mittels iOTP anstatt OTP
  • Nach Verbrauch einer denerten Anzahl iOTPs wird ein neues Blatt generiert/gesendet

 

Die Implementation untergliedert sich in folgende Komponenten:

  • Erweiterung der Middleware um iOTP-Datenstrukturen und -Workflows
  • Rendering und Versenden des iOTP-Blatt als PDF mittels LaTeX
  • Erweiterung der SAML-basierten SSO-Plattform zur iOTP-Abfrage
  • Zimbra-Erweiterungen (Zimlets) zur iOTP-Verwaltung seitens Kunde und Kundenbetreuer

 

Tools+Spachen:

Zimbra, Postx, simplesamlphp, Jilter/Maillter, PHP, Java, Javascript, PostgreSQL, Shellscript, SAML, ZmPkg


Middleware zum User-Management für Zimbra und andere Anwendungen

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Für verschiedenene Endkunden waren bereits tiefergehende Zimbra-Customizations geliefert worden. Mit verschiedenen Folgeprojekten wurden diese jedoch stetig komplexer und benötigten eigene Datenbasis, welche nicht mehr sinnvoll in Zimbra-eigene Datenstrukturen (iW. LDAP) abzubilden waren. So wurde zB. für ein großes Bankhaus eine automatische Nutzer-Provisionierung (einschließlich der Nutzerbeziehungen und Zugriffsberechtigungen) aus einem Datafeed

heraus implementiert.

 

Außerdem bestand die Problematik, für jedes Zimbra-Upgrade bei jedem Kunden die jeweiligen Customizations auf die entsprechenden Zimbra-Versionen zu portieren. Zwar war der Aufwand durch die zuvor von mir eingeführten SCM-Methodiken schon erheblich reduziert, dennoch verblieben hier nicht unerhebliche Aufwände pro Kunde und Zimbra-Version.

 

An dieser Stelle habe ich ein grundlegendes Redesign vorgenommen, welches jegliche kundenspezifische Logik und Datenbasis in einer Middleware kapselt. Damit wurden die zuvor jeweils kundenspezifischen Core-Customizations durch eine generische ersetzt, welche nun bei allen Kunden gleichermaßen eingesetzt werden kann.

 

Die Middleware ist in Java implementiert, benötigt jedoch keine JVM. Stattdessen wird hier ein direkt ausführbares ELF-Binary erzeugt, welches als klassischer Unix-Dämon gestartet wird. Dies reduziert den Resourcen-Verbrauch erheblich, aber vereinfacht auch Build, Deployment und Betrieb.

 

Zur Kommunikation zwischen Middleware und Satellitensystemen (von denen Zimbranun nur eines von mehreren ist) wird einen einfaches HTTP-basiertest, REST-artiges Protokoll verwendet, welches Aufgrund seiner Einfachheit sehr einfach (uA. auch in Shellscripts) implementiert werden kann. Im Gegensatz zu klassischen Ansätzen wie zB. SOAP oder XMLRPC vereinfacht dies die Entwicklung erheblich und spart Resourcen.

 

Zur möglichst effizienten Code-Wiederverwendung werden im Entwicklungsverlauf stets eine generische und verschiedene kundenspezifische Branches gepflegt. Nach Möglichkeit werden neue Funktionalitäten oder zumindest die Schnittstellen generisch ausgelegt und in der generischen Branch implementiert, während die kundenspezifischen Branches - welche jeweils auf die aktuelle generische Branch rebase?ed werden und nur die rein kundenspezifischen Anpassungen enthalten. Dies gilt auch für das DB-Schema, in welchem generische und kundenspezifische Relationen in verschiedene Namensräume getrennt und fachspezifische Datenstrukturen mittels (schreibbarer) Views auf generische Abgebildet werden.

 

Die Implementierung erstreckt sich über folgende Komponenten:

  • Middleware-Server (klassicher Unix-Dämon, als .deb paketiert)
  • Datenbank-Instanz mit generischen und kundenspezifischen Schemata (PostgreSQL)
  • kundenspezifischer Importer
  • Provisionierer
  • Mail-Filter zur Sicherung der Kommunikationskontrolle
  • Zimbra Core-Customizations
  • diverse Zimlets (zB. middleware-basiertes Addressbuch)
  • SAML Login-Portal (ggf. mit kundenspezifischen Modulen)

 

Tools+Spachen:

Zimbra, LDAP, simplesamlphp, Java, GCJ, Javascript, PostgreSQL, Shellscript, ZmPkg 


Zimbra-basierte sicher Kommunikationsplatform zur Neukundenaquise für internationale Großbank

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Für eine internationale Großbank wurde bereits im Vorfeld sichere Plattform zur Kommunikation zwischen der Bank und ihren Kunden, sowie externen Anlageberatern entwickelt. In diese galt es nun auch, potentielle Neukunden - für die Dauer der Verhandlungen - aufzunehmen.

 

Das fachliche Szenario stellt sich wie folgt dar:

In Ländern mit schwacher Infrastruktur bzw. dünner Siedlungsstruktur unterhält das Bankhaus idR. keine oder nur wenige Niederlassungen. Um dennoch hier Neukunden, zB. für das Anlagegeschäft, aquirieren zu können, werden diese von externen Vertretern vor Ort an Kundenberater des Bankhauses vermittelt. Diese eröffnen temporäre Zugänge zur Zimbra-Plattform, ein Aktivierungscode wird dem Neukunden über einen separaten Kanal zugestellt. Mit diesem kann jener seinen Zugang aktivieren und zugleich seine bereits erfaßten Stammdaten bestätigen bzw. korrigieren. Anschließend steht ihm die Zimbra-Plattform zur Verfügung und die Verhandlungen mit dem Kundenberater können beginnen. Nach Abschluß der Verhandlungen wird dieser temporäre Zugang wieder geschlossen und die Kommunikation archiviert.

 

Zusätzlich kann der Kundenberater Zusatz-Informationen, zB. den Verhandlungs-Status verwalten. Sämtliche Aktionen (zB. Zustandsänderungen, eMails, etc) werden zudem für evtl. spätere Nachprüfungen in einem Journal erfaßt.

 

Die Implementation dieser Funktionalität gliedert sich in verschiedene Komponenten auf:

  • Management-Tool für den Kundenberater (ZimbraErweiterung - Zimlet)
  • Middleware-Erweiterung: Daten und Zustandsautomat für die Neukunden-Daten
  • Provisionier für die temporären Zimbra-Accounts
  • Mail-Filter zur Journal-Erfassung der Mails
  • Erweiterung der SSO-Plattform
  • Self-Registration-Portal
  • Report-Generierung als PDF mittels LaTeX

 

Tools+Spachen:

LaTeX, Zimbra, Postx, simplesamlphp, Jilter/Maillter, PHP, Java, Javascript, PostgreSQL, Shellscript, ZmPkg


GNU/Linux Software Packaging und automatische Builds

 

Der Auftraggeber ist Anbieter für Business Cloud Lösungen und hat hier verschiedene Produkte, zB. Zimbra, Plone, Redmine, OpenERP im Portfolio. Er entwickelt diese auch weiter und paßt sie kundenspezifisch an.

 

Für ein einfaches und reproduzierbares Deployment habe ich hier eine stringente Paketierung eingeführt: jegliche Software (auch proprietäre Produkte, wie zB. CrashPlan) werden ausschließlich mittels Paketmanagement der jeweiligen Plattform ausgerollt ? vom Entwicklungs-Testsystem über Validierung/Preproduction bis hin zum tatsächlichen Produktivsystem.

 

Die verschiedenen Qualitätsstufen werden hier durch separate Repositories abgebildet.

 

Desweiteren wurde eine automatische Build-Infrastruktur (basierend auf Jenkins) implementiert, welche die aktuelle Codebasis vollautomatisch compiliert, paketiert, auf Testsysteme ausrollt (via Paketmanagement) und verschiedenste Tests abfährt.

 

Mittels dieser Infrastruktur wurden die Rollout-Zeiten (in allen Stufen, von der Entwicklung bis hin zum Produktivbetrieb) deutlich reduziert und ein hohes Maß an Reproduzierbarkeit hergestellt.

 

Tools+Spachen:

git, dpkg, apt, pbuilder, jenkins, rpm, yum, mock

 

Zeitraum:

wiederkehrend, 2012..2014


Zimbra-basierte Secure Communication Platform für internationale Großbank

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Für eine internationale Großbank wurde in mehreren Stufen eine sichere Plattform für die Kommunikation zwischen der Bank und ihren Kunden, sowie externen Anlageberatern entwickelt.

 

Im Gegensatz zu gängigen Groupware-Umgebungen ist diese Plattform aufgrund der verstärkten Sicherheitsanforderungen scharf abgeriegelt:

 Mehrwege-Authentifizierung mittels RSA-Token

 Eingeschränkte Kommunikation: Nutzer können ausschließlich nach klar definierten Beziehungen miteinander kommunizieren (zB. Kunden nur mit deren Beratern, die Berater nur innerhalb der Abteilung) - jegliche davon abweichende Kommunikationsversuche werden technisch unterbunden.

 Limitierte Features: einige Standard-Features, die in diesem Szenario zu einem Sicherheitsleck werden könnten (zB. herunterladen von eMails) wurden stillgelegt.

 

Diese Anpassungen wurden mittels kundenspezifischer Core-Customizations gewährleistet, welche mittels Zimbra Package Manager paktiert und ausgerollt.

In einer weiteren Stufe wurden weitere Nutzertypen mit komplexeren Kommunikations-Beziehungen angebunden und diese direkt aus einer extern eingelieferten Datenquelle provisioniert.

 

Um den Entwicklungs- und Wartungsaufwand auch für die Zukunft gering zu halten (schließlich müssen Zimbra-Customizations vor jedem Zimbra-Upgrade zunächst entsprechend auf die neue Version angepaßt werden) haben wir eine generische Lösung über eine eigene Middleware implementiert, welche mittels einer einfachen REST-API angesprochen wird und auch die User-Provisionierung übernimmt. Die Zimbra-seitigen Erweiterungen und Core-Customizations sind derart generisch ausgelegt, da ß sie lediglich fein granulierte Nutzer-Eigenschaften von der Middleware abfragt und damit Features, Berechtigungen, etc. steuert - diese werden als eigenständiges, standardisiertes Produkt (ohne kundenspezfische Anpassungen) angeboten. Kundenspezifische Anpassungen finden damit nur noch innerhalb der Middleware statt, womit sich die Customizing-Aufwände dramatisch reduzieren.

In diesem Projekt lag die Architektur-Planung, Entwicklungsleitung/Release-Management und Implementation der Middleware in meiner Verantwortung.

 

Tools+Spachen:

Zimbra, Java, Javascript, PostgreSQL, Shellscript, ZmPkg

 

Zeitraum:

wiederkehrend, 2012..2014


Zimbra Package Management

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

In dem Bereich ist es wichtig, da ß Deployments und Upgrade von Zimbra-Erweiterungen und -Core-Customizations (kundenspezifische Anpassungen in der Kernanwendung) sicher, robust und automatisiert ablaufen, da sonst die Aufwände und Betriebsrisiken rasch kaufmännisch inretabel würden. Aber auch in der Entwicklung ist dies wichtig, um kontinuierlich konsistente Testumgebungen - ohne zusätzliche manuelle Aufwände herzustellen (contigous integration, etc).

 

Mit den Zimbra-Bordmitteln lä ßt sich nur eine Art von Erweiterungen - die ?Zimlets? genannten GUI Erweitungen - automatisiert installieren und entfernen. Dies ist aber auch nur unter Einschränkungen möglich: bringt ein solches ?Zimlet? beispielsweise eigene (Java-)Bibliotheken mit, werden diese zwar installiert, aber können nicht mehr bei Deinstallations des Zimlets automatisch entfernt werden. Zudem ist keine Konflikt- Prüfung bzw. -Verhinderung möglich.

 

Für andere Arten von Zimbra-Erweiterungen, zB. den ?Server-Extensions? (mit diesen lassen sich serverseitige Ereignisse, wie zB. neuer Maileingang oder diverse Nutzeraktionen verarbeiten) oder auch Core-Customizations (Anpassungen/Erweiterungen im Applikationskern) bietet Zimbra von Haus aus keinerlei Deployment-Mechanismus.

Damit besteht das Problem, da ß für jede (nicht-triviale) Zimbra-Erweiterung eigenens Installations-/Upgrade-/Deinstallations-Programme geschrieben werden müßten, und andererseits Administratoren nur schwer einen Überblick bekommen, welche Erweiterungen in welchen Versionen aktuell installiert sind. Dies macht das Management der Zimbra- Erweiterungen über den gesamten Lebenszyklus - von Entwicklung/Testing/Release-Management bis hin zum Produktivsystem sehr aufwändig und teuer.

 

Um dieses Problem an der Wurzel zu lösen, habe ich dem Auftraggeber eine Paket-Management-System für Zimbra ? ?ZMPKG? geliefert. Dieses basiert auf der bei professionellen GNU/Linux-Distributionen bewährte Paketmanagement-Technologie ?dpkg?+?apt?, agiert jedoch vom Betriebssystem unabhängig, nur innerhalb der Zimbra-Instanz. Es ist somit auch auf anderen GNU/Linux-Distributionen, nicht auf ?dpkg? basieren (zB. RedHat oder SuSE) einsetzbar - hier

werden die noch benötigten Komponenten vom Installer mitgeliefert.

 

ZMPKG bildet den gesamten Prozess - beginnend vom Build, bis hin zum Deployment, Upgrade und auch vollständiger Deinstallaion - ab. Der Administrator kann mit den gewohnten Werkzeugen nach Belieben Zimbra-Pakete aus dem zentralen Repositorium installieren und upgraden.

 

Parallel dazu wurde auch eine Jenkins-basierte automatisierte Build-/Test-Umgebung aufgesetzt, mit der von der Entwicklung kommende Änderungen automatisch übersetzt/paketiert und auf Testsysteme aufgespielt werden.

 

Mittels dieser Technologie wurden beim Auftraggeber die Aufwände für Entwicklung, Testing und Rollout rapide reduziert. Bisher aufwändige Deployment-Tasks wurden iW. auf einen Befehlsaufruf reduziert.

 

Die ZMPKG-Technologie steht als OpenSource-Produkt kostenfrei zur Verfügung.

 

Tools+Spachen:

Zimbra, Shellscript, dpkg, apt, rpm, GNU make

 

Zeitraum:

wiederkehrend, 2013, 2013


Zimbra Mail History

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Verschiedene Kunden des Auftraggebers benötigten eine Lösung mittels derer innerhalb von Zimbra der Absender einer eMail nachvollziehen kann, an welche Empfänger diese gesendet und von wem diese wann gelesen wurde. (ähnlich wie dieses zB. auch DE-Mail anbieten soll).

 

Die in diesem Projekt entwickelte Lösung zeichnet die einzelnen Mail-Ereignisse (gesendet, empfangen, gelesen, etc) und ordnet sie derart zu, daß der Absender den Zustellungs-/Lese-Status jederzeit bequem einsehen kann. Somit können beispielsweise bei Fristensachen die Zustellungen nachgewiesen werden.

 

Um einen reibungslosen Betrieb, sowohl in Cluster-Umgebungen (Zimbra läßt sich schließlich auch in einem großen Cluster mit hundertausenden bis millionen Nutzern betreiben), aber auch mit externen Weiterleitungen, zu gewährleisten, waren tiefgreifendere Anpassungen an verschiedenen Fronten nötig. Hierzu mußte einiges an R&E-Arbeit geleistet und Zimbra in der Tiefe analysiert werden.

 

In diesem Projekt lag die Konzeption/Architektur und Entwicklungs-Leitung, sowie große Teile der Implementation in meiner Verantwortung. Die Entwicklung wurde von einem internationalen (über verschiedene Kontinente verteilten) Team geleistet.

 

Tools+Spachen:

Zimbra, Java, Jilter/Maillter, Javascript, Mysql, Shellcsript, Postx, ZmPkg


Zimbra OpenERP Connector

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Um einen direkten Zugriff auf wichtige ERP-Funktionen (OpenERP) aus Zimbra heraus zu ermöglichen, wurde mit einem internationalen Team ein Connector-?Zimlet? entwickelt. Dieses ist einfach mittels Zimbra Package Manager zu installieren und kann sowohl auf OpenERP-6 als auch OpenERP-7 zugreifen.

 

Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.

 

Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:

  • Software-Architektur und technische Leitung
  • Qualitäts-Management
  • Release-Management
  • Paketierung

 

Tools+Spachen:

Zimbra, Java, Javascript, OpenERP, Python, ZmPkg


Zimbra Plone-Connector

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Um einen direkten Zugriff auf wichtige der Plone-Portalplattform (welche der Kunde auch für sein eigenes Portal einsetzt), wie zB. schnellen Dokumenten-Upload, aus Zimbra heraus zu ermöglichen, wurde mit einem internationalen Team ein Connector-?Zimlet? entwickelt. Dieses ist einfach mittels Zimbra Package Manager zu installieren.

 

Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.

 

Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:

  • Software-Architektur und technische Leitung
  • Qualitäts-Management
  • Release-Management
  • Paketierung

 

Tools+Spachen:

Zimbra, Java, Javascript, Plone, Python, ZmPkg


Zimbra CRM

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Da viele Zimbra-Anwender eine leichtgewichtige, in Zimbra integrierte, CRM-Lösung benötigen, ohne dabei gleich zu einer großen Lösung, wie zB. OpenERP greifen zu müssen, wurde hierfür ein eigenes ?Zimlet? entwickelt, welches grundlegende CRM-Funktionen bereitstellt. Dieses ist einfach mittels Zimbra Package Manager zu installieren.

 

Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.

 

Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:

  • Software-Architektur und technische Leitung
  • Qualitäts-Management
  • Release-Management
  • Paketierung

 

Tools+Spachen:

Zimbra, Java, Javascript, ZmPkg, GNU make


Zimbra Owncloud Client

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Um die in Zimbra zukünftig nicht mehr vorhandene Dateiablage zu ersetzen und diese auch zentral für andere Systeme verfügbar zu machen, wurde eine Owncloud-Erweiterung entwickelt. Diese liegt zwei Varianten, Einzelnutzer (per User-Conguration) und Enterprise (zentrale LDAP-Provisionierung/Authentifizierung) vor.

 

Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.

 

Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:

  • Software-Architektur und technische Leitung
  • Qualitäts-Management
  • Release-Management
  • Paketierung

 

Tools+Spachen:

Zimbra, Java, Javascript, ZmPkg, GNU make, OwnCloud


Embedded: Spriometrie- und EKG-Me ßcomputer für klinische Studien (ERT)

 

Der Kunde ist führender Anbieter für die technische Abwicklung klinischer Studien zur Medikamentenzulassung im Bereich Spirometrie (Lungenfunktionsmessung) und EKG.

 

Hierzu stellt er den auftraggebenen Pharma-Herstellern uA. spezialisierte Meßcomputer mit jeweils studienspezifisch angepaßter Firmware zur Verfügung. Diese Geräte werden in den an den Studien weltweit teilnehmenden Kliniken aufgestellt und vom dortigen medizinischen Personal zur Datenerfassung, Messung verwendet. Anschließend werden diese gesammelten Daten ins Rechenzentrum übertragen, weiterverarbeitet (Data-Cleaning) und dem Pharma-Hersteller zur Studienauswertung übergeben.

 

Mein Verantwortungsbereich lag in der Weiterentwicklung und Anpassung des Produkte ?FlowScreen? (Spirometrie) und ?CoreScreen? (EKG), sowie der Zusammenführung der verschiedener Produktlinien zu einem generischen, leicht anpaßbaren Gerät. Es handelt sich hierbei um einen ARMMX.21-basierten Computer mit eingebauter Industrie-Tastatur, Touchscreen, Drucker (HP OJ-470), mit einer Embedded-Linux-basierten Firmware.

 

Die erste Projektphase bestand in der Portierung der Software auf eine neue Hardware-Plattform. Insbesondere mußten hier Toolchain, Buildprozesse, Bootup, Treiber, udgl. angepaßt/portiert werden. In dem Zuge habe ich auch das Firmware- Deployment derart vereinfacht, da ß Upgrades nun auch vom Benutzer im Feld selbst durchgeführt werden können.

 

In der zweiten Projektphase wurden dann die ersten Studien-Entwicklungen (kundenspezifische Customizations) auf der neuen Plattform durchgeführt. Zum vereinfachten Management derartiger paralleler bzw. aufeinander basierender Entwicklungslinien habe ich zudem neue SCM-Prozesse und Tools (Git-basiert, downstream-branches, etc), sowie automatisiertes Build-/Delivery (contigious integration, etc) eingeführt. Desweiteren habe ich auch die Entwicklungs-

Infrastruktur modernisiert, um diese robuster und um ein vielfaches schneller zu gestalten.

 

Mit der dritten Projektphase wurden, parallel zu verschiedenen Studien-Entwicklungen wurde die Software-Plattform weitgehend modernisiert, insbesondere die vormals jeweils direkt im Quellcode stattgefundenen kundenspezifische Anpassungen durch generische Configuration/Parametrisierung abgelöst. Damit wurden die Aufwände und Zeitrahmen für die studienspezifischen Anpassungen im Schnitt um ca. 2/3 reduziert.

 

Insgesamt nahm das Projekt ein volles Jahr in Anspruch.

 

Tools+Spachen:

C/C++, Perl, GNU/Linux (incl. Kernel-Entwicklung), Git, GCC, Crosscompiler, ARM/MX.21


MySQL Geoclustering (1und1 Internet AG)

 

Der Kunde hat seine Hosting-Infrastruktur auf Geoclustering (Transatlantik-Spiegelung) erweitert, um seine Ausfallsicherheit und permanente Verfügbarkeit weiter zu erhöhen.

 

Um bei einer Umschaltung einzelner Clusterknoten unnötigen transkontinentalen Quertraffic zu vermeiden, war es nötig, einzelne Kunden-Datenbanken zwischen den Clusterknoten zu verschieben (Entmaschung), ohne jedoch den betreffenden Kunden neue Zugangsdaten zuteilen zu müssen.

 

Um dieses Ziel zu erreichen, wurde ein transparenter Umleitungsmechanismus implementiert, mittels dem der Kunde seine Datenbanken auch nach Umzug unter denselben Zugangsdaten erreicht. Hierzu waren auch tiefergehende Eingriffe in der MySQL-Software wie auch diversen Inhouse-Systemen erforderlich.

 

Dem vorraus gingen eingehende Analysen, umsicherzustellen, da ß die gewählte Lösung sowohl technisch sauber funktioniert, aber auch in der einzigartigen Größenordnung beim Massenhosting (mehrere Millionen Kunden) sicher und performant betrieben werden kann.

 

Parallel dazu waren noch Probleme mit DRBD zu lösen, um eine sicherere und performante Transatlantik-Spiegelung (auf Petabyte-Skala) zu ermöglichen.

 

Diese Arbeiten nahmen ca. 4 Monate in Anspruch.

 

Tools+Spachen:

C/C++, PHP, Perl, MySQL, GNU/Linux (incl. Kernel-Entwicklung), Sybase, Git, GCC, Debian Linux, Subversion, iptables, OpenVZ, DRBD

 

Zeitraum:

Frühjahr/Sommer 2010


Media-Portal Plattform: MediaCloud

 

Der Kunde betreibt seit einigen Jahren eine Community-Plattform für Künstler im Filmbereich (Schauspieler, Filmemacher, udgl.) auf Joomla-Basis, die um Video-/Musik-Upload erweitert werden sollte. Gleichzeitig sollten mehrere neue Video-Communities für verschiedenste Zielgruppen aufgebaut werden, die untereinander vernetzt sind und auf einen gemeinsamen Datenpool zugreifen.

 

In diesem Zuge wurde das Produkt metux MediaCloud entwickelt. Es handelt sich hierbei um eine eigenständige Server-Infrastruktur für größere Video-/Medien-Portale, die in verschiedenste Portalsysteme, wie zB. Joomla, eingebunden werden kann. Die metux MediaCloud-Infrastruktur übernimmt dabei Upload, Convertierung, Verwaltung und Wiedergabe der gesamten Mediendateien. An eine MediaCloud-Instanz können beliebig viele Portale mit individuellen Berechtigungen

angebunden werden, sodaß beispielsweise Medien eines Portals in anderen sichtbar gemacht werden können.

 

Im Rahmen des Projektes wurde zunächst die Server-Infrastruktur errichtet/betreut und sukzessiv 32 derartige Portale für verschiedene Zielgruppen mit diversen Zusatzfunktionen aufgebaut, beispielsweise:

  • Gemeinsamer Userpool der beiden Hauptportale
  • Roaming zwischen allen Portalen
  • externes Roaming via OpenID
  • Zahlungssystem / Verkauf von kostenpflichtigen Medien
  • Shop-Integration
  • Orderprozeß für Kreditkarten und Mobilfunkverträgen
  • Portalspezifische Community-Anpassungen
  • Datingportal mit Partner-Matching und Video-Chat
  • Immobilien-Börse mit Videos
  • Web-Phone-Integration (Purtel)
  • Integration von Livestreams zahlreicher internationaler TV-Stationen
  • Anbindung an Facebook und MySpace
  • u.v.m.

 

Tools+Spachen:

C/C++, Plan9, Venti, PHP, Perl, PostgreSQL, Javascript, AJAX, Shellscript, Lighttpd, LAMP, Git, ffmpeg, mplayer, Flash, Red5, Nagios, Gentoo Linux, metux Media-Cloud


Virtualisierte und Redundante Serverumgebung

 

Der Kunde betreibt mehrere Server mit verschiedensten Anwendungen (Mailserver, Webserver, Datenbanken, eigenes Web-Portal), die für den Geschäftsbetrieb kritisch sind. Aufgrund eines bereits erfolgten Angriffs ist dem Kunden die Sicherheit besonders in den Mittelpunkt gerückt.

 

Um die Schadmöglichkeiten im Falle eines Angriffs auf ein Minimum zu reduzieren, wird das ganze System mittels OpenVZ virtualisiert: jeder Dienst erhält eine eigene virtuelle Umgebung. Die Software innerhalb der einzelnen VZ?s stammt nicht aus einer gängigen Distribution, sondern wird mittels der Eigenentwicklung metux Briegel Builder(siehe Projekte) für jede einzelne VZ speziell erzeugt. Dabei enthält jede VZ nur jeweils nur einen Service und ausschließlich den dafür benötigen Programmcode. Updates, regelmäßige Integritätsprüfung und automatische Wiederherstellung der einzelnen VZ?s finden vom Host-System aus statt. Das Host-System selbst ist im Normalbetrieb nicht via Internet erreichbar.

 

Eine nicht zu unterschätzende Herausforderung besteht in diesem Projekt darin, sämtliche benötigten Pakete für Crosscompiling/Sysroot vorzubereiten - viele Pakete sind dafür noch nicht von Haus aus geeignet.

 

Tools+Spachen:

C/C++, Java, Perl, Shellscript, Briegel, Sendmail, lighttpd, PHP,Apache, qMail, IMAP, POP3, LDAP, PostgreSQL, mySQL, Lighttpd, Nagios, Git, GNU/Linux


Embedded-Linux Entwicklungsplattform und Paket-Portierung

 

Der Kunde (aufgrund NDA nicht näher genannt) entwickelt eine ISP-Plattform zum Aufbau von öffentlichen WLAN-Netzen mittels gängigen DSL-Anschlüssen und den dort verfügbaren Endgeräten.

 

Dazu wird für die gängigen DSL-WLAN-Router (zB. FritzBox) eine eigene Linux-basierte Firmware mit einer Virtualisierungslösung benötigt. Existierende Distributionen/Werkzeuge (zB.Open-WRT) wurden für ungeeignet befunden.

 

Ich habe für dieses Projekt mein Produkt metux Briegel Builder geliefert, das sämtliche Build-Schritte - vom Herunterladen der Quellen, Patching, Compilieren in einer virtuellen Umgebung (SYSROOT) bis hin zur Paketierung und Image-Generierung - vollautomatisch ausführt.

 

Dazu gehören zahlreiche Anpassungen und Fixes an den verwendeten Paketen (zB. um ein sauberes Crosscompiling zu ermöglichen), für die von mir Patches geliefert wurden.

 

Tools+Spachen:

C/C++, GNU make, Linux-Kernel, MPLS, Crosstool, Briegel, Diffutils, CVS, Perl, Shellscript, GNU/Linux, metux Briegel


Maßgeschneiderte GNU/Linux-Firmware für WLAN-VoIP-Router

 

Die TU-Ilmenau entwickelte in einem Forschungsprojekt eine Infrastruktur für mobile Telefonie- und Videodienste auf Basis von gängier WLAN-Technik. Es werden dabei sowohl die Zellrouter, das MPLS-basierte Traffic-Management-System und Referenz Firmware für mobile Endgeräte entwickelt.

 

Meine Aufgabe bestand vor allem darin, eine möglichst schmale und optimierte GNU/Linuxbasierte Firmware auf Grundlage weltweit entwickelter Komponenten zu implementieren und zukünftig auch ständig auf dem neuesten Stand zu halten. Gängige Distributionen sind hier aufgrund der speziellen Systemanforderungen nicht geeignet.

 

Dank meines selbst entwickelten metux Briegel Builder war diese Aufgabe - im Vergleich zu gewohnter Handarbeit - recht unkompliziert und rasch zu meistern.

 

Viele der verwendeten Pakete waren noch nicht für Embedded-Systeme und Crosscompiling geeignet. Hierzu habe ich entsprechende Patches geliefert.

 

Wichtig war jedoch auch die Anpassung und Weiterentwicklung des Linux-Kernels. Beispielsweise waren zu diesem Zeitpunkt die MPLS+RSVP-Implementation, wie auch verschiedene WLAN-Treiber noch nicht produktiv einsetzbar. Hier habe ich dem Kunden einen produktiv benutzbaren Kernel geliefert.

 

Tools+Spachen:

C/C++, Perl, Java, MPLS, WLAN, Intel Geode, Crosstool, Briegel, GNU make, GNU autotools, diffutils, CVS, Subversion, Shellscript, GNU/Linux, metux Briegel


Optimierte vServer-Images für mass hosting

 

Der Kunde betreibt Massen-Hosting von OpenVZ-basierten virtuellen Linux-Servern. Dazu bietet er eine Reihe vorgefertigter und optimierter Images für die verschiedensten Anwendungsgebiete, zB.

  • Nameserver mit BIND oder DJBDNS
  • Mailserver mit Sendmail oder qMail, UUCP, IMAP und Web-Frontend
  • Web-Appliances mit lighttpd (zB. Joomla CMS, vTiger CRM, ...)
  • Freenet nodes

 

Dem Kunden war bei dem Projekt wichtig, daß auch dauerhaft Updates und ggf. neue / veränderte Appliances, auch für andere Hardware-Architekturen rasch und kostengünstig geliefert werden können.

 

Die Images wurden mit meinem selbst entwickelten metux Briegel Builder und verschiedenen Crosscompilern erzeugt - mit diesem Werkzeug ist der Pflegeaufwand für derartige Projekte äußerst gering.

 

Tools+Spachen:

C/C++, Shellscript, m4, Bind, lighttpd, GNU make, GNU autotools, UUCP, Crosstool, Briegel, Sendmail, qMail, Joomla, vTiger, CVS, Subversion, GNU/Linux


Refacturing vom QMail Mailserver-Paket

 

Der Kunde möchte das QMail-Paket aufgesetzt bekommen und ggf. selbst administrieren. Zwar ist das QMail-Paket für seine Sicherheit berühmt, aber bisher noch extrem schwer zu installieren/ warten.

 

Erschwerend kommt hier hinzu, daß ein wichtiges Produktionssystem von Sendmail auf QMail umgestellt werden soll. Eine minimale Downtime und keinerlei Datenverlust sind hier unabdinglich.

 

Im Sinne einer längerfristig leichteren Administration und Pflege haben wir uns zunächst zu einem Refactoring des gesamten Build- und Installationsprozeß entschlossen. Dabei ist vor allem wichtig, da ß dieser ohne manuelle Eingriffe sauber in einem Zug abläuft.

Das von mir bereitgestellte Patch sorgt für einen sauberen Build- und Installations-Ablauf und macht sogar Crosscompiling möglich.

 

Tools+Spachen:

C/C++, GNU make, GCC, qmail, Subversion, LaTeX, GNU/Linux


Portierung von PostgreSQL auf Collax Linux Appliance

 

Der Kunde (anonym) ist Collax-Partner und betreut mittlerweile eine Vielzahl von Kunden mit Collax-Servern (einer Linux-basierten Business-Server Appliance mit einfach bedienbarem Web-Interface).

 

Trotz der Vielzahl der Funktionen mangelt es dem Collax noch an einem relationalem Datenbank-System. PostgreSQLbietet sich hier aufgrund des hohem Funktionsumfangs und guter Performance an.

 

Das PostgreSQL-Paket für Collax habe ich mit meinem selbst entwickelten metux Briegel Builder und einem Crosscompiler erzeugt und Patches für das saubere Crosscompiling geliefert.

 

Tools+Spachen:

C/C++, Perl, Javascript, Crosstool, Briegel, PostgreSQL, GNU make, GNU autotools, Subversion, GNU/Linux, Collax Business Server


Automatisierte Prüfung von Me ßgeräten

 

Der Kunde ist Sachverständiger für Kalibrierung von Prüfung von Druckmeßtechnik. Es wurde eine Softwarelösung für die Erfassung der Meßdaten, Erstellung von Prüfberichten sowie der Verwaltung von Kundendaten, Kundengeräten und Prüfmitteln entwickelt.

 

In enger Zusammenarbeit wird das Produkt nun auch für andere Meßgerätearten (z.b. Längenmeßtechnik) ausgebaut und in Kürze als Branchenlösung auf dem Markt angeboten.

 

Tools+Spachen:

PHP, PostgreSQL, Apache, LaTeX, Shellscript, LAMP, GNU/Linux


IT-Outsourcing für Ärzteverbände

 

Die beiden Ärzteverbände ?Deutsches Forum für Psychotherapie? (DPI) und die ?Vereinigung psychotherapeutisch tätiger Kassenärzte? (VPK) haben metux IT service ihre komplette EDV überantwortet.

 

Neben alltäglicher Wartung von EDV-Anlagen und redaktionellen Diensten zählt hierzu eine ASP-Lösung (Anwendungsdienst), mit der die Verbände ihre Mitglieder verwalten, Beiträge berechnen und sich in zahlreichen geschlossenen und offenen Mailinglisten austauschen können.

 

Zudem wurde eine Lösung erarbeitet, mit der die Verbände ihre Rundschreiben via Web erstellen, in Druckereiqualität automatisch setzen und anschließend sowohl als Newsletter ebenso wie als Briefpost verteilen lassen können.

 

Tools+Spachen:

PHP, Perl, PostgreSQL, Javascript, LaTeX, Majordomo, Java, CVS, Shellscript, LAMP, GNU/Linux


weitere Projekte gerne auf Anfrage

Aus- und Weiterbildung

Aus- und Weiterbildung

Abitur, Leistungskurs Informatik

Position

Position

  • Informationstechnische Unternehmensberatung
  • Software- und IT-System-Architekt
  • Opensource-Experte
  • Embedded-Linux Experte
  • DevOps-Experte
  • IT-Veteran

Kompetenzen

Kompetenzen

Top-Skills

Embedded Kernel Linux Treiber-Programmierung Zimbra Linux

Schwerpunkte

Linux-Embedded
  • GNU/Linux-Experte (from scratch und alle gängigen Distros)
  • Sofware Development Management and Release Engineering
  • Source Control Management
  • Anwendungs-/System-Integration, Datensynchronisation, zentrales Provisioning, etc
  • Cloud-Applications
  • Embedded-Linux / Small-Devices
  • Plattformübergreifende Portierung
  • Code-Audits, Cleanups, Build-Management, Refactoring
  • Laufzeit-Migration
  • Paketierung, Distribution, Conguration-Management
  • Protokoll- und Datenanalyse, Forensik
  • Verteilte Systeme / Grid / Cloud

Aufgabenbereiche

  • Informationstechnische Unternehmensberatung
  • Software- un System-Architekt
  • Opensource-Experte
  • Linux-Embedded-Experte
  • Kernel-/Treiber-/BSP-Entwicklung
  • Linux-Realtime
  • Linux Security
  • Linux-Architektur
  • Build- und Deployment / DevOps

Produkte / Standards / Erfahrungen / Methoden

Softwaremethoden / -Gebiete

  • OO-Methoden und -Programmierung (components, signals, etc)
  • Service-orientierte Architekturen
  • Funktionale Programmierung
  • Logikorientierte Programmierung
  • Constraint based programming + Unit-Tests
  • Hardwarenahe Programmierung
  • Embedded Systems
  • Netzwerkprogrammierung, Protokollentwicklung und -Analyse
  • Datenmodellierung (logisch, workow, physisch)
  • Verteilte Systeme / Grid-Computing / Cloud-Computing

Programmierwerkzeuge, Toolkits, Libraries

  • *nix utils (awk,sed,perl,...)
  • Builders:
    • GNU make, Imake, Autoconf/Autotools, Unitool, TreeBuild
  • SCM:
    • Git, CVS, Perforce P4, Subversion, Redmine, Bugzilla, Trac
  • GNU Toolchains
  • GUI-Toolkits:
    • Gtk, Qt, Motif, Xt, Xaw
  • Code-Generators:
    • Yacc, Lex, Bison
  • Database tools and libraries:
    • unixODBC, JDBC, libpq (PostgreSQL), mySQL, sqLite, BerkeleyDB
  • Security:
    • OpenSSL, GNU TLS, OpenSSH
  • XML:
    • SAX, Expat
  • Graphics:
    • X11, SDL, DirectFB, Linux-FB, Wayland
  • Networking/IPC:
    • SysV-IPC, 9P2000, Plan9Port (Plan9 on Unix), NetBEUI, TCPIP
  • Typesetting:
    • LaTeX, Docbook
  • IDE:
    • Emacs, Borland, Eclipse, MSVS, KDevelop

Enterprise- und Branchen-Produkte

  • Zimbra Collaboration Suite (Core customizing, Extensions, Packaging, Operating)
  • Plone Portal Platform (Core customization, Extensions, Packaging, Operating)
  • OpenERP (Core customization, Extensions, Packaging, Operating)
  • Crashplan Enterprise Backup (Packaging, Operating)
  • Proxmox VE Virtualization Platform (Customization, Packaging, Operating)
  • RSA Security Appliance
  • Elektronisches Gerichts- und Verwaltungspostfach (EGVP/OSCI)

Softwarepakete (incl. Entwicklung)

  • Paketmanagement-Technologien (zmpkg, dpkg/apt, rpm/yum, ipkg, etc)
  • Apache Webserver (Entwickler des Multiplexer MPM)
  • Nginx Webserver
  • Lighttpd Webserver
  • Android
  • Chromium
  • Qt5
  • Linux-Kernel
  • sendmail Mailserver (incl. selbstentwickelte Admin-Tools)
  • qMail (Entwicklung/Paketierung)
  • X-Window, GNOME, KDE, gnuStep (GUI-Programmierung)
  • GCC (GNU compiler collection) und andere GNU Tools
  • Mozilla + XUL (Admin, Entwickler, Crosscompiling)
  • OpenOfce (Admin, Entwickler)
  • Ghostscript
  • CRM: vTiger (Entwicklung)
  • CMS: Joomla, Content*Builder, Typo3, Plone
  • OpenERP
  • Virtualisierung: VMware, QEmu, VirtualBox, DosBOX, WinE, KVM, XEN, OpenVZ, lGuest, LXC
  • Plan9 from outer space
  • zlib (Contributor)
  • Midnight Commander (Entwickler)
  • Zimbra (Entwickler, Portierung, Customization)
  • u.v.m.

Web-Technologien

  • HTML, CSS, XML, Templates
  • XUL
  • AJAX, Meshups, XMLRPC, SOAP, JSONRPC
  • Java Applets
  • Java Servlets / JSP
  • Native Java
  • Scanner / Crawler, Suchmaschinen
  • Web-Services
  • REST
  • raw HTTP

Forschungsgebiete

  • Neue Finanzierungsmodelle für die öffentliche Hand (SFB)
  • Alternative Finanzsysteme auf Basis von Schuldverschreibungen (PLUTOS)
  • Normalisierte Sourcecode-Management Infrastruktur für Opensource Projekte (OSS-QM)
  • Standardisierte und automatisierbare Prozesse für Software-Qualitätsmanagement (OSSQM)
  • Generische Methodiken für Software-Distributionen (OSS-QM)
  • Automatisiertes Buildsystem für Micro-Distributionen und Firmware-Images (BRIEGEL)
  • Sichere und anonyme Transaktionssysteme für alternativen Zahlungsverkehr (PLUTOS)
  • Generische Hosting- und Managementplattform für Linux-Container/VServer (DGRID)
  • Workload-Management und -Distribution für VServer-Grids (DGRID)
  • Sicheres replikatives Storage-Grund mit Content-Addressierung auf Petabyte-Skala (NEBULON)
  • Java-basierte Gridcomputing-Umgebung (ESPRESSO9)
  • Verteilte Systeme auf Basis von Filesystem-Schnittstellen/9P (ESPRESSO9)

Betriebssysteme

  • GNU/Linux - Embedded, from Scratch und div. Distros
  • xBSD
  • andere UNIXe
  • Plan-9
  • Native Oberon
  • MS-DOS
  • Novell Netware
  • Windows 3.1
  • Windows 9x
  • Windows NT/2000/XP
  • ReactOS
  • L4
  • GecOS
  • Android

Programmiersprachen

  • Pascal (15 Jahre)
  • BASIC (18 Jahre)
  • C/C++ (über 20 Jahre)
  • Unix-Shellprogrammierung (20 Jahre)
  • Oberon/Modula (9 Jahre)
  • postgreSQL PL/SQL (15 Jahre)
  • Perl (13 Jahre)
  • PHP (13 Jahre)
  • Java (15 Jahre)
  • HTML + CSS (15 Jahren)
  • LaTeX (seit 15 Jahren)
  • Javascript/ECMA-Script (10 Jahre)
  • Prolog
  • Assembler
  • XUL - XML Userinterface Language
  • Python
  • Ruby / Rails
  • Haskell
  • m4
  • tcl/tk

Datenbanken

  • postgreSQL (seit 15 Jahre Projekterfahrung)
  • mySQL (seit 15 Jahren Projekterfahrung)
  • sqLite
  • LDAP
  • Berkeley-DB + nDBM + GNU DBM
  • Xindice
  • Interbase/Firebird
  • Sybase
  • ZopeDB
  • Synthetische Filesysteme

Datenkommunikation

Transport-Protokolle:
TCP/IP (IPv6, IPv6, IPSEC, IPIP, route management), IPX, NetBEUI, PPP, SLIP

Anwendungs-Protokolle:
SSL, HTTP, SOAP, XMLRPC, JSONRPC, SMTP, UUCP, Streaming, SSH

Management-Protokolle:
SNMP, RADIUS, HTCPCP, BGP

Netzwerk-Filesysteme:
NFS, 9P2000, SMB, Coda

Server-Anwendungen:
Apache HTTPD, Tomcat, Jetty, NGinx, Zimbra Collaboration Suite , Sendmail, QMail, ISC
DHCP, NPFS

Hardware

Architekturen/Plattformen:
intel/x86, x86_64, m68k, ppc, arm, Commodore, Embedded (zB. Router)

Interfaces:
RS282, RS485, CAN, ISA, USB, ATA/IDE, SCSI, WLAN, Ethernet, DSL, Cable, ISDN, SDH

System-on-Chip / Boards

Freescale - imx21, imx53, imx6, imx7, imx8

TI - Sitara - AM335xx

PC engines APU*

Branchen

Branchen

  • Finanzwesen - internationale Banken, Börsenhandel, Payment/Clearing
  • Nachrichtendienste
  • Medizinische Meÿtechnik für klinische Studien
  • IT Geräteentwicklung (Embedded systems)
  • Internetprovider + Telco
  • Medizin (Ärzteverbände)
  • Medizintechnik / Medizinprodukte
  • Maschinenbau und Gebäudetechnik
  • Öffentliche Verwaltung und Rechtspflege
  • Politik und NGOs
  • Meÿtechnik und -Kalibrierung
  • Autohäuser und KFZ-Werkstätten
  • Sport- und Kultur-Verbände
  • Werbebranche
  • Gastronomie
  • Einzelhandel
  • Textil-Manufaktur
  • Neue Medien

Einsatzorte

Einsatzorte

Deutschland
nicht möglich

Projekte

Projekte

(DevOps) Vollautomatisches Deployment von Eclipse /Sigasi-Studio

Der Kunde setzt verschiedene Eclipse-Versionen und Eclipse-basierte Tools wie zB. Sigasi Studio
ein. Diese galt es vollautomatisch auf verschiedene Zielsysteme auszurollen. Jegliche manuelle
Schritte gilt es hier zu beseitigen, um unnötige Störung der Entwickler zu elimieren und eine jederzeit vollständig reproduzierbare Arbeitsumgebung zu gewährleisten.

Ein Hauptproblem bei Eclipse liegt hier darin, daß die Installation und Updates auf manuelle
Durchführung und Ablage innerhalb des Home-Verzeichnis der einzelnen Nutzers ausgelegt ist.
Dabei werden uA. auch User-Configuration mit Programmcode vermengt - eine saubere Trennung,
wie zB. in der Unix-Welt seit Jahrzehnten bewährt, fehlt hier. Dies führt zu fehlender Reproduzierbarkeit und erheblichen Störungen, insbesondere beim Parallelbetrieb verschiedener
Versionen.

Bei Sigasi-Studio kam erschwerend hinzu, daß dieses lediglich mittels interaktivem Installer
zur Online-Installation angeboten wurde. Diese ist aber im Netzwerk des Kunden aufgrund von
Sicherheitsvorgaben nicht möglich.
Zur Lösung des Problem habe ich folgende Maßnahmen ergriffen:

  • Reverse-Engineering des Deployment-Prozess und Struktur der P2-Repositories (die offizielle
    Dokumentation ist äußerst mangelhaft)
  • Scripte zur automatischen Spiegelung von P2-Repositories ohne GUI nebst Ablage in Git
  • Scripte zum automatischen Ausfiltern von Komponenten, die bereits im Standard-Eclipse
    enthalten sind (Sigasi bietet lediglich ein Bundle aus Eclipse und Sigasi-Erweiterungen an)
  • Analyse der Abhängigkeiten und tatsächlich benötigter Komponenten / Versionen
  • Scripte/Makefiles zur Generierung eines finalen Installations-Image und Debian-Metadaten.
  • Vollautomatisch Build-Pipeline via Jenkins und docker-buildpackage, inclusive Generierung
    direkt installierbarer APT-Repository.
  • Einbindung der APT-Repository in Ansible-Scripte für die verschiedenen Zielsysteme.

Tools+Spachen:

Debian, APT, Packaging, Ansible, Eclipse, Jenkins, Sigasi-Studio, Docker-Buildpackage, Docker


(DevOps) Docker-Buildpackage: Build-Automatisierung für Debian-/Ubuntu-Pakete

Das Aufsetzen einer Build-Automation für Debian-/Ubuntu-Pakete (zB. via pbuilder oder buildd)
ist mit einigem Aufwand verbunden. Dies hängt vorallem mit der historischen Entwicklung, aber auch komplexen Anwendungszenarien wie zB. der Pflege kompletter Distributionen (mit vielen tausenden Paketen) zusammen.

Für einfachere Szenarien, wie die Pflege von Zusatz-Repositories für existierende Distributionen,
zB. Backports/Updates, zusätzliche Software, kundenspezifische Anpassungen, kommerzielle
Produkte, etc. der Komplexität exitierender Tools nicht erforderlich.

Docker-Buildpackage schafft hier unter Einsatz moderner Technologien wie Docker und Git eine
sehr einfache Alternative mit minimalem Configurations-Aufwand.

Nach initialer (geringfügiger) Configuration der Zielplattform ist der komplette Build-Prozess
aus dem Quelltext heraus, bishin zur installierbaren APT-Repository, abgewickelt. Das Tool erzeugt
dabei auch vollautomatisch die benötigte Build-Umgebung und fährt den Build-Prozeß
isoliert in einem Docker-Container ab.

Auch die Integration in CI, wie zB. Jenkins, gestaltet sich trivial.

Tools+Spachen:

Debian, APT, dpkg, Docker, docker-buildpackage, CI, Jenkins, DevOps


Beratung/Entwicklung Embedded-Linux/IOT Diagnose - Bahntechnik, Hochsee-Schiffahrt, Kraftwerke

Der Kunde ist Hersteller von Sensorik und Meßtechnik. Das Projekt befaßte sich mit der OSPlattform
und SW-/System-Architektur eines Telemetrie-/Diagnose-Geräts (vorrausschauende Wartung) für rotierende Kraftmaschinen, insbesondere große Motoren und Turbinen. Es wird vorallen in den Bereichen Bahntechnik (Lokomotiven), Seefahrt (Schiffsmotoren-/Aggregate), Kraftwerke (zB. Gas-Turbinen) eingesetzt, um frühzeitig etwaige Maschinen- Schäden, lange vor einem Ausfall, erkennen zu können.

Wichtige Anforderungen sind hier uA. hohe Robustheit/Ausfallsicherheit und lange Lebenszeit
unter rauhen Bedingungen (zB. auf hoher See, in Kraftwerken, etc) geringer Wartungsaufwand,
Umgang mit schlechten Datenverbindungen. Hinzu kommen vielfältigste kundenspezifische
Anpassugen.

Kernaufgaben im Projekt waren uA.:

  • Einführung von auf Langzeitpflege und großeVariantenvielfalt ausgelegte SCM-Techniken
  • robuste vollautomatische Build-/Deployment-Prozesse (devops)
  • Kernel-Portierung / Treiberentwicklung für div. Controller (uA. Duagon IONIA)
  • Konsolidierung der HW-Ansteuerung auf Linux-Standard-Subsysteme (zB. IIO)
  • Beratung zum Configurations- und Lizenzmanagement
  • Portierung von nodejs für embedded systems
  • Beratung zur SW-Architektur und Entwicklungs-Prozessen
  • Beratung zur Chipset-Auswahl / HW-Architektur für Custom Boards
  • Evaluation div. HW (zB. NI cRIO) auf SW-technische Nutzbarkeit für GNU/Linux-Systeme

Tools+Spachen:

C/C++, Linux-Kernel, PtxDist, Nodejs, Barebox, ADC, Git, RS485, CAN, RS232, Duagon IONIA, MVB, cmake, javascript


Kernel / BSP für Duagon IONIA (Bahntechnik / IOT)

Für einen Kunden aus der Bahntechnik wurde ein neues Linux-BSP für Duagon IONIA Maschinen
entwickelt. Die mitgelieferte/vorinstallierte Software war für den Anwendungsfall (als generischen
Industrie-Rechner anstatt MVB-Controller) nicht geeignet, uA. wegen:

  • sehr veraltet (uA. viele fehlende Kernel-Features), sehr geringe SW-Auswahl
  • fehlende Reproduzierbarkeit aus dem Sourcecode heraus (Duagon selbst konnte das BSP
    nicht mehr komplett recompilieren, geschweige denn Komponenten wie zB. Kernel upgraden)
  • proprietäre Treiber-APIs, die umfangreiche HW-spezifische Anpassungen in den Anwendungen
    nötig machen - statt Standard-APIs (zB. IIO)
  • zudem nur auf single-process / root only ausgelegt ? sehr problematisch bzgl. Stabilität
    und Sicherheit
  • keine robusten / vollautomatischen Deployment-Mechanismen (Paketmanagement etc.
    fehlt)

Das Projekt beinhaltete uA:

  • Portierung des aktuellem Mainline-Kernels (4.x) für das IONIA CPU-Modul (Treiber, Devicetree,
    Config, ...)
  • Kernel-Treiber: backplane/serial ports, RPC, DIO, LOG, IO, I701, I202, I012, IIO backend,
    etc.
  • Basis-System / BSP (ptxdist-basiert)
  • Factory-Tools
  • Beratung/Schulung zu IIO

Tools+Spachen:

C/C++, Linux-Kernel, PtxDist, ADC, Git, CAN, RS232, Duagon IONIA, MVB, cmake


HW-Anforderungen und Embedded-Linux BSP (Bahntechnik / IOT)

Für einen Kunden aus der Bahntechnik wurde ein neues Mainboard nebst Linux-BSP entwickelt.
Das Gerät dient der Messung von Rotationsmaschinen (zB. große Dieser-Motoren) zwecks
Diagnose und vorrausschauender Wartung.

Das Projekt beinhaltete uA:

  • HW-Systemanforderungen
  • Spezifikation der Schnittstelle zwischen CPU und ADC-Baugruppe/FPGA
  • Anpassung von Kernel und Bootloader
  • BSP und Build-Umgebung
  • Treiber-Entwicklung
  • Factory-Tools

Tools+Spachen:

C/C++, Linux-Kernel, Barebox, PtxDist, ADC, Git, CAN, RS232


devops: Vollautomatisches Deployment virtueller Entwicklungsumgebungen

Für einen Sensorik-Hersteller wurde das Deployment virtualisierter Entwicklungsumgebungen
unter GNU/Linux (Debian / Ubuntu) vollständig automatisiert. Diese werden sowohl als VMImages,
Docker-/LXC-Container als auch direkt in vorhandene Systeme installiert.

Hierbei wurde auch die Deployment zahlreicher kommerzieller Software, welche sonst manuelle
Installation via GUI erfordert, vollständig automatisiert.

  • vollautomatischeVMProvisionierung / Image-Erzeugung viaVagrant, Integration in ESXIUmgebung, Integration in Win7 Desktop-Umgebung des Kunden
  • vollautomatisches SW-Deployment und System-Configuration via Ansible
  • Deployment/Provisionierung von Multi-User Workstations / VNC-Servern
  • Build-Prozesse und automatisches Testing via Jenkins CI
  • Archivierung in Artifactory und Git-Repositories
  • Paketierung diverser Zusatz-SW für APT (VTK8, Sigasi Studio, Vivado, ...)
  • Lizenz-Prüfung (zB. Einhaltung div. FOSS-Lizenzen)

Vom Kunden eingesetzte kommerzielle Software läßt sich von Haus aus nicht vollautomatisch
und reproduzierbar via Paketmanagement installieren, sondern erfordern aufwändige manuelle
Installation via GUI. Zuweilen verlangt der GUI-Installer auch Internet-Zugriff oder erfordert
imensen temporäten Speicherplatz (zB. Vidado: über 30 GB!), was in der gegebenen Kunden-
Umgebung nicht möglich war.


Hier war zuweilen tiefergehende Analyse/Reverse-Engineering nötig, um einen vollautomatischen
und hinreichend performanten Installationsprozess zu entwickeln.

  • Xilix Vivado
  • Sigasi Studio
  • Sysgo PikeOS, Codeo
  • MentorGraphics Modelsim, Questa
  • Eclipse

Tools+Spachen:

Debian, APT, Ansible, Vagrant, Jenkins, ESXI, Docker, Vivado, Modelsim, Questa, PikeOS, Codeo, Eclipse, Sigasi


Beratung/Entwicklung Embedded-Linux Gebäudetechnik

 

Der Kunde ist internationaler Hersteller von Gebäudeautomatisierungen, insbesondere Aufzugstechnik. Für diesen Kunden wurden zwei Projekte bzw. Geräte betreut: einerseits Aufzugssteuerung, andererseits ein externes Telemetriegerät für Monitoring und ?predictive maintenance?.

 

Aufzugssteuerung

  • Automatisierung und Optimierung von Build- und Deployment- Prozessen und Source-Control-Management
  • Beratung bzgl. Software-Archiktetur und Entwicklungsstrategie
  • Schulung der Kollegen bzgl. Entwicklung unter GNU/Linux
  • Code-Reviews und Cleanup

 

Telemetriegerät (IOT) 

In diesem Projekt wurde ein vorhandenes Telemetriegerät um weitere Funktionen, insbesondere ?Aufzugswärter? (externes Monitoring des Steuergeräts) und Notrufsystem, aber auch Anbindung weiterer Steuergeräte- Modelle, erweitert. (uA. zur Ablösung auslaufender Zusatzgeräte) 

  • BSP- und Kernel-Anpassungen
  • Refactoring und Optimierung zur Nutzung von GNU/Linux-Bordmitteln (statt Legacy-Code)
  • Refactoring der HW-Ansteuerung / Treiberschicht
  • Refactoring der Techniker-Funktionen
  • Refactoring der Cloud-Kommunikation
  • Implementierung von Aufzugswärter- (Monitoring/Selftest) und Notruf-Funktion
  • Anbindung von Modem/GSM-TA
  • Anbindung weiterer Steuergeräte
  • Harmonisierung auf internationale Gegebenheiten (div. Gehäuse/LED-Panel, Bedienfunktionen, etc.)
  • Architektur- und Code-Review

 

Tools+Spachen:

C/C++, Linux-Kernel, PtxDist, Azure, Git, Perforce, Redmine, LaTeX, RS485, CAN, RS232, cmake, javascript


HIL-Test/Werksprüfung: Gebäudetechnik / Embedded-Linux

Der Kunde ist Hersteller von Premium-Haustechnik.
In dem Projekt wurde mittels eines HIL-Testands sowohl die Werksprüfung, als auch Entwicklungstests
automatisiert. Dies wurde durch eine Kombination von Selbsttests auf dem Gerät
und externe Signalgeber/-Abnehmer realisiert.

Dabei enthalten uA.:

  • Netzwerk-Schnittstellen (Last- und Langzeittests, Stabilität, ...)
  • Display- und Touch: Kalibierung und Qualitätskontrolle
  • Thermische Prüfung
  • Prüfung von IOs.
  • Test von Audio/Video-Streaming, Codec, GPU

Tools+Spachen:

C/C++, Linux-Kernel, PtxDist, Git, RS485, CAN, RS232, cmake, Qt, GStreamer, Labview


Beratung/Entwicklung Embedded-Linux Medizintechnik

 

Der Kunde ist Hersteller für klinische Sterilisationsgeräte. Im Zuge des Projektes wurde die Plattform für die neuen Gerätegenerationen entwickelt.

 

Im Gerät befindet sich ein imx53-Rechner mit Touch-Panel, Netzwerkport (zum Anschluss ans Praxisnetz), diverse USB-Ports (Wartungsschnittstelle, Drucker-Anschluss, externer Speicher, etc) sowie CAN-Ports zur Kommunikation mit weiteren Steuerprozessoren. Über dieses findet neben der Bedienung auch Datenverfassung und Ausdruck, Monitoring, SW-Updates, udgl. statt.

 

Hauptaugenmerk des Projekteinsatz bestand in der Bereitstellung einer Betriebssystemumgebung und Entwicklungsinfrastruktur für og. Bedienteil, bis hin zu Deployment und Feld-Updates nebst Beratung bzgl. Wartbarkeit und Sicherheit.

 

Kernpunkte waren uA.:

  • ptxdist-basiertes BSP (Board Support Package) nebst Treiberentwicklung/-Anpassung (uA. auch Portierung von Qt5 auf KMS/DRI)
  • Build- und Deployment-Prozesse mit Hinblick auf Fertigung und Wartung im Feld
  • allgemeine Entwicklungsrichlinien nebst Schulung der Kollegen
  • Automatisierung von Dokumenten und Code-Generierung
  • Sicherheitsanalysen (insb. Manipulationssicherheit und Knowhow-Schutz)
  • Beratung bzgl. SW-Architektur
  • cryptographisch gesicherte Wartungsschnittstelle
  • Evaluation neuer Prozessor-/SOC-Generationen (uA. IMX6)
  • Review und Abnahme der Zulieferungen externer Dienstleister

 

Tools+Spachen:

LaTeX, C/C++, Linux-Kernel, ptxdist, Git, shellscript, python, cmake, GNU make, OpenGL/Mesa, Qt5, imx53, imx6


Beratung zu Entwicklungsmethoden im Embedded-Linux-Bereich (BARTEC)

 

Der Kunde ist Hersteller von Meß- und Erfassungstechnik für Tanklastfahrzeuge, welche u.a. im Bereich Treibstoff- als auch Nahrungsmittel-Transport eingesetzt werden. Diese mobilen Geräte können zugleich auch die erfassten Daten online zurückmelden, welche dann zT. Auch auf dessen Servern verarbeitet und zum Endkunden geliefert werden.

 

Da die Software-Basis (Betriebssystem, Build-Umgebung, Source control management, etc) bereits sehr veraltet ist und in naher Zukunft uA. auch ein Umstieg auf neue CPU-Architekturen ansteht, benötigte der Kunde Beratung zu konkreten Strategien für eine reibungsfreie und zugleich kosteneffiziente Umstellung, welche die Weiterpflege existierender Geräte im Feld (die Lebenszeiten liegen hier in Größenordnung von 20 Jahren!) ohne große Doppelarbeiten ermöglicht.

 

Im ersten Zuge bestand die Aufgabe in eine gründlichen Bestandsaufnahme der aktuellen Situation, Konsolidierung der verschiedensten Wissens-Inseln, sowie Rekonstruktion von bereits verloren gegangenem Wissen (einige kritische Bereiche, zB. die grundlegende Build- und Deployment-Architektur, Toolchains, Kernel, Bootloader, udgl. waren Wissensmonopole von längst nicht mehr vorhandenen Mitarbeitern). An dieser Stelle traten u.a. auch immense Defizite beim Source Control

Management zu Tage, welche nicht nur erhebliche vermeidbare Aufwände, sondern auch Produktionsrisiken (z.B. fehlende Versionierung der Kernel-/Bootloader-Quellen und Mangel an reproduzierbare Build-Infrastruktur für selbige) mit sich bringen.

 

Anschließend wurden dem Kunden konkrete Vorschläge für eine eingehende Restrukturierung der Entwicklungs-Infrastruktur unterbreitet, welche auch für die nächsten Jahrzehnte eine robuste Weiterentwicklung (uA. einfacher Wechsel von CPU-Architekturen, auch bei existierenden Geräten im Feld) bei gleichzeitiger kontinuierlicher Pflege existierender Produkt-Releases ermöglicht.

 

Eine weitere Baustelle stellte die Beratung bzgl. einer ausfallsicheren Server-Infrastruktur und Datentransfer-Mechanismen für die von den Endgeräten erfassten Messdaten dar.

 

Tools+Spachen:

Git, SVN, C/C++, Linux-Kernel, GNU make, USB


Joomla Veranstaltungskalender- und Buchung für Wohlfahrtsverband (Parisat)

 

Der Kunde ist eine gemeinnützige Gesellschaft, welche operative Tätigkeiten für den Thüringer Wohlfahrtsverband erledigt. Einer der Hauptaufgaben sind Schulungsveranstaltungen für die Mitglieder angeschlossenen Wohlfahrts-Organisationen.

 

Traditionell wurden die Terminplanungen mittels Lotus-Notes erledigt und händisch in die Joomla-basierte Website eingepflegt. Buchungen fanden manuell via eMail, Telefon oder Post ab.

 

Um diesen Vorgang zu automatisieren wurde ein Veranstaltungskalender mit Buchungsfunktion in der Website implementiert, welcher einerseits in der Veranstaltungen, andererseits auch bei der Buchung fachspezifische Informationen verwaltet. Zur einfachen Integration verfügt die Lösung über Import-/Export-Schnittstellen, welche uA. auch als Datenquelle für verschiedene Abteilungen, wie zB. die Print-Redaktion fungiert.

 

Derzeit wird - nach vielen Jahren erfolgreichem Betrieb - ein Relaunch auf aktuelle Joomla-Version und Integration mit der beim Kunden verwendeten Groupware (Exchange) realisiert.

 

Tools+Spachen:

PHP, Joomla, Git, iCal, SMTP, IMAP


Source-Control- und Release-Management / Git-Migration /Contigous Integration

 

Der Auftraggeber bietet neben Systemintegration auch tiefergehendes Customizing von OpenSource-Anwendungen und Entwicklungen von Erweiterungen für selbige (insbesondere Zimbra, OpenERP, Plone, OwnCloud).

 

Die einzelnen Entwicklungsteams hatten zunächst ihren Source-Code, aber auch (meist sogar manuell erzeugte!) Builds sehr unstrukturiert in einer Subversion-Repository abgelegt. Dabei mangelte es allerdings gänzlich an einer sauberen Repository-Organisation, strukturierten Entwicklungs-, Testing- und Abnahme-Prozessen, Versions-Schemata, reproduzierbaren Build-Prozessen, udgl.

Letztlich wurde SVN hier nur als unstrukturierte Datenhalde (Fileshare) mißbraucht, einzelne Entwicklungsstände konnten nicht (ohne Weiteres) definiert herausgezogen und gebaut werden. Selbstredend hat dies immense unnötige Kosten und Verzögerungen verursacht und den Entwicklungsablauf großen Risiken ausgesetzt.

 

In meiner Rolle als Chief Architekt habe ich diese Mißstände in mehreren Schritten bereinigt:

 

Git-Migration, Reproduktion der Historie

Der Source-Code der einzelnen Produkte wurde an verschiedensten Stellen im SVN-Baum abgelegt, teils mit nicht zusammenhängenden Kopien unterschiedlicher Stände, partiell als ZIP-Archive, oft mit falschen Character-Sets, sowie auch vielen nicht zum Zugehörigen Dateien (temporäre Files, Build-Outputs, fachfremende Files, etc)

Zur Bereinigung habe ich hier einzelnen Produkte jeweils in Git importiert und anschließend mit speziell entwickelten Filter-/Rewriting-Tools über die gesamte History hinweg unnötigen Ballast entfernt, falsche Codierungen korrigiert, Verzeichnis-Strukturen angepaßt und die History aus den einzelnen Fragmenten rekonstruiert.

Das Ergbnis war eine konsistente History, aus der die einzelnen Änderungen (diff?s) jederzeit sofort ersichtlich sind, sodass nun einerseits definierte Versionsstände jederzeit reproduzierbar sind, aber auch ein detailiertes Change-Review möglich ist.

Desweiteren wurden die Entwicklungs-Teams im Umgang mit Git, sowie allgemeinen Source-Control-Methodiken trainiert.

 

Repository-Management und Redmine-Integration

Im Vorfeld hatten lediglich einige Entwickler Zugriff auf das SVN, andere haben Ihre Stände über lokale Fileshares abgeglichen. Projektspezifische Zugriffskontrolle gab es nicht.

Selbstverständlich erzeugte dies enorme Zusatzaufwände, Verzögerungen und Fehlerquellen, welche sich als sehr teuer erwiesen.

Als Lösung habe ich hier eine Redmine-Integration implementiert, welche automatisch zentrale Git-Repositories zu den einzelnen Redmine-Projekten anlegt und die Zugriffskontrolle anhand der jeweiligen Projekt-Rollen steuert. Somit war es nun möglich, ohne manuelle Zusatzaufwände, für die einzelnen Projekte Git-Repositories zur Verfügung zu stellen und je nach Bedarf Zugriffsrechte zuzuteilen.

 

Branch-Policies, Versions-Schema, Release-Management

Da im Vorfeld die Entwicklungs- und Änderungsabläufe sehr unstrukturiert und schwer nachvollziehbar verliefen, habe ich für die Entwicklungsteams definierte Prozesse eingeführt.

Zunächst habe Topic-Branches (fein granulierte Tasks/Tickets und jeweils zugehörige Branches) eingeführt, sodass hier einzelne Aufgaben weitestgehend unabhängig voneinander abgearbeitet und deren Ergebnis vor Integration in den Hauptzweig begutachtet werden können. Dieser Ansatz steigerte die allgemeine Code-Qualität und verbesserte das tägliche Lernen im Job.

Desweiteren mangelte es an einer klaren Versions-Systematik, welche es anderen Beteiligten (Produktmanagement, Operating, etc) nicht erlaubte, Rückschlüsse auf die Qualität des eines Versionssprungs (zB. welche Konsequenzen und Querabhängigkeiten wären zu erwarten?) zu ziehen. Deshalb habe ich hier ein striktes ?Semantic Versioning? eingeführt,

welches sich auch in der Branch-Struktur und Change-Management niederschlug

 

Reproduzierbare Build-Prozesse, Paketierung, Contigious Integration

Der Entwicklung mangelte es gänzlich an definierten und automatisierten Build-Prozessen. Stattdessen wurden die Builds jeweils manuell vorgenommen, was nicht nur große Kosten und Verzögerungen, sondern auch erhebliche Risiken mit sich brachte. Ebenso mangelte es auch an automatisierbaren Deployment-Prozessen, was erhebliche Zusatzaufwände in Validierung und Operating nach sich zog.

Zur Lösung des Dilemmas habe ich zunächst für die einzelnen Produkt- Bereiche automatisierbare Build-Systeme und Paketierung implementiert, sodaß jegliche Software direkt über das Paketmanagement der jeweiligen Zielplattform ausgerollt werden kann.

Für Zimbra-Erweiterungen habe ich hier eigens das Tool ZmPkg entwickelt, welches, basierend auf der bewährten dpkg/Apt-Technologie basiert und innerhalb einer Zimbra-Umgebung eine eigenständige Paketmanagement-Infrastruktur zur Verfügung stellt.

Anschließend wurde Source-Control, Build, Paketierung mit einer Jenkins- basierten Contigious-Integration zusammengeführt, welche automatisch neue Versionsstände baut, paketiert (die Pakete dabei in Repositories ablegt), auf Testsysteme ausrollt und Tests abfährt.

 

Durch diese Maßnahmen wurden die Aufwände im gesamten Entwicklungsablauf, von Design über Entwicklung, Testing bishin zum Rollout/Operating um Größenordnungen (in einigen Teilen auf weniger als ein Drittel!) reduziert.

 

Tools+Spachen:

Zimbra, Java, Javascript, Git, Shellscript, ZmPkg, Release-Engineering, Jenkins, Dpkg, Apt

 

Zeitraum:

wiederkehrend, 2012..2014


Konzeption für Groupware-Integration des Elektronischen Gerichts- und Verwaltungspostfach (EGVP)

 

Der Endkunde ist eine öffentliche-rechtliche Körperschaft in der Rechtspflege, deren Mitglieder umfangreiche Dokumente mit den Gerichten mittels des Elektronischen Gerichts- und Verwaltungspostfach (EGVP) austauschen müssen.

 

Aktuell existieren hierfür nur rein Client-seitige Lösungen mit spartanischer Benutzerführung, aufwändigem Rollout (nicht automatisierbar) und Fehlen jeglicher Integrationsmöglichkeiten.

Zudem sind diese (entgegen offizieller Verlautbarungen) ausschließlich für die grundsätzlich als unsicher einzustufende Windows-Plattform benutzbar.

Im Vorfeld des Projekts wurde dem Endkunden bereits eine Zimbra-basierte Groupware-Lösung geliefert, welche er seinen Mitgliedern (und deren Mitarbeitern) zur Verfügung stellt. In diese Groupware sollte EGVP derart integriert werden, da ß es auch - ohne zusätzliche lokale Installationen - über die Web-GUI verwendet werden kann, ohne dabei die Ende-zu-Ende-Verschlüsselung zu brechen. Dabei sollen auch erweiterte Funktionen wie zB. Mailbox-Delegationen, Volltext-Suche, Termineinladungen, udgl. für EGVP nutzbar sein.

Desweiteren wurde hier eine Dokumentation der (zu diesem Zeitpunkt noch undokumentierten) Zimbra SOAP APIs für Provisionierung und Management aus externen Führungssystemen heraus geliefert.

 

Tools+Spachen:

Zimbra, Java, EGVP, LaTeX, SOAP, GnuPG, ZmPkg


iOTP-/iTAN-Authentizierung für Zimbra

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Für verschiedene Endkunden wird eine Multifaktor-Authentifizierung mittels iOTP (aka. iTAN) als Alternative zum existierenden OTP via SMS benötigt. Das Problem besteht hier darin, daß die SMS-Zustellung in verschiedenen Ländern nur sehr unzureichend funktioniert, sodaß hier oft die Kundenbetreuer angerufen werden müssen, um ein gültiges OTP zu erhalten. Dies sind idR. gleichzeitig auch Länder, in denen eine Postzustellung noch unzuverlässiger oder unsicherer als Telefonie/SMS ist.

 

Hierzu wurde als Alternative ein iOTP-Modus entwickelt, welcher kurz umrissen wie folgt agiert:

  • Bei Problemen mit der SMS-Zustellung aktiviert der Kundenbetreuer den iOTP-Modus
  • Es wird ein iOTP-Blatt generiert und dem Kunden innerhalb der Zimbra-Plattform zugestellt
  • Dieser erfragt zu diesem Zeitpunkt noch das OTP telefonisch vom Kundenberater
  • Nach Sicherung/Ausdruck des iOTP-Blatts aktiviert er dieses durch Eingabe eines iOTP
  • Von nun an erfolgt die Authentizierung mittels iOTP anstatt OTP
  • Nach Verbrauch einer denerten Anzahl iOTPs wird ein neues Blatt generiert/gesendet

 

Die Implementation untergliedert sich in folgende Komponenten:

  • Erweiterung der Middleware um iOTP-Datenstrukturen und -Workflows
  • Rendering und Versenden des iOTP-Blatt als PDF mittels LaTeX
  • Erweiterung der SAML-basierten SSO-Plattform zur iOTP-Abfrage
  • Zimbra-Erweiterungen (Zimlets) zur iOTP-Verwaltung seitens Kunde und Kundenbetreuer

 

Tools+Spachen:

Zimbra, Postx, simplesamlphp, Jilter/Maillter, PHP, Java, Javascript, PostgreSQL, Shellscript, SAML, ZmPkg


Middleware zum User-Management für Zimbra und andere Anwendungen

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Für verschiedenene Endkunden waren bereits tiefergehende Zimbra-Customizations geliefert worden. Mit verschiedenen Folgeprojekten wurden diese jedoch stetig komplexer und benötigten eigene Datenbasis, welche nicht mehr sinnvoll in Zimbra-eigene Datenstrukturen (iW. LDAP) abzubilden waren. So wurde zB. für ein großes Bankhaus eine automatische Nutzer-Provisionierung (einschließlich der Nutzerbeziehungen und Zugriffsberechtigungen) aus einem Datafeed

heraus implementiert.

 

Außerdem bestand die Problematik, für jedes Zimbra-Upgrade bei jedem Kunden die jeweiligen Customizations auf die entsprechenden Zimbra-Versionen zu portieren. Zwar war der Aufwand durch die zuvor von mir eingeführten SCM-Methodiken schon erheblich reduziert, dennoch verblieben hier nicht unerhebliche Aufwände pro Kunde und Zimbra-Version.

 

An dieser Stelle habe ich ein grundlegendes Redesign vorgenommen, welches jegliche kundenspezifische Logik und Datenbasis in einer Middleware kapselt. Damit wurden die zuvor jeweils kundenspezifischen Core-Customizations durch eine generische ersetzt, welche nun bei allen Kunden gleichermaßen eingesetzt werden kann.

 

Die Middleware ist in Java implementiert, benötigt jedoch keine JVM. Stattdessen wird hier ein direkt ausführbares ELF-Binary erzeugt, welches als klassischer Unix-Dämon gestartet wird. Dies reduziert den Resourcen-Verbrauch erheblich, aber vereinfacht auch Build, Deployment und Betrieb.

 

Zur Kommunikation zwischen Middleware und Satellitensystemen (von denen Zimbranun nur eines von mehreren ist) wird einen einfaches HTTP-basiertest, REST-artiges Protokoll verwendet, welches Aufgrund seiner Einfachheit sehr einfach (uA. auch in Shellscripts) implementiert werden kann. Im Gegensatz zu klassischen Ansätzen wie zB. SOAP oder XMLRPC vereinfacht dies die Entwicklung erheblich und spart Resourcen.

 

Zur möglichst effizienten Code-Wiederverwendung werden im Entwicklungsverlauf stets eine generische und verschiedene kundenspezifische Branches gepflegt. Nach Möglichkeit werden neue Funktionalitäten oder zumindest die Schnittstellen generisch ausgelegt und in der generischen Branch implementiert, während die kundenspezifischen Branches - welche jeweils auf die aktuelle generische Branch rebase?ed werden und nur die rein kundenspezifischen Anpassungen enthalten. Dies gilt auch für das DB-Schema, in welchem generische und kundenspezifische Relationen in verschiedene Namensräume getrennt und fachspezifische Datenstrukturen mittels (schreibbarer) Views auf generische Abgebildet werden.

 

Die Implementierung erstreckt sich über folgende Komponenten:

  • Middleware-Server (klassicher Unix-Dämon, als .deb paketiert)
  • Datenbank-Instanz mit generischen und kundenspezifischen Schemata (PostgreSQL)
  • kundenspezifischer Importer
  • Provisionierer
  • Mail-Filter zur Sicherung der Kommunikationskontrolle
  • Zimbra Core-Customizations
  • diverse Zimlets (zB. middleware-basiertes Addressbuch)
  • SAML Login-Portal (ggf. mit kundenspezifischen Modulen)

 

Tools+Spachen:

Zimbra, LDAP, simplesamlphp, Java, GCJ, Javascript, PostgreSQL, Shellscript, ZmPkg 


Zimbra-basierte sicher Kommunikationsplatform zur Neukundenaquise für internationale Großbank

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Für eine internationale Großbank wurde bereits im Vorfeld sichere Plattform zur Kommunikation zwischen der Bank und ihren Kunden, sowie externen Anlageberatern entwickelt. In diese galt es nun auch, potentielle Neukunden - für die Dauer der Verhandlungen - aufzunehmen.

 

Das fachliche Szenario stellt sich wie folgt dar:

In Ländern mit schwacher Infrastruktur bzw. dünner Siedlungsstruktur unterhält das Bankhaus idR. keine oder nur wenige Niederlassungen. Um dennoch hier Neukunden, zB. für das Anlagegeschäft, aquirieren zu können, werden diese von externen Vertretern vor Ort an Kundenberater des Bankhauses vermittelt. Diese eröffnen temporäre Zugänge zur Zimbra-Plattform, ein Aktivierungscode wird dem Neukunden über einen separaten Kanal zugestellt. Mit diesem kann jener seinen Zugang aktivieren und zugleich seine bereits erfaßten Stammdaten bestätigen bzw. korrigieren. Anschließend steht ihm die Zimbra-Plattform zur Verfügung und die Verhandlungen mit dem Kundenberater können beginnen. Nach Abschluß der Verhandlungen wird dieser temporäre Zugang wieder geschlossen und die Kommunikation archiviert.

 

Zusätzlich kann der Kundenberater Zusatz-Informationen, zB. den Verhandlungs-Status verwalten. Sämtliche Aktionen (zB. Zustandsänderungen, eMails, etc) werden zudem für evtl. spätere Nachprüfungen in einem Journal erfaßt.

 

Die Implementation dieser Funktionalität gliedert sich in verschiedene Komponenten auf:

  • Management-Tool für den Kundenberater (ZimbraErweiterung - Zimlet)
  • Middleware-Erweiterung: Daten und Zustandsautomat für die Neukunden-Daten
  • Provisionier für die temporären Zimbra-Accounts
  • Mail-Filter zur Journal-Erfassung der Mails
  • Erweiterung der SSO-Plattform
  • Self-Registration-Portal
  • Report-Generierung als PDF mittels LaTeX

 

Tools+Spachen:

LaTeX, Zimbra, Postx, simplesamlphp, Jilter/Maillter, PHP, Java, Javascript, PostgreSQL, Shellscript, ZmPkg


GNU/Linux Software Packaging und automatische Builds

 

Der Auftraggeber ist Anbieter für Business Cloud Lösungen und hat hier verschiedene Produkte, zB. Zimbra, Plone, Redmine, OpenERP im Portfolio. Er entwickelt diese auch weiter und paßt sie kundenspezifisch an.

 

Für ein einfaches und reproduzierbares Deployment habe ich hier eine stringente Paketierung eingeführt: jegliche Software (auch proprietäre Produkte, wie zB. CrashPlan) werden ausschließlich mittels Paketmanagement der jeweiligen Plattform ausgerollt ? vom Entwicklungs-Testsystem über Validierung/Preproduction bis hin zum tatsächlichen Produktivsystem.

 

Die verschiedenen Qualitätsstufen werden hier durch separate Repositories abgebildet.

 

Desweiteren wurde eine automatische Build-Infrastruktur (basierend auf Jenkins) implementiert, welche die aktuelle Codebasis vollautomatisch compiliert, paketiert, auf Testsysteme ausrollt (via Paketmanagement) und verschiedenste Tests abfährt.

 

Mittels dieser Infrastruktur wurden die Rollout-Zeiten (in allen Stufen, von der Entwicklung bis hin zum Produktivbetrieb) deutlich reduziert und ein hohes Maß an Reproduzierbarkeit hergestellt.

 

Tools+Spachen:

git, dpkg, apt, pbuilder, jenkins, rpm, yum, mock

 

Zeitraum:

wiederkehrend, 2012..2014


Zimbra-basierte Secure Communication Platform für internationale Großbank

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Für eine internationale Großbank wurde in mehreren Stufen eine sichere Plattform für die Kommunikation zwischen der Bank und ihren Kunden, sowie externen Anlageberatern entwickelt.

 

Im Gegensatz zu gängigen Groupware-Umgebungen ist diese Plattform aufgrund der verstärkten Sicherheitsanforderungen scharf abgeriegelt:

 Mehrwege-Authentifizierung mittels RSA-Token

 Eingeschränkte Kommunikation: Nutzer können ausschließlich nach klar definierten Beziehungen miteinander kommunizieren (zB. Kunden nur mit deren Beratern, die Berater nur innerhalb der Abteilung) - jegliche davon abweichende Kommunikationsversuche werden technisch unterbunden.

 Limitierte Features: einige Standard-Features, die in diesem Szenario zu einem Sicherheitsleck werden könnten (zB. herunterladen von eMails) wurden stillgelegt.

 

Diese Anpassungen wurden mittels kundenspezifischer Core-Customizations gewährleistet, welche mittels Zimbra Package Manager paktiert und ausgerollt.

In einer weiteren Stufe wurden weitere Nutzertypen mit komplexeren Kommunikations-Beziehungen angebunden und diese direkt aus einer extern eingelieferten Datenquelle provisioniert.

 

Um den Entwicklungs- und Wartungsaufwand auch für die Zukunft gering zu halten (schließlich müssen Zimbra-Customizations vor jedem Zimbra-Upgrade zunächst entsprechend auf die neue Version angepaßt werden) haben wir eine generische Lösung über eine eigene Middleware implementiert, welche mittels einer einfachen REST-API angesprochen wird und auch die User-Provisionierung übernimmt. Die Zimbra-seitigen Erweiterungen und Core-Customizations sind derart generisch ausgelegt, da ß sie lediglich fein granulierte Nutzer-Eigenschaften von der Middleware abfragt und damit Features, Berechtigungen, etc. steuert - diese werden als eigenständiges, standardisiertes Produkt (ohne kundenspezfische Anpassungen) angeboten. Kundenspezifische Anpassungen finden damit nur noch innerhalb der Middleware statt, womit sich die Customizing-Aufwände dramatisch reduzieren.

In diesem Projekt lag die Architektur-Planung, Entwicklungsleitung/Release-Management und Implementation der Middleware in meiner Verantwortung.

 

Tools+Spachen:

Zimbra, Java, Javascript, PostgreSQL, Shellscript, ZmPkg

 

Zeitraum:

wiederkehrend, 2012..2014


Zimbra Package Management

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

In dem Bereich ist es wichtig, da ß Deployments und Upgrade von Zimbra-Erweiterungen und -Core-Customizations (kundenspezifische Anpassungen in der Kernanwendung) sicher, robust und automatisiert ablaufen, da sonst die Aufwände und Betriebsrisiken rasch kaufmännisch inretabel würden. Aber auch in der Entwicklung ist dies wichtig, um kontinuierlich konsistente Testumgebungen - ohne zusätzliche manuelle Aufwände herzustellen (contigous integration, etc).

 

Mit den Zimbra-Bordmitteln lä ßt sich nur eine Art von Erweiterungen - die ?Zimlets? genannten GUI Erweitungen - automatisiert installieren und entfernen. Dies ist aber auch nur unter Einschränkungen möglich: bringt ein solches ?Zimlet? beispielsweise eigene (Java-)Bibliotheken mit, werden diese zwar installiert, aber können nicht mehr bei Deinstallations des Zimlets automatisch entfernt werden. Zudem ist keine Konflikt- Prüfung bzw. -Verhinderung möglich.

 

Für andere Arten von Zimbra-Erweiterungen, zB. den ?Server-Extensions? (mit diesen lassen sich serverseitige Ereignisse, wie zB. neuer Maileingang oder diverse Nutzeraktionen verarbeiten) oder auch Core-Customizations (Anpassungen/Erweiterungen im Applikationskern) bietet Zimbra von Haus aus keinerlei Deployment-Mechanismus.

Damit besteht das Problem, da ß für jede (nicht-triviale) Zimbra-Erweiterung eigenens Installations-/Upgrade-/Deinstallations-Programme geschrieben werden müßten, und andererseits Administratoren nur schwer einen Überblick bekommen, welche Erweiterungen in welchen Versionen aktuell installiert sind. Dies macht das Management der Zimbra- Erweiterungen über den gesamten Lebenszyklus - von Entwicklung/Testing/Release-Management bis hin zum Produktivsystem sehr aufwändig und teuer.

 

Um dieses Problem an der Wurzel zu lösen, habe ich dem Auftraggeber eine Paket-Management-System für Zimbra ? ?ZMPKG? geliefert. Dieses basiert auf der bei professionellen GNU/Linux-Distributionen bewährte Paketmanagement-Technologie ?dpkg?+?apt?, agiert jedoch vom Betriebssystem unabhängig, nur innerhalb der Zimbra-Instanz. Es ist somit auch auf anderen GNU/Linux-Distributionen, nicht auf ?dpkg? basieren (zB. RedHat oder SuSE) einsetzbar - hier

werden die noch benötigten Komponenten vom Installer mitgeliefert.

 

ZMPKG bildet den gesamten Prozess - beginnend vom Build, bis hin zum Deployment, Upgrade und auch vollständiger Deinstallaion - ab. Der Administrator kann mit den gewohnten Werkzeugen nach Belieben Zimbra-Pakete aus dem zentralen Repositorium installieren und upgraden.

 

Parallel dazu wurde auch eine Jenkins-basierte automatisierte Build-/Test-Umgebung aufgesetzt, mit der von der Entwicklung kommende Änderungen automatisch übersetzt/paketiert und auf Testsysteme aufgespielt werden.

 

Mittels dieser Technologie wurden beim Auftraggeber die Aufwände für Entwicklung, Testing und Rollout rapide reduziert. Bisher aufwändige Deployment-Tasks wurden iW. auf einen Befehlsaufruf reduziert.

 

Die ZMPKG-Technologie steht als OpenSource-Produkt kostenfrei zur Verfügung.

 

Tools+Spachen:

Zimbra, Shellscript, dpkg, apt, rpm, GNU make

 

Zeitraum:

wiederkehrend, 2013, 2013


Zimbra Mail History

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Verschiedene Kunden des Auftraggebers benötigten eine Lösung mittels derer innerhalb von Zimbra der Absender einer eMail nachvollziehen kann, an welche Empfänger diese gesendet und von wem diese wann gelesen wurde. (ähnlich wie dieses zB. auch DE-Mail anbieten soll).

 

Die in diesem Projekt entwickelte Lösung zeichnet die einzelnen Mail-Ereignisse (gesendet, empfangen, gelesen, etc) und ordnet sie derart zu, daß der Absender den Zustellungs-/Lese-Status jederzeit bequem einsehen kann. Somit können beispielsweise bei Fristensachen die Zustellungen nachgewiesen werden.

 

Um einen reibungslosen Betrieb, sowohl in Cluster-Umgebungen (Zimbra läßt sich schließlich auch in einem großen Cluster mit hundertausenden bis millionen Nutzern betreiben), aber auch mit externen Weiterleitungen, zu gewährleisten, waren tiefgreifendere Anpassungen an verschiedenen Fronten nötig. Hierzu mußte einiges an R&E-Arbeit geleistet und Zimbra in der Tiefe analysiert werden.

 

In diesem Projekt lag die Konzeption/Architektur und Entwicklungs-Leitung, sowie große Teile der Implementation in meiner Verantwortung. Die Entwicklung wurde von einem internationalen (über verschiedene Kontinente verteilten) Team geleistet.

 

Tools+Spachen:

Zimbra, Java, Jilter/Maillter, Javascript, Mysql, Shellcsript, Postx, ZmPkg


Zimbra OpenERP Connector

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Um einen direkten Zugriff auf wichtige ERP-Funktionen (OpenERP) aus Zimbra heraus zu ermöglichen, wurde mit einem internationalen Team ein Connector-?Zimlet? entwickelt. Dieses ist einfach mittels Zimbra Package Manager zu installieren und kann sowohl auf OpenERP-6 als auch OpenERP-7 zugreifen.

 

Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.

 

Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:

  • Software-Architektur und technische Leitung
  • Qualitäts-Management
  • Release-Management
  • Paketierung

 

Tools+Spachen:

Zimbra, Java, Javascript, OpenERP, Python, ZmPkg


Zimbra Plone-Connector

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Um einen direkten Zugriff auf wichtige der Plone-Portalplattform (welche der Kunde auch für sein eigenes Portal einsetzt), wie zB. schnellen Dokumenten-Upload, aus Zimbra heraus zu ermöglichen, wurde mit einem internationalen Team ein Connector-?Zimlet? entwickelt. Dieses ist einfach mittels Zimbra Package Manager zu installieren.

 

Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.

 

Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:

  • Software-Architektur und technische Leitung
  • Qualitäts-Management
  • Release-Management
  • Paketierung

 

Tools+Spachen:

Zimbra, Java, Javascript, Plone, Python, ZmPkg


Zimbra CRM

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Da viele Zimbra-Anwender eine leichtgewichtige, in Zimbra integrierte, CRM-Lösung benötigen, ohne dabei gleich zu einer großen Lösung, wie zB. OpenERP greifen zu müssen, wurde hierfür ein eigenes ?Zimlet? entwickelt, welches grundlegende CRM-Funktionen bereitstellt. Dieses ist einfach mittels Zimbra Package Manager zu installieren.

 

Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.

 

Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:

  • Software-Architektur und technische Leitung
  • Qualitäts-Management
  • Release-Management
  • Paketierung

 

Tools+Spachen:

Zimbra, Java, Javascript, ZmPkg, GNU make


Zimbra Owncloud Client

 

Der Auftraggeber ist der führende Anbieter für Integration und Customizing der Enterprise-Groupware Zimbra Collaboration Suite in Europa, und entwickelt auch eigene Erweiterungen für Zimbra. Zu den Kunden gehören uA. internationale Großbanken, große Verbände und öffentliche Institutionen.

 

Um die in Zimbra zukünftig nicht mehr vorhandene Dateiablage zu ersetzen und diese auch zentral für andere Systeme verfügbar zu machen, wurde eine Owncloud-Erweiterung entwickelt. Diese liegt zwei Varianten, Einzelnutzer (per User-Conguration) und Enterprise (zentrale LDAP-Provisionierung/Authentifizierung) vor.

 

Die Basis-Version ist als OpenSource erhältlich, eine kommerzielle Variante bietet darüber hinaus erweiterte Funktionalitäten.

 

Meine primäre Verantwortungsbereiche innerhalb des Projekts lagen in:

  • Software-Architektur und technische Leitung
  • Qualitäts-Management
  • Release-Management
  • Paketierung

 

Tools+Spachen:

Zimbra, Java, Javascript, ZmPkg, GNU make, OwnCloud


Embedded: Spriometrie- und EKG-Me ßcomputer für klinische Studien (ERT)

 

Der Kunde ist führender Anbieter für die technische Abwicklung klinischer Studien zur Medikamentenzulassung im Bereich Spirometrie (Lungenfunktionsmessung) und EKG.

 

Hierzu stellt er den auftraggebenen Pharma-Herstellern uA. spezialisierte Meßcomputer mit jeweils studienspezifisch angepaßter Firmware zur Verfügung. Diese Geräte werden in den an den Studien weltweit teilnehmenden Kliniken aufgestellt und vom dortigen medizinischen Personal zur Datenerfassung, Messung verwendet. Anschließend werden diese gesammelten Daten ins Rechenzentrum übertragen, weiterverarbeitet (Data-Cleaning) und dem Pharma-Hersteller zur Studienauswertung übergeben.

 

Mein Verantwortungsbereich lag in der Weiterentwicklung und Anpassung des Produkte ?FlowScreen? (Spirometrie) und ?CoreScreen? (EKG), sowie der Zusammenführung der verschiedener Produktlinien zu einem generischen, leicht anpaßbaren Gerät. Es handelt sich hierbei um einen ARMMX.21-basierten Computer mit eingebauter Industrie-Tastatur, Touchscreen, Drucker (HP OJ-470), mit einer Embedded-Linux-basierten Firmware.

 

Die erste Projektphase bestand in der Portierung der Software auf eine neue Hardware-Plattform. Insbesondere mußten hier Toolchain, Buildprozesse, Bootup, Treiber, udgl. angepaßt/portiert werden. In dem Zuge habe ich auch das Firmware- Deployment derart vereinfacht, da ß Upgrades nun auch vom Benutzer im Feld selbst durchgeführt werden können.

 

In der zweiten Projektphase wurden dann die ersten Studien-Entwicklungen (kundenspezifische Customizations) auf der neuen Plattform durchgeführt. Zum vereinfachten Management derartiger paralleler bzw. aufeinander basierender Entwicklungslinien habe ich zudem neue SCM-Prozesse und Tools (Git-basiert, downstream-branches, etc), sowie automatisiertes Build-/Delivery (contigious integration, etc) eingeführt. Desweiteren habe ich auch die Entwicklungs-

Infrastruktur modernisiert, um diese robuster und um ein vielfaches schneller zu gestalten.

 

Mit der dritten Projektphase wurden, parallel zu verschiedenen Studien-Entwicklungen wurde die Software-Plattform weitgehend modernisiert, insbesondere die vormals jeweils direkt im Quellcode stattgefundenen kundenspezifische Anpassungen durch generische Configuration/Parametrisierung abgelöst. Damit wurden die Aufwände und Zeitrahmen für die studienspezifischen Anpassungen im Schnitt um ca. 2/3 reduziert.

 

Insgesamt nahm das Projekt ein volles Jahr in Anspruch.

 

Tools+Spachen:

C/C++, Perl, GNU/Linux (incl. Kernel-Entwicklung), Git, GCC, Crosscompiler, ARM/MX.21


MySQL Geoclustering (1und1 Internet AG)

 

Der Kunde hat seine Hosting-Infrastruktur auf Geoclustering (Transatlantik-Spiegelung) erweitert, um seine Ausfallsicherheit und permanente Verfügbarkeit weiter zu erhöhen.

 

Um bei einer Umschaltung einzelner Clusterknoten unnötigen transkontinentalen Quertraffic zu vermeiden, war es nötig, einzelne Kunden-Datenbanken zwischen den Clusterknoten zu verschieben (Entmaschung), ohne jedoch den betreffenden Kunden neue Zugangsdaten zuteilen zu müssen.

 

Um dieses Ziel zu erreichen, wurde ein transparenter Umleitungsmechanismus implementiert, mittels dem der Kunde seine Datenbanken auch nach Umzug unter denselben Zugangsdaten erreicht. Hierzu waren auch tiefergehende Eingriffe in der MySQL-Software wie auch diversen Inhouse-Systemen erforderlich.

 

Dem vorraus gingen eingehende Analysen, umsicherzustellen, da ß die gewählte Lösung sowohl technisch sauber funktioniert, aber auch in der einzigartigen Größenordnung beim Massenhosting (mehrere Millionen Kunden) sicher und performant betrieben werden kann.

 

Parallel dazu waren noch Probleme mit DRBD zu lösen, um eine sicherere und performante Transatlantik-Spiegelung (auf Petabyte-Skala) zu ermöglichen.

 

Diese Arbeiten nahmen ca. 4 Monate in Anspruch.

 

Tools+Spachen:

C/C++, PHP, Perl, MySQL, GNU/Linux (incl. Kernel-Entwicklung), Sybase, Git, GCC, Debian Linux, Subversion, iptables, OpenVZ, DRBD

 

Zeitraum:

Frühjahr/Sommer 2010


Media-Portal Plattform: MediaCloud

 

Der Kunde betreibt seit einigen Jahren eine Community-Plattform für Künstler im Filmbereich (Schauspieler, Filmemacher, udgl.) auf Joomla-Basis, die um Video-/Musik-Upload erweitert werden sollte. Gleichzeitig sollten mehrere neue Video-Communities für verschiedenste Zielgruppen aufgebaut werden, die untereinander vernetzt sind und auf einen gemeinsamen Datenpool zugreifen.

 

In diesem Zuge wurde das Produkt metux MediaCloud entwickelt. Es handelt sich hierbei um eine eigenständige Server-Infrastruktur für größere Video-/Medien-Portale, die in verschiedenste Portalsysteme, wie zB. Joomla, eingebunden werden kann. Die metux MediaCloud-Infrastruktur übernimmt dabei Upload, Convertierung, Verwaltung und Wiedergabe der gesamten Mediendateien. An eine MediaCloud-Instanz können beliebig viele Portale mit individuellen Berechtigungen

angebunden werden, sodaß beispielsweise Medien eines Portals in anderen sichtbar gemacht werden können.

 

Im Rahmen des Projektes wurde zunächst die Server-Infrastruktur errichtet/betreut und sukzessiv 32 derartige Portale für verschiedene Zielgruppen mit diversen Zusatzfunktionen aufgebaut, beispielsweise:

  • Gemeinsamer Userpool der beiden Hauptportale
  • Roaming zwischen allen Portalen
  • externes Roaming via OpenID
  • Zahlungssystem / Verkauf von kostenpflichtigen Medien
  • Shop-Integration
  • Orderprozeß für Kreditkarten und Mobilfunkverträgen
  • Portalspezifische Community-Anpassungen
  • Datingportal mit Partner-Matching und Video-Chat
  • Immobilien-Börse mit Videos
  • Web-Phone-Integration (Purtel)
  • Integration von Livestreams zahlreicher internationaler TV-Stationen
  • Anbindung an Facebook und MySpace
  • u.v.m.

 

Tools+Spachen:

C/C++, Plan9, Venti, PHP, Perl, PostgreSQL, Javascript, AJAX, Shellscript, Lighttpd, LAMP, Git, ffmpeg, mplayer, Flash, Red5, Nagios, Gentoo Linux, metux Media-Cloud


Virtualisierte und Redundante Serverumgebung

 

Der Kunde betreibt mehrere Server mit verschiedensten Anwendungen (Mailserver, Webserver, Datenbanken, eigenes Web-Portal), die für den Geschäftsbetrieb kritisch sind. Aufgrund eines bereits erfolgten Angriffs ist dem Kunden die Sicherheit besonders in den Mittelpunkt gerückt.

 

Um die Schadmöglichkeiten im Falle eines Angriffs auf ein Minimum zu reduzieren, wird das ganze System mittels OpenVZ virtualisiert: jeder Dienst erhält eine eigene virtuelle Umgebung. Die Software innerhalb der einzelnen VZ?s stammt nicht aus einer gängigen Distribution, sondern wird mittels der Eigenentwicklung metux Briegel Builder(siehe Projekte) für jede einzelne VZ speziell erzeugt. Dabei enthält jede VZ nur jeweils nur einen Service und ausschließlich den dafür benötigen Programmcode. Updates, regelmäßige Integritätsprüfung und automatische Wiederherstellung der einzelnen VZ?s finden vom Host-System aus statt. Das Host-System selbst ist im Normalbetrieb nicht via Internet erreichbar.

 

Eine nicht zu unterschätzende Herausforderung besteht in diesem Projekt darin, sämtliche benötigten Pakete für Crosscompiling/Sysroot vorzubereiten - viele Pakete sind dafür noch nicht von Haus aus geeignet.

 

Tools+Spachen:

C/C++, Java, Perl, Shellscript, Briegel, Sendmail, lighttpd, PHP,Apache, qMail, IMAP, POP3, LDAP, PostgreSQL, mySQL, Lighttpd, Nagios, Git, GNU/Linux


Embedded-Linux Entwicklungsplattform und Paket-Portierung

 

Der Kunde (aufgrund NDA nicht näher genannt) entwickelt eine ISP-Plattform zum Aufbau von öffentlichen WLAN-Netzen mittels gängigen DSL-Anschlüssen und den dort verfügbaren Endgeräten.

 

Dazu wird für die gängigen DSL-WLAN-Router (zB. FritzBox) eine eigene Linux-basierte Firmware mit einer Virtualisierungslösung benötigt. Existierende Distributionen/Werkzeuge (zB.Open-WRT) wurden für ungeeignet befunden.

 

Ich habe für dieses Projekt mein Produkt metux Briegel Builder geliefert, das sämtliche Build-Schritte - vom Herunterladen der Quellen, Patching, Compilieren in einer virtuellen Umgebung (SYSROOT) bis hin zur Paketierung und Image-Generierung - vollautomatisch ausführt.

 

Dazu gehören zahlreiche Anpassungen und Fixes an den verwendeten Paketen (zB. um ein sauberes Crosscompiling zu ermöglichen), für die von mir Patches geliefert wurden.

 

Tools+Spachen:

C/C++, GNU make, Linux-Kernel, MPLS, Crosstool, Briegel, Diffutils, CVS, Perl, Shellscript, GNU/Linux, metux Briegel


Maßgeschneiderte GNU/Linux-Firmware für WLAN-VoIP-Router

 

Die TU-Ilmenau entwickelte in einem Forschungsprojekt eine Infrastruktur für mobile Telefonie- und Videodienste auf Basis von gängier WLAN-Technik. Es werden dabei sowohl die Zellrouter, das MPLS-basierte Traffic-Management-System und Referenz Firmware für mobile Endgeräte entwickelt.

 

Meine Aufgabe bestand vor allem darin, eine möglichst schmale und optimierte GNU/Linuxbasierte Firmware auf Grundlage weltweit entwickelter Komponenten zu implementieren und zukünftig auch ständig auf dem neuesten Stand zu halten. Gängige Distributionen sind hier aufgrund der speziellen Systemanforderungen nicht geeignet.

 

Dank meines selbst entwickelten metux Briegel Builder war diese Aufgabe - im Vergleich zu gewohnter Handarbeit - recht unkompliziert und rasch zu meistern.

 

Viele der verwendeten Pakete waren noch nicht für Embedded-Systeme und Crosscompiling geeignet. Hierzu habe ich entsprechende Patches geliefert.

 

Wichtig war jedoch auch die Anpassung und Weiterentwicklung des Linux-Kernels. Beispielsweise waren zu diesem Zeitpunkt die MPLS+RSVP-Implementation, wie auch verschiedene WLAN-Treiber noch nicht produktiv einsetzbar. Hier habe ich dem Kunden einen produktiv benutzbaren Kernel geliefert.

 

Tools+Spachen:

C/C++, Perl, Java, MPLS, WLAN, Intel Geode, Crosstool, Briegel, GNU make, GNU autotools, diffutils, CVS, Subversion, Shellscript, GNU/Linux, metux Briegel


Optimierte vServer-Images für mass hosting

 

Der Kunde betreibt Massen-Hosting von OpenVZ-basierten virtuellen Linux-Servern. Dazu bietet er eine Reihe vorgefertigter und optimierter Images für die verschiedensten Anwendungsgebiete, zB.

  • Nameserver mit BIND oder DJBDNS
  • Mailserver mit Sendmail oder qMail, UUCP, IMAP und Web-Frontend
  • Web-Appliances mit lighttpd (zB. Joomla CMS, vTiger CRM, ...)
  • Freenet nodes

 

Dem Kunden war bei dem Projekt wichtig, daß auch dauerhaft Updates und ggf. neue / veränderte Appliances, auch für andere Hardware-Architekturen rasch und kostengünstig geliefert werden können.

 

Die Images wurden mit meinem selbst entwickelten metux Briegel Builder und verschiedenen Crosscompilern erzeugt - mit diesem Werkzeug ist der Pflegeaufwand für derartige Projekte äußerst gering.

 

Tools+Spachen:

C/C++, Shellscript, m4, Bind, lighttpd, GNU make, GNU autotools, UUCP, Crosstool, Briegel, Sendmail, qMail, Joomla, vTiger, CVS, Subversion, GNU/Linux


Refacturing vom QMail Mailserver-Paket

 

Der Kunde möchte das QMail-Paket aufgesetzt bekommen und ggf. selbst administrieren. Zwar ist das QMail-Paket für seine Sicherheit berühmt, aber bisher noch extrem schwer zu installieren/ warten.

 

Erschwerend kommt hier hinzu, daß ein wichtiges Produktionssystem von Sendmail auf QMail umgestellt werden soll. Eine minimale Downtime und keinerlei Datenverlust sind hier unabdinglich.

 

Im Sinne einer längerfristig leichteren Administration und Pflege haben wir uns zunächst zu einem Refactoring des gesamten Build- und Installationsprozeß entschlossen. Dabei ist vor allem wichtig, da ß dieser ohne manuelle Eingriffe sauber in einem Zug abläuft.

Das von mir bereitgestellte Patch sorgt für einen sauberen Build- und Installations-Ablauf und macht sogar Crosscompiling möglich.

 

Tools+Spachen:

C/C++, GNU make, GCC, qmail, Subversion, LaTeX, GNU/Linux


Portierung von PostgreSQL auf Collax Linux Appliance

 

Der Kunde (anonym) ist Collax-Partner und betreut mittlerweile eine Vielzahl von Kunden mit Collax-Servern (einer Linux-basierten Business-Server Appliance mit einfach bedienbarem Web-Interface).

 

Trotz der Vielzahl der Funktionen mangelt es dem Collax noch an einem relationalem Datenbank-System. PostgreSQLbietet sich hier aufgrund des hohem Funktionsumfangs und guter Performance an.

 

Das PostgreSQL-Paket für Collax habe ich mit meinem selbst entwickelten metux Briegel Builder und einem Crosscompiler erzeugt und Patches für das saubere Crosscompiling geliefert.

 

Tools+Spachen:

C/C++, Perl, Javascript, Crosstool, Briegel, PostgreSQL, GNU make, GNU autotools, Subversion, GNU/Linux, Collax Business Server


Automatisierte Prüfung von Me ßgeräten

 

Der Kunde ist Sachverständiger für Kalibrierung von Prüfung von Druckmeßtechnik. Es wurde eine Softwarelösung für die Erfassung der Meßdaten, Erstellung von Prüfberichten sowie der Verwaltung von Kundendaten, Kundengeräten und Prüfmitteln entwickelt.

 

In enger Zusammenarbeit wird das Produkt nun auch für andere Meßgerätearten (z.b. Längenmeßtechnik) ausgebaut und in Kürze als Branchenlösung auf dem Markt angeboten.

 

Tools+Spachen:

PHP, PostgreSQL, Apache, LaTeX, Shellscript, LAMP, GNU/Linux


IT-Outsourcing für Ärzteverbände

 

Die beiden Ärzteverbände ?Deutsches Forum für Psychotherapie? (DPI) und die ?Vereinigung psychotherapeutisch tätiger Kassenärzte? (VPK) haben metux IT service ihre komplette EDV überantwortet.

 

Neben alltäglicher Wartung von EDV-Anlagen und redaktionellen Diensten zählt hierzu eine ASP-Lösung (Anwendungsdienst), mit der die Verbände ihre Mitglieder verwalten, Beiträge berechnen und sich in zahlreichen geschlossenen und offenen Mailinglisten austauschen können.

 

Zudem wurde eine Lösung erarbeitet, mit der die Verbände ihre Rundschreiben via Web erstellen, in Druckereiqualität automatisch setzen und anschließend sowohl als Newsletter ebenso wie als Briefpost verteilen lassen können.

 

Tools+Spachen:

PHP, Perl, PostgreSQL, Javascript, LaTeX, Majordomo, Java, CVS, Shellscript, LAMP, GNU/Linux


weitere Projekte gerne auf Anfrage

Aus- und Weiterbildung

Aus- und Weiterbildung

Abitur, Leistungskurs Informatik

Position

Position

  • Informationstechnische Unternehmensberatung
  • Software- und IT-System-Architekt
  • Opensource-Experte
  • Embedded-Linux Experte
  • DevOps-Experte
  • IT-Veteran

Kompetenzen

Kompetenzen

Top-Skills

Embedded Kernel Linux Treiber-Programmierung Zimbra Linux

Schwerpunkte

Linux-Embedded
  • GNU/Linux-Experte (from scratch und alle gängigen Distros)
  • Sofware Development Management and Release Engineering
  • Source Control Management
  • Anwendungs-/System-Integration, Datensynchronisation, zentrales Provisioning, etc
  • Cloud-Applications
  • Embedded-Linux / Small-Devices
  • Plattformübergreifende Portierung
  • Code-Audits, Cleanups, Build-Management, Refactoring
  • Laufzeit-Migration
  • Paketierung, Distribution, Conguration-Management
  • Protokoll- und Datenanalyse, Forensik
  • Verteilte Systeme / Grid / Cloud

Aufgabenbereiche

  • Informationstechnische Unternehmensberatung
  • Software- un System-Architekt
  • Opensource-Experte
  • Linux-Embedded-Experte
  • Kernel-/Treiber-/BSP-Entwicklung
  • Linux-Realtime
  • Linux Security
  • Linux-Architektur
  • Build- und Deployment / DevOps

Produkte / Standards / Erfahrungen / Methoden

Softwaremethoden / -Gebiete

  • OO-Methoden und -Programmierung (components, signals, etc)
  • Service-orientierte Architekturen
  • Funktionale Programmierung
  • Logikorientierte Programmierung
  • Constraint based programming + Unit-Tests
  • Hardwarenahe Programmierung
  • Embedded Systems
  • Netzwerkprogrammierung, Protokollentwicklung und -Analyse
  • Datenmodellierung (logisch, workow, physisch)
  • Verteilte Systeme / Grid-Computing / Cloud-Computing

Programmierwerkzeuge, Toolkits, Libraries

  • *nix utils (awk,sed,perl,...)
  • Builders:
    • GNU make, Imake, Autoconf/Autotools, Unitool, TreeBuild
  • SCM:
    • Git, CVS, Perforce P4, Subversion, Redmine, Bugzilla, Trac
  • GNU Toolchains
  • GUI-Toolkits:
    • Gtk, Qt, Motif, Xt, Xaw
  • Code-Generators:
    • Yacc, Lex, Bison
  • Database tools and libraries:
    • unixODBC, JDBC, libpq (PostgreSQL), mySQL, sqLite, BerkeleyDB
  • Security:
    • OpenSSL, GNU TLS, OpenSSH
  • XML:
    • SAX, Expat
  • Graphics:
    • X11, SDL, DirectFB, Linux-FB, Wayland
  • Networking/IPC:
    • SysV-IPC, 9P2000, Plan9Port (Plan9 on Unix), NetBEUI, TCPIP
  • Typesetting:
    • LaTeX, Docbook
  • IDE:
    • Emacs, Borland, Eclipse, MSVS, KDevelop

Enterprise- und Branchen-Produkte

  • Zimbra Collaboration Suite (Core customizing, Extensions, Packaging, Operating)
  • Plone Portal Platform (Core customization, Extensions, Packaging, Operating)
  • OpenERP (Core customization, Extensions, Packaging, Operating)
  • Crashplan Enterprise Backup (Packaging, Operating)
  • Proxmox VE Virtualization Platform (Customization, Packaging, Operating)
  • RSA Security Appliance
  • Elektronisches Gerichts- und Verwaltungspostfach (EGVP/OSCI)

Softwarepakete (incl. Entwicklung)

  • Paketmanagement-Technologien (zmpkg, dpkg/apt, rpm/yum, ipkg, etc)
  • Apache Webserver (Entwickler des Multiplexer MPM)
  • Nginx Webserver
  • Lighttpd Webserver
  • Android
  • Chromium
  • Qt5
  • Linux-Kernel
  • sendmail Mailserver (incl. selbstentwickelte Admin-Tools)
  • qMail (Entwicklung/Paketierung)
  • X-Window, GNOME, KDE, gnuStep (GUI-Programmierung)
  • GCC (GNU compiler collection) und andere GNU Tools
  • Mozilla + XUL (Admin, Entwickler, Crosscompiling)
  • OpenOfce (Admin, Entwickler)
  • Ghostscript
  • CRM: vTiger (Entwicklung)
  • CMS: Joomla, Content*Builder, Typo3, Plone
  • OpenERP
  • Virtualisierung: VMware, QEmu, VirtualBox, DosBOX, WinE, KVM, XEN, OpenVZ, lGuest, LXC
  • Plan9 from outer space
  • zlib (Contributor)
  • Midnight Commander (Entwickler)
  • Zimbra (Entwickler, Portierung, Customization)
  • u.v.m.

Web-Technologien

  • HTML, CSS, XML, Templates
  • XUL
  • AJAX, Meshups, XMLRPC, SOAP, JSONRPC
  • Java Applets
  • Java Servlets / JSP
  • Native Java
  • Scanner / Crawler, Suchmaschinen
  • Web-Services
  • REST
  • raw HTTP

Forschungsgebiete

  • Neue Finanzierungsmodelle für die öffentliche Hand (SFB)
  • Alternative Finanzsysteme auf Basis von Schuldverschreibungen (PLUTOS)
  • Normalisierte Sourcecode-Management Infrastruktur für Opensource Projekte (OSS-QM)
  • Standardisierte und automatisierbare Prozesse für Software-Qualitätsmanagement (OSSQM)
  • Generische Methodiken für Software-Distributionen (OSS-QM)
  • Automatisiertes Buildsystem für Micro-Distributionen und Firmware-Images (BRIEGEL)
  • Sichere und anonyme Transaktionssysteme für alternativen Zahlungsverkehr (PLUTOS)
  • Generische Hosting- und Managementplattform für Linux-Container/VServer (DGRID)
  • Workload-Management und -Distribution für VServer-Grids (DGRID)
  • Sicheres replikatives Storage-Grund mit Content-Addressierung auf Petabyte-Skala (NEBULON)
  • Java-basierte Gridcomputing-Umgebung (ESPRESSO9)
  • Verteilte Systeme auf Basis von Filesystem-Schnittstellen/9P (ESPRESSO9)

Betriebssysteme

  • GNU/Linux - Embedded, from Scratch und div. Distros
  • xBSD
  • andere UNIXe
  • Plan-9
  • Native Oberon
  • MS-DOS
  • Novell Netware
  • Windows 3.1
  • Windows 9x
  • Windows NT/2000/XP
  • ReactOS
  • L4
  • GecOS
  • Android

Programmiersprachen

  • Pascal (15 Jahre)
  • BASIC (18 Jahre)
  • C/C++ (über 20 Jahre)
  • Unix-Shellprogrammierung (20 Jahre)
  • Oberon/Modula (9 Jahre)
  • postgreSQL PL/SQL (15 Jahre)
  • Perl (13 Jahre)
  • PHP (13 Jahre)
  • Java (15 Jahre)
  • HTML + CSS (15 Jahren)
  • LaTeX (seit 15 Jahren)
  • Javascript/ECMA-Script (10 Jahre)
  • Prolog
  • Assembler
  • XUL - XML Userinterface Language
  • Python
  • Ruby / Rails
  • Haskell
  • m4
  • tcl/tk

Datenbanken

  • postgreSQL (seit 15 Jahre Projekterfahrung)
  • mySQL (seit 15 Jahren Projekterfahrung)
  • sqLite
  • LDAP
  • Berkeley-DB + nDBM + GNU DBM
  • Xindice
  • Interbase/Firebird
  • Sybase
  • ZopeDB
  • Synthetische Filesysteme

Datenkommunikation

Transport-Protokolle:
TCP/IP (IPv6, IPv6, IPSEC, IPIP, route management), IPX, NetBEUI, PPP, SLIP

Anwendungs-Protokolle:
SSL, HTTP, SOAP, XMLRPC, JSONRPC, SMTP, UUCP, Streaming, SSH

Management-Protokolle:
SNMP, RADIUS, HTCPCP, BGP

Netzwerk-Filesysteme:
NFS, 9P2000, SMB, Coda

Server-Anwendungen:
Apache HTTPD, Tomcat, Jetty, NGinx, Zimbra Collaboration Suite , Sendmail, QMail, ISC
DHCP, NPFS

Hardware

Architekturen/Plattformen:
intel/x86, x86_64, m68k, ppc, arm, Commodore, Embedded (zB. Router)

Interfaces:
RS282, RS485, CAN, ISA, USB, ATA/IDE, SCSI, WLAN, Ethernet, DSL, Cable, ISDN, SDH

System-on-Chip / Boards

Freescale - imx21, imx53, imx6, imx7, imx8

TI - Sitara - AM335xx

PC engines APU*

Branchen

Branchen

  • Finanzwesen - internationale Banken, Börsenhandel, Payment/Clearing
  • Nachrichtendienste
  • Medizinische Meÿtechnik für klinische Studien
  • IT Geräteentwicklung (Embedded systems)
  • Internetprovider + Telco
  • Medizin (Ärzteverbände)
  • Medizintechnik / Medizinprodukte
  • Maschinenbau und Gebäudetechnik
  • Öffentliche Verwaltung und Rechtspflege
  • Politik und NGOs
  • Meÿtechnik und -Kalibrierung
  • Autohäuser und KFZ-Werkstätten
  • Sport- und Kultur-Verbände
  • Werbebranche
  • Gastronomie
  • Einzelhandel
  • Textil-Manufaktur
  • Neue Medien

Vertrauen Sie auf GULP

Im Bereich Freelancing
Im Bereich Arbeitnehmerüberlassung / Personalvermittlung

Fragen?

Rufen Sie uns an +49 89 500316-300 oder schreiben Sie uns:

Das GULP Freelancer-Portal

Direktester geht's nicht! Ganz einfach Freelancer finden und direkt Kontakt aufnehmen.