Passion to iterate from design via deployment to success, driving cross-platform high-performance solutions.
Aktualisiert am 13.05.2025
Profil
Freiberufler / Selbstständiger
Remote-Arbeit
Verfügbar ab: 13.05.2025
Verfügbar zu: 100%
davon vor Ort: 20%
C++
Java
SystemArchitektur
3D-Grafik
GPU
Netzwerkprotokoll
Multithreading
Webassembly
bluetooth
crossp
Plattformunabhängigkeit
Verschlüsselung
Requirements Management
Algorithmen

Einsatzorte

Einsatzorte

Deutschland, Schweiz, Österreich
möglich

Projekte

Projekte

1 year 4 months
2024-01 - now

Gamp (Graphics, Audio, Multimedia and Processing)

Senior Engineer Linux POSIX C++ ...
Senior Engineer

  • Project: Gamp, replicate JogAmp?s experience like GraphUI and overall platform agnostic graphics framework for native platforms and web browser via WebAssembly using emscripten.
  • Porting and enhancing linear algebra, the GPU NURBS Graph and GraphUI implementation and overall platform agnostic graphics framework to C++20 while maintaining WebAssembly compatibility for the browser target. This work is also based on gfxbox2, evaluating C++20 and the web-target in a lax environment, suitable for teaching simple simulations and games.
  • Project: Various client projects and tutoring.

Linux POSIX C++ OpenGL OpenAL OpenCL Mesa 3D and Linux DRM/DRI driver ARM32 ARM64 Amd64 WebAssembly gcc clang/llvm clang-tools emscripten Eclipse VS-Code
Undisclosed
Home Office
6 months
2024-07 - 2024-12

Collabora Online

Senior Engineer Linux POSIX BSD Sockets ...
Senior Engineer

Project: Collabora Online, an open source online office suite based on LibreOffice (LO).

  • Working on server side tasks, connecting web-clients with LO. Maintaining HTTP and WebSocket connections with DoS mitigation (latency, timeouts & limits) and statistic visuals. Analysis of LO/client server poll-loop, file-streaming and persistent user properties via WOPI (NextCloud), besides others.
Linux POSIX BSD Sockets OpenSSL HTTP WebSockets REST API WOPI JSON C++17 JavaScript/D3 gcc clang/llvm clang-tools gdb git gerrit github Doxygen LibreOffice NGINX Docker NextCloud
Collabora Productivity
Home Office
1 year 6 months
2022-11 - 2024-04

JogAmp

Senior Engineer Windows Linux Android ...
Senior Engineer

Project: JogAmp Support, GraphUI, compiler features, high dpi, video encoding & decoding and misc. features

  • Realizing GraphUI, a cross-platform UI utilizing our own resolution independent GPU curve renderer. GraphUI is suitable for desktop and embedded devices, it also runs on top of console kernel DRM driver without a windowing toolkit. Notable entries are Reimagine Java on Desktop & Bare-Metal Devices, FontView App, Type Animation 2, Type Animation at your Fingertips and others.


Activities: Supporting clients adopting JogAmp, implementing commissioned features

  • Java callback generation via GlueGen for native toolkits with struct- and type-mapping
  • General support adopting JogAmp and GraphUI
  • Resolving outstanding HiDPI issues with AWT
  • Supporting a range of MacOS platforms including M1/aarch64


Presentations:

  • on request

Windows Linux Android iOS MacOS C Objective-C Java OpenGL OpenCL OpenMax OpenKode Mesa 3D and Linux DRM/DRI driver ARM32 ARM64 Amd64 Sparc BCM Omap3 Tegra GCC MingW UML git Eclipse vim Solaris C++
CCT, Google, Mathworks, Ankama, ...
Home Office
4 months
2023-08 - 2023-11

Detecting Rapid Test Results From a USB attached Camera

Senior Engineer OpenCV C++17 gcc ...
Senior Engineer

Project: Detecting Rapid Test Results From a USB attached Camera

  • Design & implementation of an embedded device software module to detect rapid tests results from live streamed images of a USB camera. Image filter as well as appropriate detection algorithms had been chosen, used and partially implemented.


Project: Adding Direct-BT GATT-Server while being in BT-Client mode and hardening Passkey Authentication.

  • Certain devices acting as master/server require the client to provide a GATT-server for successful authentication. This capability is essential to have these operating successful with the clients POC-Workstation.
  • General passkey authentication within Direct-BT and the client?s application had been hardened and resolved.

OpenCV C++17 gcc Java Linux X86 and X86 64 ARM64 Raspberry cmake git Bluetooth Core Spec v5.2 Linux Kernel BlueZ driver llvm valgrind gdb ARM32 and ARM64 Doxygen UML
Zafena
2 years 7 months
2020-04 - 2022-10

Direct-BT

Senior Engineer Bluetooth Core Spec v5.2 Linux Kernel BlueZ driver C++17 ...
Senior Engineer

Project: Direct-BT and POC-Workstation Support.

  • Design & realization of Direct-BT, a new Bluetooth stack using C++17 inclusive Java binding.
  • Direct-BT provides direct Bluetooth LE and BREDR programming, offering robust highperformance support for embedded & desktop with zero overhead via C++ and Java.
  • It supports a fully event driven workflow from adapter management and device discovery to GATT programming, using its platform agnostic HCI, L2CAP, SMP and GATT protocol implementation.
  • Multiple Bluetooth adapter are handled, as well as multiple concurrent connections per adapter.
  • Peripheral server device programming is supported as well as the central client, which is also used for self unit testing across two or more Bluetooth adapter.
  • Further, the provided repeater application allows to connect between a Bluetooth client and server to analyze their protocol.
  • Direct-BT has been used successfully in a medical trial, as well as in a connected medical device terminal. The C++ and Java support library has been extracted to encapsulate its generic use-cases.
  • To become feature complete using the underlying BlueZ Linux kernel host Bluetooth driver, the kernel implementation had to be analyzed via code review, manual instrumentation and debug traces. This resulted in full access of the Security Manager Protocol (SMP) via L2CAP and helped achieving Bluetooth 5 compatibility.
  • Activities: Support adoption of Direct-BT and participate in certain life-cycle tasks, code review, testing and production.
  • The POC-Workstation is a connected medical device terminal, a widely deployed embedded system. Direct-BT enables the station to handle multiple parallel connections to medical devices as well as real-time data streaming and status monitoring.
  • SMP LE Secure Connections and LE legacy pairing is fully supported. Additionally, a BLE protocol analyzer has been developed.


Presentations:

  • Latest Blogs, BLE Programming with C++ & Java

Bluetooth Core Spec v5.2 Linux Kernel BlueZ driver C++17 gcc llvm valgrind gdb Java Linux X86 and X86_64 ARM32 and ARM64 Raspberry cmake Doxygen UML git gitlab Bugzilla Eclipse vim X86 and X86 64
Zafena et.al.
Home Office
3 months
2022-06 - 2022-08

Secure System and Application Upgrade

Senior Engineer C++17 Java Linux ...
Senior Engineer

Project: Secure System and Application Upgrade for a Connected Medical Device Terminal

  • Adopting Cipherpack (OTA) streaming and atomic file operations and implementing a secure system and application upgrade.
  • Upgrade the deployed embedded system?s read-only OS and application squashfs image using a wide range of media, e.g. http, smb, usb memory stick, etc.
  • The implementation follows the ?copy once? pattern, the sizeable OS image is put in place on the filesystem during Cipherpack?s decryption and authentication streaming.
  • A factory default and last version fallback boot facility is provided while managing multiple OS versions. Robust instantiation of a new OS instance is realized via secure hash validated OS level file copy and atomic rename operations.
  • A full set of POSIX file system operations inclusive a privilege separated filesystem image mount has been exposed to C++ and Java.
C++17 Java Linux X86 and X86 64 ARM32 and ARM64 Raspberry cmake Doxygen UML git gitlab Bugzilla Eclipse vim
Zafena
5 months
2022-01 - 2022-05

Cipherpack, authenticated secure stream processor.

Lead Developer, R&D C++17 Java Linux ...
Lead Developer, R&D

Project: Cipherpack, authenticated secure stream processor.

  • Design & realization of Cipherpack using C++17 inclusive Java binding. Cipherpack is a transport stream agnostic authenticated secure stream processor. It utilizes public-key signatures to authenticate the sender and public-key encryption of a symmetric-key to multiple parties ensuring their privacy while allowing high-performance authenticated message encryption.
  • Primary use case in this project was the OTA application and OS upgrade process for a deployed embedded system, a terminal for connected medical devices.
  • The API utilizes a listener event model, allowing the user to interact during stream [de]cipher , e.g. rejecting the stream altogether based on header information.

C++17 Java Linux X86 and X86_64 ARM32 and ARM64 Raspberry cmake Doxygen UML git gitlab Bugzilla Eclipse Verschlüsselung X86 and X86 64 vim
Zafena et.al.
Home Office
4 months
2021-08 - 2021-11

Direct-BT adoption for a Medical Clinical Trial.

Senior Engineer Bluetooth Core Spec v5.2 C++17 Linux ...
Senior Engineer

Project: Direct-BT adoption for a Medical Clinical Trial.

  • Support adoption of Direct-BT in conjunction with custom BLE sensors, enhance Bluetooth 5 support and help create an intermediate software layer.

Bluetooth Core Spec v5.2 C++17 Linux BLE sensors
Wyss Center, Neurotechnology Research Foundation
10 years 8 months
2009-11 - 2020-06

JogAmp

Senior Engineer Solaris Windows Linux ...
Senior Engineer
Project: JogAmp, high performance Java libraries for 3D Graphics (OpenGL), multimedia

(OpenAL, ffmpeg) and processing (OpenCL) across platforms(Windows, MacOSX, Linux, Android and iOS) for desktop, mobile & embedded systems.

  • Supporting clients adopting JogAmp for their commercial projects and implementing commissioned features and platform support.
  • To manage the project, I utilize a diverse set of tools to cover the project life-cycle: GIT for decentralized source control; Bugzilla for requirements, bug triage and release definition; Jenkins for continuous integration including running more than 1300 unit tests and fixed 589 issues on supported test platforms; Mediawiki and API doc for seamless documentation and last but not least a forum for transient communication.


Notable tasks from 2019 until May 2020:

  • Android support and embedded devices in 2011 (video 4:42)
  • Runtime ABI detection; Aarch64; Android ? 10; MacOS API updates
  • Native windowing toolkit (NEWT) with cross-toolkit re-parenting, multi-monitor and HiDPI support
  • FFMpeg video decoding and camera input with GPU pixel format conversion
  • GPU based NURBS curve rendering (Graph and GraphUI)
  • Stereoscopic rendering with lense correction for OculusVR (slide 47, video 47:15) in 2014
  • Support adoption of multiple scenegraph APIs (Java3D, Ardor3D, OpenSG, ...)
  • iOS support with NEWT in 2019
  • DRM/GBM ?bare metal? support for embedded systems


Presentations

  • on request

Solaris Windows Linux Android iOS MacOS C Objective-C Java OpenGL OpenCL OpenMax OpenKode Mesa 3D and Linux DRM/DRI driver ARM32 ARM64 Amd64 Sparc BCM Omap3 Tegra GCC MingW UML git Eclipse vim
CCT, Mathworks, Google, et.al. for JogAmp
1 year 3 months
2008-09 - 2009-11

Java Plugin3 Development

Senior Staff Engineer Solaris Windows Linux ...
Senior Staff Engineer

Project: Java Plugin3 Development

  • Designed & realized Plugin3, technical team lead.
  • Abstracted the windowing layer and modularized Plugin2, forming Plugin3. It featured usage of custom windowing implementations bootstrapped via JNLP.
  • Improved startup time about factor 3 - 13 (new load, reload). Added support for offscreen drawable to allow browser side compositioning.
  • Implemented an OpenGL proof of concept module using JOGL and NEWT.


Project: Experimental JavaFX 3D and multimedia cross platform UI API.

  • Targeted desktop and mobile devices for a high performance, state of the art user interface (HMI). Utilized hardware acceleration (OpenGL ES1.1, ES2.0, GL 1.5-2.0, OpenMax) for the scenegraph layer.
  • Adding support for per pixel lighting (normal maps) using Maya files.
  • Modularized and prepared the scenegraph layer for JOGL?s mobile GL profiles.

Solaris Windows Linux Java OpenGL GLX WGL Networking UML IA-32 Amd64 GCC MingW MacOSX JOGL Maya
Sun Microsystems, Inc., Santa Clara, CA
1 year 1 month
2008-01 - 2009-01

JOGL Redesign & Support

Senior Staff Engineer Solaris Windows Linux ...
Senior Staff Engineer

Project: JOGL Redesign & Support

  • Redesigned the OpenGL Java language mapping JOGL to support multiple
  • windowing systems and exposed multiple OpenGL profiles (ES 1.1, ES 2.0 and GL 1.5 - 4.1)targeting multiple desktop and embedded/mobile devices, technical lead.
  • Started a simple native windowing toolkit (NEWT), demonstrating efficient JOGL usage on desktop and mobile devices without AWT.
  • Supported porting JOGL to multiple embedded devices, APX 2500, Broadcom/LG, Intel CanMore and PowerVR-SGX/Omap3.
  • Adding OpenMax IL multimedia support access for embedded platforms.
  • APX 2500 Demo at JavaOne 2008
Solaris Windows Linux Android MacOS Java JOGL OpenGL JOCL OpenCL OpenMax OpenKode ARM IA-32 Amd64 Sparc Omap3 Tegra GCC MingW
Sun Microsystems, Inc., Santa Clara, CA
1 year 2 months
2007-08 - 2008-09

New Java Plug-In incl. JNLP support

Staff Engineer Solaris Windows Linux ...
Staff Engineer

Project: New Java Plug-In incl. JNLP support

  • JNLP integration in the New Java Plug-In. Designed & refactored the Java Plugin and JNLP modules, to become Plugin2. Added Unix Domain Sockets for the client/server IPC on unices. Stabilized the client/server communication and improved startup time. 
  • Helped specifying the JNLP extension and extended the test framework covering the new features. 
  • Presented at JavaOne 2008.

Solaris Windows Linux Java IPC Networking UML IA-32 Amd64 Sparc GCC VS-C
Sun Microsystems of Canada, Inc.
2 years 2 months
2005-06 - 2007-07

Embedded Graphics driver; Various embedded driver features and enhancements.

Senior Engineer Doxygen Office UML ...
Senior Engineer

Project: Embedded Graphics driver; Various embedded driver features and enhancements.

  • Managed requirements, designed & realized an embedded graphics driver for OpenGL core, EGL 1.1, ES 1.1/2.0 on various graphic chips R3xx, R5xx, R6xx and their mobile variants. Technical team lead.
  • Managed & implemented various customer feature & performance requirements: Performance OpenGL extension, hardware overlay, asynchronous ReadPixel, GLSL/DMA texture transfers, page flip, VSync and multi DMA page locks.
  • Transferred requirements to new technical specifications.
  • Enhanced performance about factor 2.5, targeting functional driver blocks like TLS, inlining, caching, dispatch table, stream copy, etc.
  • Participated in the general driver development within the software team and helped with enhancements. Worked on SDK & demo infrastructure and multimedia demos.

Doxygen Office UML Perforce Remedy GNU: GCC Linux Valgrind VTune ATI Graphic Cards Linux Kernel driver OpenGL GL ES IA-32 and PPC MPEG
Advanced Micro Devices (AMD), formerly ATI
3 months
2005-04 - 2005-06

Non Volatile Ram Manager

Senior Engineer MKS Doors Innovator ...
Senior Engineer

Project: Non Volatile Ram Manager

  • Managed requirements and specification for a new NV Ram Manager. The backward compatible module covered new customer requirements.

MKS Doors Innovator Doxygen MS Office NEC Lotus
Hella
4 months
2004-12 - 2005-03

Linux Device Driver - Monolithic and User Space

Senior Engineer Linux Kernel 2.6.x driver gcc dvb API ...
Senior Engineer

Project: Linux Device Driver - Monolithic and User Space

  • Investigated user space functionality within Linux device drivers. Learned pros and cons of simple resource handler and utilization of complex user space libraries. Implemented a portion of the Linux DVB API as an user level driver using FUSD and Gelato project knowledge.
Linux Kernel 2.6.x driver gcc dvb API FUSD gelato
Jausoft

Aus- und Weiterbildung

Aus- und Weiterbildung

6 years 5 months
1991-09 - 1998-01

Study of electrical engineering with a focus on computer science

Dipl.-Ing. (FH); Diplom Engineer, Applied Science (Equivalent to MASc), Bielefeld University of Applied Sciences, Germany, Europe
Dipl.-Ing. (FH); Diplom Engineer, Applied Science (Equivalent to MASc)
Bielefeld University of Applied Sciences, Germany, Europe

  • Computer Science.
  • Thesis: OpenGL for Java (GL4Java) [URL auf Anfrage]

11 months
1990-08 - 1991-06

A-Level certificate

Senne-College, Bielefeld, Germany, Europe
Senne-College, Bielefeld, Germany, Europe
  • Graduation in 06/1991.
11 months
1987-08 - 1988-06

High School examination

SZ Buergerpark, Bremerhaven, Germany, Europe
SZ Buergerpark, Bremerhaven, Germany, Europe
1 year 10 months
1985-09 - 1987-06

Education as an industrial electrician

SZ Buergerpark, Bremerhaven, Germany, Europe
SZ Buergerpark, Bremerhaven, Germany, Europe
  • Journeyman examination at the Bremerhaven Chamber of Commerce (IHK).

Position

Position

  • Staff or Senior Engineer, focusing on cross-platform technologies using native (C++, ..) and VM technology (Java, WebAssembly) in the area of optimization and game theory including LLM, network protocols, computer graphics - besides others.
  • I also tutor computer science, using applied math and physics example projects.
  • You can call me a hacker by passion.

Kompetenzen

Kompetenzen

Top-Skills

C++ Java SystemArchitektur 3D-Grafik GPU Netzwerkprotokoll Multithreading Webassembly bluetooth crossp Plattformunabhängigkeit Verschlüsselung Requirements Management Algorithmen

Schwerpunkte

Software Engineering
Fortgeschritten

Produkte / Standards / Erfahrungen / Methoden

Introduction:

  • 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, MacOSX, Linux, Android and iOS) on desktop, mobile & embedded systems. While it runs on the Java VM, the implementation layers involve our own compiler, C/C++ and ObjectiveC native system level code. Tasks included low level debugging and performance analysis as well as coding computer graphics, adding a video layer with FFmpeg and stereoscopic rendering with lense correction for OculusVR (slide 47, video 47:15). This culminated to our own resolution-independent GPU NURBS 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 sub-section offers some more excerpts from my background, if interested.


Chronological Background:

  • 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 exposingnative 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.


Career:

11/2009 - today:

Role: Software Engineering / Consulting, Sole Proprietor

Customer: jausoft


09/2008 - 11/2009:

Role: Senior Staff Engineer

Customer: Sun Microsystems, Inc., Santa Clara, CA, USA


08/2007 - 09/2008:

Role: Staff Engineer

Customer: Sun Microsystems of Canada, Inc., Edmonton, AB, Canada


06/2005 - 07/2007:

Role: Senior Software Engineer and Team Lead

Customer: Advanced Micro Devices (AMD), formerly ATI, Markham, ON, Canada


09/1991 - 06/2005:

Role: Software Engineering / Consulting, Sole Proprietor

Customer: jausoft


08/1988 - 03/1990:

Role: Civilian Services.

Customer: Communications Center Dodesheide, Osnabrueck, Germany, Europe.


Domains:

  • Architecture, design, development, test and deployment (SDLC)
  • Computer Graphics and 3D
  • Device Connectivity
  • Embedded and platform independent development
  • High performance and parallel computing
  • Project management and maintenance
  • Security and Cryptography
  • Training


Topics:

  • Application integration (EAI, J2EE, XML, XSLT, SOAP, REST, ..)
  • Automotive / Adaptive AUTOSAR
  • Computer Graphics (3D, linear algebra, ..)
  • CAD/CAM integration and DSL Optimizations
  • Compiler and interpreter construction
  • Controller programming ANSI-C(++) and Assembler
  • Cryptography (authenticity & privacy/encryption)
  • Device connectivity and security
  • DB applications and interfaces (DB2, SQL, JDBC)
  • Graphic User Interfaces (GUI)
  • Multimedia systems (Player software, decoder, hardware driver (mpeg2, mp2, pcm, a52))
  • Network protocols
    • BSD Sockets, TCP/IP, MOST, I2C, IPC, CAN, ISDN
    • HTTP, WebSockets
    • REST API, WOPI, JSON, ...
    • RPC, Corba, ...
    • Bluetooth LE and BREDR
  • Network techniques (DB interfaces for HTML Server,WWW, Proxy, Ftp, News, Email clients, Firewall etc.)
  • OO-Design (UML, Rational Rose, Paradigm Plus, C++, Java)
  • Optimization engines (Genetic algorithms, Neuronal Networks etc.)
  • Organizing and planning
  • Parallel Computing, Concurrency (SDL / UML, SIMD / MIMD, OpenMP, OpenCL)
  • System analysis and design
  • System software
    • Network protocols
    • Filesystem
    • Graphic Card Driver (XFree86, Proprietary, Console)
    • Linux Kernel Development (device driver and porting)
    • OpenGL, GL ES, driver development
    • QN?X Device Driver Development
  • Tutoring (C++, Java, Physics/Simulation, Networks)
  • Unix administration


Development Environment and Tools:

  • API: OpenGL/GLSL, OpenCL, OpenMP, ODBC/JDBC, pthreads, STL, ...
  • Bugs/Requirements: Bugzilla, Jira, GitLab, Github, ..., Doors
  • DB: MariaDB/MySQL, DB2, dBase, Oracle, ...
  • Compiler: gcc/g++, clang/llvm, clang-tools, ...
  • Compiler-Compiler: ANTLR, Lex & Yacc (Berkley, MKS, GNU), JavaCC
  • Continuous Integration (CI): Jenkins/Hudson, Travis/Gitlab, ...
  • Review: Github, gerrit, ..
  • Testing: Catch2, CppUnit, GoogleTest, JUnit, ..
  • Virtualization: Docker, Linux binfmt misc/chroot/cgroups, ...
  • IDE: Eclipse, VSCode, Netbeans, MS-Visual C++, ...
  • SCM: GIT, Perforce, Remedy, ClearCase, Change Synergy, CM Synergy; SCCS, RCS, CVS
  • UML/OO: Bouml, Rational Rose, Paradigm Plus, Innovator, Telelogic SDT/SDL, ArgoUML, Thorn, Umbrello, ...


Methodology:

  • Extreme- and team-programming, Knowledge Transfer
  • Requirement Management
  • Review, audit and QA procedures
    • Static code analysis
    • Ru?ntime analysis with code instrumentation
  • Object oriented programming (C++, Java and either C)
  • Configuration-management, project maintenance
  • Usage and implementation of platform independent standard libraries
  • OO-Design using UML iteratively
  • Tests: BlackBox, WhiteBox, Unit, Continuous Integration, Regression
  • UML Analysis and Design (OO, Structured, States, ..)
  • SDL specification for multiprocessing / multithreading systems
  • Top-Down specification; Buttom-Up implementation


Server Environment:

  • Apache, NGINX, Samba, Squid, inn(news), ftpd, routed, ippp, iptables, sendmail, VPN, squid, mysql, git, bugzilla, jenkins, ...
  • GNU/Linux Server, Windows clients

Betriebssysteme

  • Unix Derivates (POSIX)
    • AIX
    • BSD / FreeBSD
    • Darwin/MacOS and iOS
    • GNU/Linux and Android
    • QNX
    • Solaris
  • Bare-metal embedded
    • Keil.
    • VxWorks
    • Ze?phyr
  • Windows (95, XP, .. 11), MS-Dos

Programmiersprachen

C / C++ (STL, C++98 - C++23)
Java (1.0.2 - 18, J2ME)
GLSL (OpenGL), OpenCL
Rust (beginner)
Scripting languages as necessary (Korn, Bash, Perl, Python, ECMCA, ..)
Assembler (80x86, 68000, 650x)
Java- and Typescript

Hardware

AIC RS/6000
ARM 32bit and 64bit
Bluetooth LE and BREDR (Programming per Specification)
CNC-Controlling
Controller (8051, 80166, ARM, SH4)
DSP?s (TMS..)
Graphic Chips (ATI R3xx-R6xx, Siliconmotion, Fujitsu MB86291)
HP
IBM PC + Compatible
PowerPC 7xx
SUN Sparc

Branchen

Branchen

  • Medical Device Industry
  • Automotive Supply Industry
  • Financial Industry
  • CAD/CAM - Woodworks and sewing machines
  • Electronic Industry
  • Energy supply
  • Engineering
  • Graphics, video and multimedia product manufacturer
  • Internet provider
  • Scientific Research and Development
  • Software development
  • Training center

Einsatzorte

Einsatzorte

Deutschland, Schweiz, Österreich
möglich

Projekte

Projekte

1 year 4 months
2024-01 - now

Gamp (Graphics, Audio, Multimedia and Processing)

Senior Engineer Linux POSIX C++ ...
Senior Engineer

  • Project: Gamp, replicate JogAmp?s experience like GraphUI and overall platform agnostic graphics framework for native platforms and web browser via WebAssembly using emscripten.
  • Porting and enhancing linear algebra, the GPU NURBS Graph and GraphUI implementation and overall platform agnostic graphics framework to C++20 while maintaining WebAssembly compatibility for the browser target. This work is also based on gfxbox2, evaluating C++20 and the web-target in a lax environment, suitable for teaching simple simulations and games.
  • Project: Various client projects and tutoring.

Linux POSIX C++ OpenGL OpenAL OpenCL Mesa 3D and Linux DRM/DRI driver ARM32 ARM64 Amd64 WebAssembly gcc clang/llvm clang-tools emscripten Eclipse VS-Code
Undisclosed
Home Office
6 months
2024-07 - 2024-12

Collabora Online

Senior Engineer Linux POSIX BSD Sockets ...
Senior Engineer

Project: Collabora Online, an open source online office suite based on LibreOffice (LO).

  • Working on server side tasks, connecting web-clients with LO. Maintaining HTTP and WebSocket connections with DoS mitigation (latency, timeouts & limits) and statistic visuals. Analysis of LO/client server poll-loop, file-streaming and persistent user properties via WOPI (NextCloud), besides others.
Linux POSIX BSD Sockets OpenSSL HTTP WebSockets REST API WOPI JSON C++17 JavaScript/D3 gcc clang/llvm clang-tools gdb git gerrit github Doxygen LibreOffice NGINX Docker NextCloud
Collabora Productivity
Home Office
1 year 6 months
2022-11 - 2024-04

JogAmp

Senior Engineer Windows Linux Android ...
Senior Engineer

Project: JogAmp Support, GraphUI, compiler features, high dpi, video encoding & decoding and misc. features

  • Realizing GraphUI, a cross-platform UI utilizing our own resolution independent GPU curve renderer. GraphUI is suitable for desktop and embedded devices, it also runs on top of console kernel DRM driver without a windowing toolkit. Notable entries are Reimagine Java on Desktop & Bare-Metal Devices, FontView App, Type Animation 2, Type Animation at your Fingertips and others.


Activities: Supporting clients adopting JogAmp, implementing commissioned features

  • Java callback generation via GlueGen for native toolkits with struct- and type-mapping
  • General support adopting JogAmp and GraphUI
  • Resolving outstanding HiDPI issues with AWT
  • Supporting a range of MacOS platforms including M1/aarch64


Presentations:

  • on request

Windows Linux Android iOS MacOS C Objective-C Java OpenGL OpenCL OpenMax OpenKode Mesa 3D and Linux DRM/DRI driver ARM32 ARM64 Amd64 Sparc BCM Omap3 Tegra GCC MingW UML git Eclipse vim Solaris C++
CCT, Google, Mathworks, Ankama, ...
Home Office
4 months
2023-08 - 2023-11

Detecting Rapid Test Results From a USB attached Camera

Senior Engineer OpenCV C++17 gcc ...
Senior Engineer

Project: Detecting Rapid Test Results From a USB attached Camera

  • Design & implementation of an embedded device software module to detect rapid tests results from live streamed images of a USB camera. Image filter as well as appropriate detection algorithms had been chosen, used and partially implemented.


Project: Adding Direct-BT GATT-Server while being in BT-Client mode and hardening Passkey Authentication.

  • Certain devices acting as master/server require the client to provide a GATT-server for successful authentication. This capability is essential to have these operating successful with the clients POC-Workstation.
  • General passkey authentication within Direct-BT and the client?s application had been hardened and resolved.

OpenCV C++17 gcc Java Linux X86 and X86 64 ARM64 Raspberry cmake git Bluetooth Core Spec v5.2 Linux Kernel BlueZ driver llvm valgrind gdb ARM32 and ARM64 Doxygen UML
Zafena
2 years 7 months
2020-04 - 2022-10

Direct-BT

Senior Engineer Bluetooth Core Spec v5.2 Linux Kernel BlueZ driver C++17 ...
Senior Engineer

Project: Direct-BT and POC-Workstation Support.

  • Design & realization of Direct-BT, a new Bluetooth stack using C++17 inclusive Java binding.
  • Direct-BT provides direct Bluetooth LE and BREDR programming, offering robust highperformance support for embedded & desktop with zero overhead via C++ and Java.
  • It supports a fully event driven workflow from adapter management and device discovery to GATT programming, using its platform agnostic HCI, L2CAP, SMP and GATT protocol implementation.
  • Multiple Bluetooth adapter are handled, as well as multiple concurrent connections per adapter.
  • Peripheral server device programming is supported as well as the central client, which is also used for self unit testing across two or more Bluetooth adapter.
  • Further, the provided repeater application allows to connect between a Bluetooth client and server to analyze their protocol.
  • Direct-BT has been used successfully in a medical trial, as well as in a connected medical device terminal. The C++ and Java support library has been extracted to encapsulate its generic use-cases.
  • To become feature complete using the underlying BlueZ Linux kernel host Bluetooth driver, the kernel implementation had to be analyzed via code review, manual instrumentation and debug traces. This resulted in full access of the Security Manager Protocol (SMP) via L2CAP and helped achieving Bluetooth 5 compatibility.
  • Activities: Support adoption of Direct-BT and participate in certain life-cycle tasks, code review, testing and production.
  • The POC-Workstation is a connected medical device terminal, a widely deployed embedded system. Direct-BT enables the station to handle multiple parallel connections to medical devices as well as real-time data streaming and status monitoring.
  • SMP LE Secure Connections and LE legacy pairing is fully supported. Additionally, a BLE protocol analyzer has been developed.


Presentations:

  • Latest Blogs, BLE Programming with C++ & Java

Bluetooth Core Spec v5.2 Linux Kernel BlueZ driver C++17 gcc llvm valgrind gdb Java Linux X86 and X86_64 ARM32 and ARM64 Raspberry cmake Doxygen UML git gitlab Bugzilla Eclipse vim X86 and X86 64
Zafena et.al.
Home Office
3 months
2022-06 - 2022-08

Secure System and Application Upgrade

Senior Engineer C++17 Java Linux ...
Senior Engineer

Project: Secure System and Application Upgrade for a Connected Medical Device Terminal

  • Adopting Cipherpack (OTA) streaming and atomic file operations and implementing a secure system and application upgrade.
  • Upgrade the deployed embedded system?s read-only OS and application squashfs image using a wide range of media, e.g. http, smb, usb memory stick, etc.
  • The implementation follows the ?copy once? pattern, the sizeable OS image is put in place on the filesystem during Cipherpack?s decryption and authentication streaming.
  • A factory default and last version fallback boot facility is provided while managing multiple OS versions. Robust instantiation of a new OS instance is realized via secure hash validated OS level file copy and atomic rename operations.
  • A full set of POSIX file system operations inclusive a privilege separated filesystem image mount has been exposed to C++ and Java.
C++17 Java Linux X86 and X86 64 ARM32 and ARM64 Raspberry cmake Doxygen UML git gitlab Bugzilla Eclipse vim
Zafena
5 months
2022-01 - 2022-05

Cipherpack, authenticated secure stream processor.

Lead Developer, R&D C++17 Java Linux ...
Lead Developer, R&D

Project: Cipherpack, authenticated secure stream processor.

  • Design & realization of Cipherpack using C++17 inclusive Java binding. Cipherpack is a transport stream agnostic authenticated secure stream processor. It utilizes public-key signatures to authenticate the sender and public-key encryption of a symmetric-key to multiple parties ensuring their privacy while allowing high-performance authenticated message encryption.
  • Primary use case in this project was the OTA application and OS upgrade process for a deployed embedded system, a terminal for connected medical devices.
  • The API utilizes a listener event model, allowing the user to interact during stream [de]cipher , e.g. rejecting the stream altogether based on header information.

C++17 Java Linux X86 and X86_64 ARM32 and ARM64 Raspberry cmake Doxygen UML git gitlab Bugzilla Eclipse Verschlüsselung X86 and X86 64 vim
Zafena et.al.
Home Office
4 months
2021-08 - 2021-11

Direct-BT adoption for a Medical Clinical Trial.

Senior Engineer Bluetooth Core Spec v5.2 C++17 Linux ...
Senior Engineer

Project: Direct-BT adoption for a Medical Clinical Trial.

  • Support adoption of Direct-BT in conjunction with custom BLE sensors, enhance Bluetooth 5 support and help create an intermediate software layer.

Bluetooth Core Spec v5.2 C++17 Linux BLE sensors
Wyss Center, Neurotechnology Research Foundation
10 years 8 months
2009-11 - 2020-06

JogAmp

Senior Engineer Solaris Windows Linux ...
Senior Engineer
Project: JogAmp, high performance Java libraries for 3D Graphics (OpenGL), multimedia

(OpenAL, ffmpeg) and processing (OpenCL) across platforms(Windows, MacOSX, Linux, Android and iOS) for desktop, mobile & embedded systems.

  • Supporting clients adopting JogAmp for their commercial projects and implementing commissioned features and platform support.
  • To manage the project, I utilize a diverse set of tools to cover the project life-cycle: GIT for decentralized source control; Bugzilla for requirements, bug triage and release definition; Jenkins for continuous integration including running more than 1300 unit tests and fixed 589 issues on supported test platforms; Mediawiki and API doc for seamless documentation and last but not least a forum for transient communication.


Notable tasks from 2019 until May 2020:

  • Android support and embedded devices in 2011 (video 4:42)
  • Runtime ABI detection; Aarch64; Android ? 10; MacOS API updates
  • Native windowing toolkit (NEWT) with cross-toolkit re-parenting, multi-monitor and HiDPI support
  • FFMpeg video decoding and camera input with GPU pixel format conversion
  • GPU based NURBS curve rendering (Graph and GraphUI)
  • Stereoscopic rendering with lense correction for OculusVR (slide 47, video 47:15) in 2014
  • Support adoption of multiple scenegraph APIs (Java3D, Ardor3D, OpenSG, ...)
  • iOS support with NEWT in 2019
  • DRM/GBM ?bare metal? support for embedded systems


Presentations

  • on request

Solaris Windows Linux Android iOS MacOS C Objective-C Java OpenGL OpenCL OpenMax OpenKode Mesa 3D and Linux DRM/DRI driver ARM32 ARM64 Amd64 Sparc BCM Omap3 Tegra GCC MingW UML git Eclipse vim
CCT, Mathworks, Google, et.al. for JogAmp
1 year 3 months
2008-09 - 2009-11

Java Plugin3 Development

Senior Staff Engineer Solaris Windows Linux ...
Senior Staff Engineer

Project: Java Plugin3 Development

  • Designed & realized Plugin3, technical team lead.
  • Abstracted the windowing layer and modularized Plugin2, forming Plugin3. It featured usage of custom windowing implementations bootstrapped via JNLP.
  • Improved startup time about factor 3 - 13 (new load, reload). Added support for offscreen drawable to allow browser side compositioning.
  • Implemented an OpenGL proof of concept module using JOGL and NEWT.


Project: Experimental JavaFX 3D and multimedia cross platform UI API.

  • Targeted desktop and mobile devices for a high performance, state of the art user interface (HMI). Utilized hardware acceleration (OpenGL ES1.1, ES2.0, GL 1.5-2.0, OpenMax) for the scenegraph layer.
  • Adding support for per pixel lighting (normal maps) using Maya files.
  • Modularized and prepared the scenegraph layer for JOGL?s mobile GL profiles.

Solaris Windows Linux Java OpenGL GLX WGL Networking UML IA-32 Amd64 GCC MingW MacOSX JOGL Maya
Sun Microsystems, Inc., Santa Clara, CA
1 year 1 month
2008-01 - 2009-01

JOGL Redesign & Support

Senior Staff Engineer Solaris Windows Linux ...
Senior Staff Engineer

Project: JOGL Redesign & Support

  • Redesigned the OpenGL Java language mapping JOGL to support multiple
  • windowing systems and exposed multiple OpenGL profiles (ES 1.1, ES 2.0 and GL 1.5 - 4.1)targeting multiple desktop and embedded/mobile devices, technical lead.
  • Started a simple native windowing toolkit (NEWT), demonstrating efficient JOGL usage on desktop and mobile devices without AWT.
  • Supported porting JOGL to multiple embedded devices, APX 2500, Broadcom/LG, Intel CanMore and PowerVR-SGX/Omap3.
  • Adding OpenMax IL multimedia support access for embedded platforms.
  • APX 2500 Demo at JavaOne 2008
Solaris Windows Linux Android MacOS Java JOGL OpenGL JOCL OpenCL OpenMax OpenKode ARM IA-32 Amd64 Sparc Omap3 Tegra GCC MingW
Sun Microsystems, Inc., Santa Clara, CA
1 year 2 months
2007-08 - 2008-09

New Java Plug-In incl. JNLP support

Staff Engineer Solaris Windows Linux ...
Staff Engineer

Project: New Java Plug-In incl. JNLP support

  • JNLP integration in the New Java Plug-In. Designed & refactored the Java Plugin and JNLP modules, to become Plugin2. Added Unix Domain Sockets for the client/server IPC on unices. Stabilized the client/server communication and improved startup time. 
  • Helped specifying the JNLP extension and extended the test framework covering the new features. 
  • Presented at JavaOne 2008.

Solaris Windows Linux Java IPC Networking UML IA-32 Amd64 Sparc GCC VS-C
Sun Microsystems of Canada, Inc.
2 years 2 months
2005-06 - 2007-07

Embedded Graphics driver; Various embedded driver features and enhancements.

Senior Engineer Doxygen Office UML ...
Senior Engineer

Project: Embedded Graphics driver; Various embedded driver features and enhancements.

  • Managed requirements, designed & realized an embedded graphics driver for OpenGL core, EGL 1.1, ES 1.1/2.0 on various graphic chips R3xx, R5xx, R6xx and their mobile variants. Technical team lead.
  • Managed & implemented various customer feature & performance requirements: Performance OpenGL extension, hardware overlay, asynchronous ReadPixel, GLSL/DMA texture transfers, page flip, VSync and multi DMA page locks.
  • Transferred requirements to new technical specifications.
  • Enhanced performance about factor 2.5, targeting functional driver blocks like TLS, inlining, caching, dispatch table, stream copy, etc.
  • Participated in the general driver development within the software team and helped with enhancements. Worked on SDK & demo infrastructure and multimedia demos.

Doxygen Office UML Perforce Remedy GNU: GCC Linux Valgrind VTune ATI Graphic Cards Linux Kernel driver OpenGL GL ES IA-32 and PPC MPEG
Advanced Micro Devices (AMD), formerly ATI
3 months
2005-04 - 2005-06

Non Volatile Ram Manager

Senior Engineer MKS Doors Innovator ...
Senior Engineer

Project: Non Volatile Ram Manager

  • Managed requirements and specification for a new NV Ram Manager. The backward compatible module covered new customer requirements.

MKS Doors Innovator Doxygen MS Office NEC Lotus
Hella
4 months
2004-12 - 2005-03

Linux Device Driver - Monolithic and User Space

Senior Engineer Linux Kernel 2.6.x driver gcc dvb API ...
Senior Engineer

Project: Linux Device Driver - Monolithic and User Space

  • Investigated user space functionality within Linux device drivers. Learned pros and cons of simple resource handler and utilization of complex user space libraries. Implemented a portion of the Linux DVB API as an user level driver using FUSD and Gelato project knowledge.
Linux Kernel 2.6.x driver gcc dvb API FUSD gelato
Jausoft

Aus- und Weiterbildung

Aus- und Weiterbildung

6 years 5 months
1991-09 - 1998-01

Study of electrical engineering with a focus on computer science

Dipl.-Ing. (FH); Diplom Engineer, Applied Science (Equivalent to MASc), Bielefeld University of Applied Sciences, Germany, Europe
Dipl.-Ing. (FH); Diplom Engineer, Applied Science (Equivalent to MASc)
Bielefeld University of Applied Sciences, Germany, Europe

  • Computer Science.
  • Thesis: OpenGL for Java (GL4Java) [URL auf Anfrage]

11 months
1990-08 - 1991-06

A-Level certificate

Senne-College, Bielefeld, Germany, Europe
Senne-College, Bielefeld, Germany, Europe
  • Graduation in 06/1991.
11 months
1987-08 - 1988-06

High School examination

SZ Buergerpark, Bremerhaven, Germany, Europe
SZ Buergerpark, Bremerhaven, Germany, Europe
1 year 10 months
1985-09 - 1987-06

Education as an industrial electrician

SZ Buergerpark, Bremerhaven, Germany, Europe
SZ Buergerpark, Bremerhaven, Germany, Europe
  • Journeyman examination at the Bremerhaven Chamber of Commerce (IHK).

Position

Position

  • Staff or Senior Engineer, focusing on cross-platform technologies using native (C++, ..) and VM technology (Java, WebAssembly) in the area of optimization and game theory including LLM, network protocols, computer graphics - besides others.
  • I also tutor computer science, using applied math and physics example projects.
  • You can call me a hacker by passion.

Kompetenzen

Kompetenzen

Top-Skills

C++ Java SystemArchitektur 3D-Grafik GPU Netzwerkprotokoll Multithreading Webassembly bluetooth crossp Plattformunabhängigkeit Verschlüsselung Requirements Management Algorithmen

Schwerpunkte

Software Engineering
Fortgeschritten

Produkte / Standards / Erfahrungen / Methoden

Introduction:

  • 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, MacOSX, Linux, Android and iOS) on desktop, mobile & embedded systems. While it runs on the Java VM, the implementation layers involve our own compiler, C/C++ and ObjectiveC native system level code. Tasks included low level debugging and performance analysis as well as coding computer graphics, adding a video layer with FFmpeg and stereoscopic rendering with lense correction for OculusVR (slide 47, video 47:15). This culminated to our own resolution-independent GPU NURBS 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 sub-section offers some more excerpts from my background, if interested.


Chronological Background:

  • 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 exposingnative 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.


Career:

11/2009 - today:

Role: Software Engineering / Consulting, Sole Proprietor

Customer: jausoft


09/2008 - 11/2009:

Role: Senior Staff Engineer

Customer: Sun Microsystems, Inc., Santa Clara, CA, USA


08/2007 - 09/2008:

Role: Staff Engineer

Customer: Sun Microsystems of Canada, Inc., Edmonton, AB, Canada


06/2005 - 07/2007:

Role: Senior Software Engineer and Team Lead

Customer: Advanced Micro Devices (AMD), formerly ATI, Markham, ON, Canada


09/1991 - 06/2005:

Role: Software Engineering / Consulting, Sole Proprietor

Customer: jausoft


08/1988 - 03/1990:

Role: Civilian Services.

Customer: Communications Center Dodesheide, Osnabrueck, Germany, Europe.


Domains:

  • Architecture, design, development, test and deployment (SDLC)
  • Computer Graphics and 3D
  • Device Connectivity
  • Embedded and platform independent development
  • High performance and parallel computing
  • Project management and maintenance
  • Security and Cryptography
  • Training


Topics:

  • Application integration (EAI, J2EE, XML, XSLT, SOAP, REST, ..)
  • Automotive / Adaptive AUTOSAR
  • Computer Graphics (3D, linear algebra, ..)
  • CAD/CAM integration and DSL Optimizations
  • Compiler and interpreter construction
  • Controller programming ANSI-C(++) and Assembler
  • Cryptography (authenticity & privacy/encryption)
  • Device connectivity and security
  • DB applications and interfaces (DB2, SQL, JDBC)
  • Graphic User Interfaces (GUI)
  • Multimedia systems (Player software, decoder, hardware driver (mpeg2, mp2, pcm, a52))
  • Network protocols
    • BSD Sockets, TCP/IP, MOST, I2C, IPC, CAN, ISDN
    • HTTP, WebSockets
    • REST API, WOPI, JSON, ...
    • RPC, Corba, ...
    • Bluetooth LE and BREDR
  • Network techniques (DB interfaces for HTML Server,WWW, Proxy, Ftp, News, Email clients, Firewall etc.)
  • OO-Design (UML, Rational Rose, Paradigm Plus, C++, Java)
  • Optimization engines (Genetic algorithms, Neuronal Networks etc.)
  • Organizing and planning
  • Parallel Computing, Concurrency (SDL / UML, SIMD / MIMD, OpenMP, OpenCL)
  • System analysis and design
  • System software
    • Network protocols
    • Filesystem
    • Graphic Card Driver (XFree86, Proprietary, Console)
    • Linux Kernel Development (device driver and porting)
    • OpenGL, GL ES, driver development
    • QN?X Device Driver Development
  • Tutoring (C++, Java, Physics/Simulation, Networks)
  • Unix administration


Development Environment and Tools:

  • API: OpenGL/GLSL, OpenCL, OpenMP, ODBC/JDBC, pthreads, STL, ...
  • Bugs/Requirements: Bugzilla, Jira, GitLab, Github, ..., Doors
  • DB: MariaDB/MySQL, DB2, dBase, Oracle, ...
  • Compiler: gcc/g++, clang/llvm, clang-tools, ...
  • Compiler-Compiler: ANTLR, Lex & Yacc (Berkley, MKS, GNU), JavaCC
  • Continuous Integration (CI): Jenkins/Hudson, Travis/Gitlab, ...
  • Review: Github, gerrit, ..
  • Testing: Catch2, CppUnit, GoogleTest, JUnit, ..
  • Virtualization: Docker, Linux binfmt misc/chroot/cgroups, ...
  • IDE: Eclipse, VSCode, Netbeans, MS-Visual C++, ...
  • SCM: GIT, Perforce, Remedy, ClearCase, Change Synergy, CM Synergy; SCCS, RCS, CVS
  • UML/OO: Bouml, Rational Rose, Paradigm Plus, Innovator, Telelogic SDT/SDL, ArgoUML, Thorn, Umbrello, ...


Methodology:

  • Extreme- and team-programming, Knowledge Transfer
  • Requirement Management
  • Review, audit and QA procedures
    • Static code analysis
    • Ru?ntime analysis with code instrumentation
  • Object oriented programming (C++, Java and either C)
  • Configuration-management, project maintenance
  • Usage and implementation of platform independent standard libraries
  • OO-Design using UML iteratively
  • Tests: BlackBox, WhiteBox, Unit, Continuous Integration, Regression
  • UML Analysis and Design (OO, Structured, States, ..)
  • SDL specification for multiprocessing / multithreading systems
  • Top-Down specification; Buttom-Up implementation


Server Environment:

  • Apache, NGINX, Samba, Squid, inn(news), ftpd, routed, ippp, iptables, sendmail, VPN, squid, mysql, git, bugzilla, jenkins, ...
  • GNU/Linux Server, Windows clients

Betriebssysteme

  • Unix Derivates (POSIX)
    • AIX
    • BSD / FreeBSD
    • Darwin/MacOS and iOS
    • GNU/Linux and Android
    • QNX
    • Solaris
  • Bare-metal embedded
    • Keil.
    • VxWorks
    • Ze?phyr
  • Windows (95, XP, .. 11), MS-Dos

Programmiersprachen

C / C++ (STL, C++98 - C++23)
Java (1.0.2 - 18, J2ME)
GLSL (OpenGL), OpenCL
Rust (beginner)
Scripting languages as necessary (Korn, Bash, Perl, Python, ECMCA, ..)
Assembler (80x86, 68000, 650x)
Java- and Typescript

Hardware

AIC RS/6000
ARM 32bit and 64bit
Bluetooth LE and BREDR (Programming per Specification)
CNC-Controlling
Controller (8051, 80166, ARM, SH4)
DSP?s (TMS..)
Graphic Chips (ATI R3xx-R6xx, Siliconmotion, Fujitsu MB86291)
HP
IBM PC + Compatible
PowerPC 7xx
SUN Sparc

Branchen

Branchen

  • Medical Device Industry
  • Automotive Supply Industry
  • Financial Industry
  • CAD/CAM - Woodworks and sewing machines
  • Electronic Industry
  • Energy supply
  • Engineering
  • Graphics, video and multimedia product manufacturer
  • Internet provider
  • Scientific Research and Development
  • Software development
  • Training center

Vertrauen Sie auf Randstad

Im Bereich Freelancing
Im Bereich Arbeitnehmerüberlassung / Personalvermittlung

Fragen?

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

Das Freelancer-Portal

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