Du kannst den Lebenslauf (de) und CV (en) von Sven Göthel herunterladen.

Ich verfüge über mehr als 30 Jahre Erfahrung in der Softwareentwicklung und habe die Leidenschaft Lösungen zu erarbeiten, vom Entwurf bis Deployment zum Erfolg zu iterieren, Verantwortung und oft auch die Leitung zu übernehmen. Ich bin in den Bereichen Computer Graphik & Multimedia, angewandte Mathematik, Kryptographie, Treiberentwicklung und Algorithmen, von kompletten POSIX-Systemen bis hin zu Bare-Metal-Embedded-Geräten zu Hause.

Ich war bei Sun Microsystems (➛ Oracle) und ATI (➛ AMD) in deren Hauptsitz angestellt, wonach ich als Auftragnehmer fortfuhr. Ich war für ein viele Verschiedene Firmen tätig, u.a. Zafena, Mathworks, Google, Harman/Becker, Siemens AG München und IBM Frankfurt.

Anfang 2020 habe ich zeitgemäßes C++ für neue Herausforderungen wieder aufgenommen. Neben C++11 bis C++23 verwende ich unter anderen cmake, gcc, clang/llvm mit sanitizer, valgrind, clang-format, clang-tidy, Catch2, Jenkins, GitLab für Code-Validierung, Leistungsanalyse und CI/CD. Einige dieser Projekte sind:

  • Gamp, repliziert das JogAmp Erlebnis von GraphUI und allgemeinen Plattform agnostischen Grafik-Framework für native Plattformen unter C++20 und Webbrowser via WebAssembly dank emscripten. Diese Arbeit basiert auch auf gfxbox2, welche C++20 und das Web-Target evaluiert.
  • Direct-BT ist eine leistungsstarke Bluetooth LE and BREDR Host-Bibliothek, verbunden mit der BlueZ-Implementierung des Linux-Kernels, den D-Bus umgeht und sichere Client- und Server-Modi unterstützt. Sie wurde erfolgreich in einer medizinischen Studie sowie in einem connected medizinischen Geräteterminal eingesetzt. Implementiert in C++17/20 zur direkten Verwendung von nativem Code oder über eine dünne Java-Schicht.
    Presentations: Latest Blogs, BLE Programming with C++ & Java
  • Cipherpack bietet verschlüsseltes und authentifiziertes (OTA) Streaming und atomare Datei-Operationen zur Implementierung eines sicheren System- und Anwendungs-Upgrades über eine breite Palette von Medien für Geräte im medizinischen Bereich. Implementiert in C++17/20 zur direkten Verwendung von nativem Code oder über eine dünne Java-Schicht.

Ich habe über ein Jahrzehnt JogAmp betreut, eine cross-platform Audio/Video-, 3D-Grafik- und Processing Bibliothek für Windows, Linux, MacOS, iOS, Android und embedded Bare-Metal-Geräte. Sie läuft zwar auf der Java VM, aber die Implementierung umfasst unseren eigenen Compiler, C/C++ und ObjectiveC Code auf Systemebene. Zu den Aufgaben gehörten low-level Debugging und Leistungsanalyse sowie das realisieren der Computergrafik und eines Videolayers mit FFmpeg. Dies gipfelte in unserem eigenen auflösungsunabhängigen GPU Curve Rendering GraphUI Toolkit. Jenkins und JUnit im gesamten Zielnetzwerk deckten unsere CI/CD-Aufgaben ab.
Presentations: Latest Blogs, JavaOne 2008, Tegra-1 Video Demo, Siggraph[2010, 2011, 2012, 2013, 2014], Fosdem[2013, 2014].

Die meisten genannten Projekte sind Open-Source und auf jausoft und github verfügbar.

Ich gebe einen kleinen Informatikkurs mit C++ Grundlagen, gfxbox2, hanoi und pacman.

Ich habe gerade angefangen, Rust zu hacken und einige AI-Projekte haben mein Interesse an NN wieder geweckt.

Der folgende Unterabschnitt bietet einige weitere Auszüge aus meinem Hintergrund, falls Interesse besteht.

***

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.