next up previous contents index
Next: Lebenslauf / CV Up: Vorstellung Previous: Vorstellung

Chronologischer Werdegang

Um das Jahr 1981 lernte ich mit 13 Jahren das Programmieren auf einem TI-57, VIC-20, Commodore 64 (C64) und später Amiga 500 mit Basic, 6502 & 68k Assembler und C mit dem Lattice C Compiler. Mein erstes Hacken auf dem C64 in 6510-Assembler umfasste Kopierprogramme, eine Indexdatenbank und berüchtigte Sound- & Grafikeffekte.
Ich programmierte auch einen funktionierenden IRQ-basierten präemptiven Multitasking-Scheduler auf dem C64 für eine nie fertiggestellte core wars Programmierspielvariante, die 1984 von A.K. Dewdney inspiriert wurde.

Mein C++ reicht bis ins Jahr 1993 zurück, als ich mit Bjarne Stroustrups Design and Evolution of C++ begann, um meinen OO Genetischen Algorithmus Entwurf für eine Spieltheorieaufgabe zu implementieren.

Um 1994 hatte ich Spaß daran, einen UML-SDT-Compiler zwischen Dialekten für S&P Media, Bielefeld, zu schreiben. Dann kam ich zu Prekwinkel in Herford, um deren CAD-Implementierung von C auf frühes C++ umzustellen und einen Compiler für eine interpretierte Sprache zu erstellen. Außerdem realisierte ich eine Drainage-DB-Visualisierung mit Bearbeitung in AutoCAD.

Danach implementierte ich 1995 eine eingebettete Nähmaschinensteuerung für eine 80166-Plattform für Dürkopp-Adler, Bielefeld. Meine Arbeit umfasste ein Dateisystem und die grafische Darstellung der CNC-Daten. Hier betreute ich auch ein grafisches CAD-System unter Windows, um dieselben CNC-Programme zu bearbeiten. Vor allem habe ich den Großteil des objektorientierten Codes mit meinem eigenen C++-ähnlichen Template-Compiler geteilt.

Meine ersten Java-Erfahrungen sammelte ich 1996 bei IBM Frankfurt, wo ich an Unternehmenssystemen arbeitete und DSL-Toolkits implementierte, um UI-Elemente direkt aus Geschäftsfallbeschreibungen zu erzeugen.

1998 fand ich endlich Zeit, meine Diplomarbeit GL4Java abzuschließen, eine Java-Erweiterung, die natives OpenGL und GLU für die JVM verfügbar macht. Zuerst verwendete ich C++ in einem CAD/CAM-Projekt, das einen DSL-Compiler für die benutzerdefinierte CNC-Programmierung beinhaltete. Ich nutze gcc mit sanitizer, valgrind, clang, clang-format, clang-tidy und anderen Tools zur Code-Validierung und performance Analyse.

1997 arbeitete ich an einer DSL-Modem-Upgrade-Lösung für Siemens in München, wobei ich SDL/UML und C++98 für die 68k-Zielmaschine verwendete. Wir verwendeten SNMP für die Ereignisverwaltung. Es gelang mir, die Modulentwicklung zwischen unseren Teams zu entkoppeln, indem ich White-Box-Tests mit synthetischen Daten für unsere API einführte.

Bis 2001 arbeitete ich an mehreren C++- und Java-Unternehmensprojekten sowie als Tutor für C++ und Java. Die Projekte umfassten IIOP/Corba Proxy, OO/SQL Mappings, 3D-Scenegraph, UML und XMLRPC.

Meine Erfahrung im Automobilbereich begann 2001 bei Harman/Becker, wo ich QNX- und Linux-Treiber für eine DSP-Videokarte einer HMI-Einheit entwickelte, die eine über Standardbibliotheken zugängliche Videodekodierung ermöglichte. Ich fügte PCI DMA/IRQ Management für ein Linux/SH4 BSP hinzu, einschließlich eines plattenlosen Bootloaders und evaluierte eine plattformübergreifende Benutzeroberfläche über QT. Zwei X11-Treiber für benutzerdefinierte GPUs für Linux und QNX (x86, sh4) einschließlich Blitting und YUV-Video-Overlay wurden hinzugefügt. Ich habe eine Auto-Fernsteuerung mit Java und OSGI auf einem Handheld-Gerät realisiert, das mit dem MOST-Bus des Autos verbunden ist und GPS-Positionierung bietet. Ich bin mit den Adaptiven AUTOSAR-Richtlinien vertraut und habe 2005 das Anforderungsmanagement übernommen.

Bei ATI und AMD leitete ich 2005 die Entwicklung des Embedded Display OpenGL-Treibers, wo ich verschiedene Kundenfunktionen & Leistungsanforderungen verwaltete und implementierte: Performance OpenGL-Erweiterung, Hardware-Overlay, asynchrones ReadPixel, GLSL/DMA-Texturübertragungen, Page-Flip, VSync und Multi-DMA-Page-Locks. Ich verbesserte die Leistung des Treibers um den Faktor 2,5, wobei ich auf funktionale Treiberblöcke wie TLS, Inlining, Caching, Dispatch Table, Stream Copy usw. abzielte.

In 2007 leitete ich das Refactoring des New Java Plug-In mit JNLP-Unterstützung für Sun Microsystems in Santa Clara. Auch demonstrierte ich ein AWT-loses Proof-of-Concept Plugin 3, das für einen Relaunch von Java auf dem Desktop und mobilen Geräten gedacht war. Ich trug auch zu einer neuen experimentellen JavaFX-Plattform bei, die hardwarebeschleunigtes Rendering (OpenGL, OpenMax, ...) nutzt. Infolgedessen fügte ich JOGL eine plattformunabhängige Windowing-Architektur mit Unterstützung für mobile Geräte und OpenGL-Profilen hinzu, die später Teil des unabhängigen JogAmp-Projekts wurde.

Ich habe einen Abschluss in Elektrotechnik mit Schwerpunkt Informatik, Dipl.-Ing. (FH) - Diplomingenieur, Angewandte Wissenschaft - MASc-Äquivalent, der mir 1998 von der Fachhochschule Bielefeld, Deutschland, verliehen wurde.

Ich lebe mit meiner Frau und meinen beiden Söhnen und genieße das gemeinsame Spielen und Lernen.


next up previous contents index
Next: Lebenslauf / CV Up: Vorstellung Previous: Vorstellung

2024-05-16