Profil
Jul/Aug 2010
[An English version of this profile is available here.]

Name Menno RUBINGH
Beruf F&E Software-Entwerfer,
F&E Software-Dokumentalist
Kontaktdaten siehe diesen link
Geburtsdatum 7 Dez 1966
Staatsangehörigkeit niederländisch
Sprachen
English   -- fliessend
Deutsch   -- gut
Niederländisch   -- Muttersprache
Französisch, Italienisch   -- verstehen
(Japanisch, Chinesisch   -- einige wenige Basiskenntnisse)
Persönlichkeits-Typ
Big Five   :   O++ C- E-- A- N=
MBTI   :   INTP


ZUSAMMENFASSUNG:

Ich bin nützlich einsetzbar überall wo Neues begriffen (technisch/physisch vernunftlich eingeordnet) werden muss; und dann entweder ausgebaut werden muss zu einem funktionierenden Prototyp für ein konkretes technisches (Teil-)System, oder klar beschrieben werden muss. Ich bin nützlich für Aufgaben die man nicht erledigen kann nur durch Einsatz von "off-the-shelf" Standard-Lösungen.


ANGEBOTENE DIENSTE:



STICHWÖRTER TECHNISCHE ERFAHRUNG:
Programmiersprachen  
ANSI C, C++, Java, Pascal, Perl, assembler, FORTRAN (-77 and -90), Lisp, Smalltalk, BASIC, VBA, UNIX shell scripts (sh/bash/ksh/C), Javascript, ...
Operating systems und Plattforms  
UNIX (Linux, HP-UX, AIX), Windows, Renesas M32192 mit OSEK/VDX, OS/2, DOS, VAX-VMS, Apple Macintosh, ...
Software-tools  
gcc, gdb, ddd, gprof, make, Microsoft Visual C++, Lauterbach debugger, Vector tools, yacc/bison, (f)lex, vi(m), hexdump, UNIX tools (grep/awk/sed/...), SVN/CVS/MKS/Clearcase, doxygen, javadoc, ...
Libraries  
C++ STL, MFC, OpenGL, X-windows, Java Sun container classes, Java Swing, ...
Kommunikations-Protokolle  
TCP/IP, (E)SMTP, HTTP, CAN, SPI, ...
Anwendungssprachen usw.  
XML, XSL, SQL, mySQL, Postscript, Prolog, UML, formale Spezifikationssprachen (Z, predicate calculus), ...
Weitere relevante Fähigkeiten/Kenntnisse  
  • Umfangreiches Wissen in Physik, Elektronik, Mathematik (inkl. numerische Mathematik und Graph-Algorithmen), KI-Bereichen (neuronale Netze, natural language processing, Text-Assoziation), und Informatik (hashing, random generation, balanced trees, compiler design); Basiskenntnisse Informations-Theorie
  • Informatik-Erfahrung umfasst u.a.: Kode-Generierung (u.a. von C/C++, VBA, XSL, XML/HTML, Postscript); Kodierung von Interpretern; Erstellung eigener Software-tools (z.B. Java file-scope class detector, calling tree analyzers, BASIC variable definition checker); Computer-Graphik (ray tracing, splines, NURBS); Objekt-orientierte Entwicklung (in beliebigen Programmiersprachen); UNIX System-Programmierung (pthreads, pipes, ...)



AUSBILDUNG:

Technische Universität (TU) Delft, Niederlande, 1986 - 1991: Diplom Elektrotechnik
  • Spezialisierung: Halbleiterphysik und Computer-Simulation von Halbleiter-Elementen
  • Praktikum während des Studiums (1990, Philips Nijmegen, Niederlande): Computer-Modellierung von ESD-Schutz-Transistoren.



BERUFLICHES CURRICULUM VITAE:     Älteste Jobs zuerst.   Gehe zum letzten Job

  • 1992-1996: Erste Jobs, Niederlande
    • 1992 (Delft Institute of Micro-Electronics and Sub-micron techology, Delft) -- Schreiben eines Computerprogramms für Berechnung von Ladungs-Verteilungen in SiGe MOS Transistoren (C++, Apple Macintosh); und Assistenz bei Literatur-Recherche.
    • 1993-1994 (Warma Engineering, Ridderkerk bei Rotterdam) -- Allgemeine Wartung an einem Programm für Steuerung/Überwachung von Heizungs-Installationen. (Basic, DOS.)
    • 1995 (INCORE Automatisering, Amsterdam) -- Entwurf und Implementierung eines Programms for generische und konfigurierbare Daten-Kommunikation (file transfer über TCP/IP) zwischen einem Lagerhaus-Management-Programm und einem remote database. (C, OS/2.)
    • 1996 (TNO-FEL, Den Haag) -- Implementierung eines Programms for Berechnung des Infrarot-Kontrasts eines Marine-Schiffes, basiert auf ein einfaches analytisches Modell. Dabei auch mitgeholfen das Modell mathematisch konzistent zu machen. (FORTRAN-90, DOS.)
    • 1996 (CMG, Den Haag) -- Programmierarbeit an der Steuerung des Sturmflut-Schutz-Damms ("Stormvloedkering") bei Rotterdam. (UNIX, C/C++.)
  • 1996-1997 (CONSUL Risk Management B.V., Delft, Niederlande; in Zusammenarbeit mit der TU Delft, Niederlande)
    F&E an anomaly detection für computer security.
    Background Die zu detektierenden "anomalies" wurden definiert als: verdächtige, nicht-übliche Einträge in logs (Aufzeichnungen) des Verhaltens von Benutzern von Computer-Netzwerken. Das Ziel dieser anomaly detection war das Erkennen (möglicher) Intrusion in das Netzwerk aus Änderung des Verhaltens der Benutzer.
    Long_Desccription Forschung nach für anomaly detection benutzbare Daten-Analyse-Methoden (u.a. statistische Methoden); danach Entwurf, Entwicklung, Dokumentation, und Testen eines Prototyp-Programms für anomaly detection in computer logs. (ANSI C, SQL, Sybase, UNIX, Windows NT, MVS.)
  • 1998-2000 (Freiberufliche Arbeit, Niederlande)
    Analyse und Dokumentation der logischen Funktionalität existierender Programme, um die Kode für den Kunden zu öffnen für Änderung und Weiterentwicklung
    Long_Desccription für die folgenden Programme: 1. (für Europe Data Consult, Rotterdam) ein altes Pascal-Programm für Berechnung der technischen Spezifikationen eines elektrischen Leistungs-Stromleiters; 2. (für RIKS, Ministerium für Wasserbeherrschung, Den Haag) das DIGIPOL Program, ein C Programm für Interpolation von Meeres- und Fluss-Tiefenmessdaten.
    Sonstige Aufträge:
    Long_Desccription (für Rentmeester Informatisering, Alphen a/d Rijn) manuelle Konversion von Windows '9x printer driver Software nach Windows NT 4.0; und (für EDS Leidschendam) UNIX shell scripting und Dokumentation für ein Backup-System.
  • 2001 (ED&T, Philips Research, Eindhoven, Niederlande)
    Neu-Implementerung eines Programs für Konversion der logischen Modellbeschreibung von analogen/digitalen ICs.
    Background Das Programm (genannt "maketiming") diente dazu, die Modell-Beschreibung eines gemischt analog/digitalen ICs zu konvertieren nach ein angenähertes völlig digitales Modell, so dass Simulations-Software für digitale ICs eingesetzt werden konnte für die Berechnung des Zeit-Verhaltes eines gemischt analog/digitalen ICs.
    Long_Desccription Neu-Implementerung des Programms zu einer anderen internen Datenstruktur. Dies war notwendig für die Erweiterung des Programms zu Verarbeitung von zusätzlichen File-Formaten für digital cell libraries.
            Zusätzlich: Dokumentation und Fehlersuche für einige Hilfs-Programme benutzt bei der Konversion von digital cell libraries nach anderen Datei-Formaten. (UNIX, C++)
  • 2002-2004 (im-brain GmbH, Dortmund)
    Entwurf und Entwicklung von Text-Assoziations-Software.
    Background Dieses Text-Assoziations-Software ist ist ein "Gehirn" das Texte auf "Mensch-ähnliche" Weise mit einander vergleichen kann, dadurch dass es (automatisch generierte) "Wolken" von Assoziationen rund jedes Wort berücksichtigt.
    Long_Desccription Hauptaufgabe: Entwurf, Implementierung und Testen des zentralen Assozations-Moduls benutzt von allen im-brain Anwendungs-Programmen.
            Weitere Aufgaben: Forschung nach Erweiterung der Assoziations-Maschine zu Bild-Daten, und Auslieferung eines Prototyp-Systems dass Logo-Bilder vergleicht und Text in eingescannte Bilder erkennt. Herstellung von general-purpose Hierarchische-clustering-Software, mit graphischer Visualisierung des Ergebnisses der Clustering. Verbesserung der internen Struktur eines der (server-basierten) end-user Programmen. In aller im-brain Software, Zerlegung der Kode in Bibliotheken, und Hilfe geleistet beim mehr fehlerfrei machen der Kode. Schreiben von Software-Design- und Algorithmen-Dokumentation. (Linux, C++)
  • 2005 (freiberuflich für Docuserve, Hamburg -- für Kunde Basler Vision Technologies, Ahrensburg)
    Schreiben eines "Programmer's Guide" für die API der Software-Bibliothek einer "smart camera".
    Background Die Kamera war ausgestattet mit einem general-purpose Prozessor, worauf Anwender-Programme (u.a. zur Bildverarbeitung) ausgeführt werden konnten. Über eine bei der Kamera mitgelieferten Software-Bibliothek können diese Anwender-Programme die Kamera steuern (z.B. Starten von Aufnahmen, Konfiguration von Beleuchtungs-Parametern).
    Long_Desccription Hauptaufgabe: Schreiben einer Übersicht ("Programmer's Guide") über die API dieser Software-Bibliothek. Zweck dieses Dokumentes war, dem Anwendungs-Programmier (beim Kunden von Basler) die Übersicht und Einsicht in den Zusammenhängen zu geben die die automatisch (mit doxygen) aus der Source-Kode generierte Dokumentation nicht übermitteln konnte. Zur Arbeit gehörte auch, mitzuhelfen zu klären (mit den Programmierern und aus der Source-Kode) welcher Teil der Methoden/Klassen im Library eigentlich zur exportierten API gehörte.
            Zusätzlich: Assistenz bei der Strukturierung des automatisch aus der Source-Kode generierten Teils der Dokumentation; Schreiben von erklärenden Beschreibungen bei den mit der Software-Library mitgelieferten Sammlung code samples (Beispiel-Anwenderprogrammen).   (Die Software-library war eine C++ library, mit Benutzung von templates und exceptions. Auf dem Prozessor in der Kamera lief das Linux Betriebssystem.)
  • Jan-Mai 2006 (JULIE Lab, Universität Jena)
    Java Software-Entwicklung für eine Sprachverarbeitungs-Forschungsgruppe.
    Long_Desccription Entwurf und Implementierung eines Infrastruktur-Systems für die Datenverarbeitung und Datenspeicherung benötigt für "überwachtes Lernen" von Sprachverarbeitungs-Software-Modulen, d.h. Adaptation deren Parameter an Trainings-Mengen. Das System umfasste eine zentrale Daten-Repository, einen Server für Zugriff auf diese Repository, und Client-Programme (für Verwaltung der Repository, und für Aufruf eines externen GUI-Programmes womit die Solll-Werte auf selektierte Trainings-Mengen eingegeben wurden). (Java, TCP/IP, Linux.)
  • Sep 2006 - Dez 2007 (Manu-Dextra GmbH, Nürnberg -- für Kunde Automotive Distance Control Systems GmbH, Lindau/Bodensee, einen Teil der Firma Continental)
    Dokumentation und Entwicklung für die Microcontroller-Software in einem Radar-Sensor-Gerät.
    Background Die Software auf den zwei Microcontrollern (Renesas M32192) in diesem Radar-Sensor-Gerät berechnete aus den rohen Radar-Daten die Position und Geschwindigkeit der (nähesten) im vom Radarbündel durchzogenen Raumabschnitt sich befindenden Objekte. Die Software (ANSI C) war strikt modularisiert in separate Software-Komponenten, einigermassen ähnlich zu C++ Klassen. (Diese Komponenten entsprachen weitgehend dem automotive AUTOSAR Standard.)
    Long_Desccription Meine Aufgaben bestanden zu etwa 75% aus Dokumentation, und zu etwa 25% aus Software-Entwicklung:
            Dokumentation: Software-Architektur-Dokumentation (Beschreibung des Entwurfs der gesamten Appplikations-Software im Gerät, mit den Software-Komponenten als 'black boxes'), sowohl für das Radar-Gerät als auch separat für die Architektur der auf allen Geräten benutzten Basis-Software-Komponenten. Design-Dokumentation für die Boot-loader-Software auf beiden Microcontrollern im Radar-Sensor-Gerät. Design-Dokumentation für eine der Software-Komponenten in der Applikations-Software des Radar-Sensor-Geräts, nämlich die "ACTL"-komponente (Application ConTroL), zuständig für die Überwachung und zeitliche Steuerung der zyklischen Datenverarbeitung im Radar-Gerät.
            Software-Entwicklung: Erweiterung der "ACTL"-Software-Komponente, nämlich das zur compile-time über Excel-Tabellen konfigurierbar machen der Zustandsmaschine für die zentrale "operation mode" des Radar-Geräts. Diese (für Menschen lesbare) Excel-Tabellen enthalten VBA Kode, der C Source-Files generiert mit darin die Definition von statischen C arrays und structs; diese statische Daten sind das "Programm" das während Laufzeit das Verhalten der state machine bestimmt. Zusätzlich Erstellung von Perl-scripts für Kode-Generierung für die Software-Komponente für CAN-Kommunikation, und Kunden-Anpassung in der selben CAN-Komponente. Auch für diese von mir geänderte/erstellte Kode und Scripts habe ich ausführliche Dokumentation abgeliefert. (C, CAN, OSEK/VDX, Vector/Lauterbach tools, Perl, VBA)
  • Jan-Jun 2008
    Lücke. Diese Zeit habe absichtlich frei genommen und zu hause experimentiert mit 8-bit AVR Microcontrollern, um meine Einsicht zu vertiefen in die hardware und die assembler-Programmierung von Microcontrollern.
  • Sep 2008 - Jun 2010 (DAKO GmbH, Jena)
    Zwei Aufgaben:
    Entwurf und Implementerung eines neuen 3D-Kerns für 3D CAD-Programme (Hauptaufgabe).
    Background Die Firma DAKO hat ihre eigene 3D CAD-Programme (Computer Aided Design) für das Erstellen und Anzeigen von Katalogen von mechanischen Bauteilen. Wie in vielen 3D CAD Programmen wird auch hier so vorgegangen dass der CAD-Zeichner ein komplexes Bauteil schrittweise zusammenstellt durch das Schneiden, Subtrahieren, und Zusammenfügen von einfachen 3D-Körpern ("Constructive Solid Geometry", CSG).
    Long_Desccription Meine Aufgabe war, die Funktionalität dieser CAD-Programme zu erweitern so dass jeder 3D-Körper (Bauteil) verfügbar ist nicht nur in einer Repräsentation als "Rezept" von sukzessiven CSG-Operationen (was die Software vorher schon konnte), sondern auch als sogenannte "boundary representation", nämlich als Menge der verbundenen Oberflächen-Segmente (Fazetten) und Kanten woraus die Oberfläche des Körpers besteht.
            Dazu habe ich einen völlig neuen 3D-Kern entworfen und implementiert. Die wichtigste Funktion dieses 3D-Kerns ist, eine CSG-Operation ausführen (zu berechnen), wobei sowohl die zwei input-Körper als auch der output-Körper repräsentiert werden durch ihre Oberflächen-Segmente und Kanten; und wobei der output-Körper als input für weitere CSG-Operationen verwendet werden kann. Benötigt waren hierbei nur 4 Typen von Oberflächen-Segmenten: Ebene, Zylinder, Kegel, und Torus. Die 3D-Kern Software wurde strikt isoliert von OpenGL und von jeder visuellen Darstellung.
            Teilaufgaben: Neue Datenstrukturen entwerfen für die Oberflächen-Segmente und Kanten; Die Schnittkurven berechnen zwischen zwei "beliebigen" Oberflächen (analytisch für einfache Fälle, numerisch für komplexeren Oberflächen); Einen Tessellator schreiben der einsetzbar ist für gebogene Oberflächen; Einen Regressions-Tester hinzufügen (war unerlässlich wegen der Komplexität der Software, und wegen der grossen Menge der mathematischen Spezialfälle). (C++, OpenGL, MS Visual C++, Windows PC)
    Programmierung Parser und Interpreter für eine neue Script-Sprache (2 Monate).
    Background Mit dem Ziel, es dem Bauteile-Hersteller zu ermöglichen die Konfiguration seine Kataloge selbst zu programmieren, entschied DAKO zur Entwicklung einer neuen, BASIC-ähnlichen Script-Sprache.
    Long_Desccription Hilfeleistung dabei, die exakte Syntax der Sprache festzulegen (zu entscheiden); genaue Dokumentation der Syntax; Hand-Kodierung eines Parsers ("top down" parser, predictive parser) und eines Interpreters für diese Sprache. Die Script-Sprache umfasste Funktionen und lokale Variabelen. Parser und Interpreter implementiert als strikt getrennte Teile (und beide durch C++ "interfaces" vom client code abgeschottet). (C++, MS Visual C++, Windows PC)


Legende:

Background   Einige technische Hintergrund-Infos zu der Aufgabe (zur Verständlichkeit)
Long_Desccription   Ausführliche Beschreibung der gelieferten Arbeit.