You can download Sven Göthel's complete CV.
I possess over three decades of experience in software engineering and have a passion for creating solutions, iterating from design to deployment until success, taking responsibility and often leading the effort. I am at home in computer graphics & multimedia, applied math, cryptography, driver development, algorithms and high performance solutions, from complete POSIX systems to bare-metal embedded devices.
I enjoyed employment at Sun Microsystems (➛ Oracle) and ATI (➛ AMD) at their headquarters, thereafter I continued as a contractor. I served a broad range of companies, such as Zafena, Mathworks, Google, Harman/Becker, Siemens AG Munich and IBM Frankfurt.
Early 2020 I picked up contemporary C++ again for new challenges, covering C++11 to C++23. I utilize cmake, gcc, clang/llvm with sanitizer, valgrind, clang-format, clang-tidy, Catch2, git, Jenkins, GitLab, gerrit, beside others for code review, validation, performance analysis and CI/CD. Some of these projects are:
- Gamp, replicating JogAmp's experience of GraphUI and overall platform agnostic graphics framework for native platforms using C++20 and for web browser via WebAssembly using emscripten. This work is also based on gfxbox2, evaluating C++20 and the web-target.
- Direct-BT,
is a high-performance Bluetooth
LE and BREDR host library hooking up to Linux's kernel BlueZ
implementation, circumventing D-Bus and supporting secure client
& server modes. It has been used successfully in a medical
trial, as well as in a connected
medical device terminal. Implemented in C++17/20 to be used
directly from native code or via a thin Java layer.
Presentations: Latest Blogs, BLE Programming with C++ & Java - Cipherpack provides encrypted & authenticated (OTA) streaming and atomic file operations used to implement a secure system and application upgrade across a wide range of media for devices in the medical space. Implemented in C++17/20 to be used directly from native code or via a thin Java layer.
I maintained JogAmp
for over a decade, a cross-platform Audio/Video, 3D Graphics and
Processing library for Windows, Linux, MacOS, iOS, Android and
bare metal embedded devices. While it runs on the Java VM, the
implementation layers involve our own compiler, C/C++, ObjectiveC
native system level code. Tasks included low level debugging and
performance analysis as well as coding computer graphics and
adding a video layer with FFmpeg. This culminated to our own
resolution-independent GPU
Curve Rendering GraphUI toolkit. Jenkins & JUnit across
the target network covered our CI/CD tasks.
Presentations: Latest Blogs, JavaOne 2008,
Tegra-1 Video Demo, Siggraph[2010,
2011, 2012,
2013, 2014],
Fosdem[2013, 2014].
Most of the above projects are open sourced and available on jausoft and github.
I run a little computer-science class, covering C++ basics, gfxbox2, hanoi, pacman.
I just started hacking Rust and some AI projects sparked my interest in NN again.
The following text offers some more excerpts from my background, if interested.
***
Around 1981 I started learning programming at
the age of 13. First I only coded on paper, then on a TI-57,
VIC-20, Commodore 64 (C64)
and later Amiga 500 using Basic, 6502 & 68k assembly
and C with the Lattice C Compiler.
My early hacking on the C64 in 6510 assembly included copy-programs, an index database and notorious sound & graphics effects.
I also coded a working IRQ-based preemptive
multitasking scheduler on the C64 for a never finished core wars
programming-game variant as inspired in 1984 by A.K. Dewdney.
My C++ dates back to 1993, when I started with Bjarne Stroustrup's Design and Evolution of C++ to implement my OO genetic algorithm design for a game theory assignment.
Around 1994 I enjoyed writing a UML SDT compiler between dialects for S&P Media, Bielefeld. Then I joined Prekwinkel in Herford to move their CAD implementation from C to early C++ and produced a compiler for an interpreted language. I also realized a drainage DB visualization with editing using AutoCAD.
Afterwards in 1995 I implemented an embedded sewing machine control system for an 80166 platform for Duerkopp-Adler, Bielefeld. My work included a file system and graphical representation of the CNC data. Here I also maintained a graphical CAD system running on Windows to edit same CNC programs. Notably I shared most of the object oriented code using my own C++ alike template compiler.
My first Java experience was in 1996 for IBM Frankfurt, working on enterprise systems implementing DSL toolkits to produce UI elements directly from business case descriptions.
In 1998 I finally found time concluding my diploma thesis GL4Java, a Java extension exposing native OpenGL and GLU to the JVM.
In 1997 I worked on a DSL modem upgrade solution for Siemens in Munich, using SDL/UML and C++98 for the 68k target machine. We used SNMP for event management. I achieved to decouple module development between our teams by introducing white box testing using synthetic data for our API.
Until 2001 I worked on several C++ and Java enterprise projects as well as tutoring C++ and Java. The projects involved IIOP/Corba Proxy, OO/SQL mappings, 3D-Scenegraph, UML and XMLRPC.
My automotive experience started in 2001 with Harman/Becker, where I developed QNX and Linux driver for a DSP video board of a HMI unit, enabling video decoding accessible via standard libraries. I added PCI DMA/IRQ management for a Linux/SH4 BSP including disk-less bootloader and evaluated cross-platform UI via QT. Two X11 driver for custom GPU for Linux and QNX (x86, sh4) including blitting and YUV video overlay were added. I realized a remote car control unit using Java and OSGI on a handheld device connecting to the car's MOST bus plus GPS positioning. I am familiar with Adaptive AUTOSAR guidelines and handled requirement management in 2005.
At ATI and AMD I followed up with C/C++ OpenGL driver technology for embedded device applications in 2005, focusing on performance OpenGL extensions, hardware overlay, asynchronous ReadPixel, GLSL/DMA texture transfers, page flip, VSync and multi DMA page locks. I enhanced the driver performance about factor 2.5, targeting functional driver blocks like TLS, inlining, caching, dispatch table, stream copy, etc.
In 2007 I lead the refactoring of the New Java Plug-In with JNLP support for Sun Microsystems in Santa Clara. I also demonstrated an AWT-less proof-of-concept Plugin 3, intended for a relaunch of Java on the desktop and mobile devices. I also contributed to a new experimental JavaFX platform, utilizing hardware accelerated rendering (OpenGL, OpenMax, ..). As a result, I added a platform independent windowing architecture with mobile and OpenGL profile support to JOGL, which later became part of the independent JogAmp project.
I hold a degree in electrical engineering with a focus on computer science, Dipl.-Ing. (FH) - Diplom Engineer, Applied Science - MASc equivalent, conferred upon me by the Bielefeld University of Applied Sciences, Germany in 1998.
I live with my wife and two sons and enjoy playing and learning together.