Profilbild von Ronny Press Software-Entwicklung, Code Review, Performance-Optimierung C/C++ aus Boeblingen

Ronny Press

teilweise verfügbar

Letztes Update: 21.05.2023

Software-Entwicklung, Code Review, Performance-Optimierung C/C++

Abschluss: stg. Informatiker (Akademie für Datenverarbeitung, Böblingen)
Stunden-/Tagessatz: anzeigen
Sprachkenntnisse: deutsch (Muttersprache) | englisch (verhandlungssicher)

Dateianlagen

Fragebogen-Projekte.pdf
Profil-Programmierer-Softwareentwickler_013023.pdf
blogpost-porting-pveclib-to-armneon_280323.pdf

Skills

Programmiersprachen
  • C - sehr gute Kenntnisse
  • C++ - sehr gute Kenntnisse, C++11
  • C# - erweiterte Kenntnisse
Entwicklungsumgebungen, Buildumgebungen
  • Microsoft Visual C++/Visual Studio 2010-2019
  • MSBuild
  • CMake - erweiterte Kenntnisse
  • Makefiles - erweiterte Kenntnisse
  • GNU C Compiler, GNU C++ Compiler
  • momentan Basiskenntnisse clang/LLVM, detailliertere Einarbeitung erforderlich
Technologien, Frameworks
  • systemnahe Entwicklung für Windows und Linux
    • in Projekten:
      • Konzeptionierung, Implementation und Wartung eines XML- Konverters in C++
      • Konzeptionierung, Implementation und Wartung einer Software Update Lösung in C++ (Bereich Fahrzeugdiagnose)
      • Feinkonzeptionierung + Impl. eines Verfahrens zur Beschleunigung von HTTP-Verbindungen für Satelliten-Internetzugänge
      • Konzeptionierung und Implementation eines Programms für die Analyse von aufgezeichnetem Netzwerktraffic und Ermittlung statistischer Zahlen
  • STL (C++)
  • Boost (C++):
  • Win32 (C und C++)
  • MFC
    • in Projekt: Installationssoftware f. das Intelligente Barcode System
  • Qt - Grundkenntnisse
    • in Projekt: Feinkonzeptionierung und Implementation eines patentierten Verfahrens zur Beschleunigung von HTTP-Verbindungen für Satelliten-Internetzugänge
  • ATL (Active Template Library) / WTL (Windows Template Library) - erweiterte Kenntnisse
    • in Projekten:
      • Feinkonzeptionierung + Impl. eines Verfahrens zur Beschleunigung von HTTP-Verbindungen für Satelliten-Internetzugänge: Steuerfrontend f. Client (Starten, Stoppen, Bandbreitengrenze- und Serverauswahl)
      • Konzeptionierung und Implementation einer Umgebung aus dem Bereich Digital Content Creation
  • COM (Component Object Model) - erweiterte Kenntnisse
  • OpenGL inkl. GLEW, GLFW, GLUS und OpenTK für .NET - erweiterte Kenntnisse
  • Android (Java-basiert) - erweiterte Kenntnisse
  • XML, XSLT, XSD - erweiterte Kenntnisse
  • TCP/IP, TCP, UDP, sockets - erweiterte Kenntnisse
    • in Projekten:
      • Installationssoftware f. das Intelligente Barcode System
      • Feinkonzeptionierung + Impl. eines Verfahrens zur Beschleunigung von HTTP-Verbindungen für Satelliten-Internetzugänge
      • Konzeptionierung und Implementation eines Programms für die Analyse von aufgezeichnetem Netzwerktraffic und Ermittlung statistischer Zahlen
  • HTTP - erweiterte Kenntnisse
    • in Projekten:
      • Konzeptionierung, Implementation und Wartung einer Software Update Lösung in C++ (Bereich Fahrzeugdiagnose)
      • Installationssoftware f. das Intelligente Barcode System
      • Feinkonzeptionierung + Impl. eines Verfahrens zur Beschleunigung von HTTP-Verbindungen für Satelliten-Internetzugänge
  • HTML, CSS - erweiterte Kenntnisse
    • in Projekten:
      • Konzeptionierung, Implementation und Wartung eines XML- Konverters in C++
      • Konzeptionierung, Implementation und Wartung einer Software Update Lösung in C++ (Bereich Fahrzeugdiagnose)
      • Feinkonzeptionierung + Impl. eines Verfahrens zur Beschleunigung von HTTP-Verbindungen für Satelliten-Internetzugänge
  • MMX/SSE/SSE2/AVX/AVX2 Intrinsics (GNU C++ Compiler, Visual C++)
    • in Projekten:
      • Implementation einer C++-Bibliothek zur halbautomatischen Vektorisierung von Algorithmen für SIMD Befehlssätze
      • Feinkonzeptionierung + Impl. eines Verfahrens zur Beschleunigung von HTTP-Verbindungen für Satelliten-Internetzugänge
  • WPF (Windows Presentation Foundation, .NET) - Grund- bis erweiterte Kenntnisse
    • in Projekten:
      • Konzeptionierung und Implementation eines Programms für die Analyse von aufgezeichnetem Netzwerktraffic und Ermittlung statistischer Zahlen: Frontend
Laufzeitumgebungen
  • Linux
  • Win32 (ab Windows XP)
  • .NET Framework
  • Embedded: ARM; für andere Plattformen offen, braucht etwas zeitl. Vorlauf
Versionskontrollsysteme
  • Mercurial - erweiterte Kenntnisse inkl. hg flow
  • Git - Grundkenntnisse
Plattform- und Umgebungsübergreifende Kenntnisse
  • Bildsynthese und -algorithmen - erweiterte Kenntnisse
  • Bildverarbeitung und -algorithmen - Grundkenntnisse
  • Performance-Optimierung C/C++ - erweiterte Kenntnisse
  • Code Review
  • erweiterte Kenntnisse im Bereich Compilerbau: Interpreter f. teils selbst entworfene Skriptsprachen

Projekthistorie

06/2019 - bis jetzt
Konzeptionierung und Implementation eines Programms für die Analyse von aufgezeichnetem Netzwerktraffic und Ermittlung statistischer Zahlen

siehe https://www.microsoft.com/en-us/p/packetcapturefilescanner/9ph4wjfrbms2?activetab=pivot:overviewtab
und
https://github.com/soprero/pcapfilescanner

Aufgaben, jeweils Konzeptionierung und Implementation:
  * I/O-Modul: Einlesen von PCAP/PCAPNG Dateien
  * Extraktion von Basisinformationen aus den eingelesenen Paketen, z.B. IP-Adressen, Portnummern, usw.
  * Restaurierung von TCP-Verbindungen inkl. der zugrunde liegenden Flusssteuerung
  * Restaurierung von Request-Reply-Vorgängen von UDP-basierten Protokollen (z.B. DNS-Anfragen)
  * für den unterstützten Satz an Applikationsprotokollen: jeweils ein Modul
  * unterstützte Protokolle momentan:
    * Layer 2: Ethernet 802.3, Linux Cooked Mode, ARP
    * Layer 3: IPv4, IPv6, ICMP
    * Layer 4: TCP, UDP
    * höhere Layer: DNS, mDNS, DHCP, SNMP, PPPoE, TFTP, SMTP, HTTP, RIP, NTP
  * Ausarbeiten der jeweils nötigen Analyseschritte für die Zusammenfassung der extrahierten Informationen (Benutzer braucht z.B. Indikatoren über Engpässe, Auslastung, usw.)
  * Backend portabel gehalten, momentan Windows und Linux
  * Backend in C/C++ implementiert mit Wrapper f. eine PInvoke-kompatible DLL f. Anbindung des Frontends (nur Windows)
  * WPF-basiertes Frontend, das das Backend per PInvoke benutzt
  * Backend ist C-artiger Code (nicht objektorientiert) mit Verwendung von STL-Containern (C++)
  * Analyse-Durchsatz von 100 MB/s und mehr erreichbar

Stichworte

Deep Packet Inspection offline, Protokollanalyse, C/C++, .Net, C#, PInvoke, WPF, Catch (Unit-Test Framework für C++)

01/2014 - bis jetzt
Implementation und Wartung einer C++-Bibliothek zur halbautomatischen Vektorisierung von Algorithmen für SIMD Befehlssätze von x86- und ARM-basierten Prozessoren (Single Instruction Multiple Data)

* C++ Template basiert
  * verwendet intern Compiler-Intrinsics (kein Inline-Assembler)
  * erlaubt Implementation von Algorithmen auf höherem Level als reine Benutzung von Compiler-Intrinsics oder Inline-Assembler, ohne wesentlich schlechteren Code zu erzeugen
  * Einsatz von C++ Templates erlaubt Verwendung von Befehlssequenzen, die vom Compiler direkt integriert werden (Inlining), ohne zwangsweise auf den Komfort von Funktionen verzichten zu müssen, da Verzweigungen und Funktionsaufrufe Nadelöhre sein können
  * unterstützt auch ARM NEON f. 32Bit-Fließkommaformat
  * ARM NEON Unterstützung auch für Android (NDK)

Stichworte
 
C++, Templates, SIMD, SSE2, GCC, MSVC, Compiler-Intrinsics, ARM NEON


02/2017 - 12/2018
Konzeptionierung und Implementation eines Programms zur Erzeugung von Videos aus Einzelbildern (Slideshow) inkl. einem Satz an Übergangseffekten, in C++ und CUDA

* Benutzung der eigenen Bibliothek für die halbautomatische Vektorisierung von Algorithmen für die Berechnung der Effekte per CPU (benutzt erweiterte SIMD-Befehlssätze von x86-basierten Prozessoren wie SSE2)
  * Berechnungen können sowohl im 32Bit-Fließkommaformat als auch in schmaleren Ganzzahlformaten stattfinden (z.B. 8 Bit pro Farbkomponente im RGB-Farbraum)
  * Einige der Effekte: Portierung nach CUDA (CUDA: Schnittstelle von nVidia f. die relativ freie Programmierung (nicht beschränkt durch einen reinen Shader-Mechanismus) von GPUs, besonders vorteilhaft bei gut parallelisierbaren Berechnungen)
  * Portierung auf ARM NEON (ARM-spezifische SIMD-Variante) mit relativ geringen Änderungen an den Algorithmen selbst in Zukunft möglich

Stichworte
 
C++, SIMD, CUDA, Catch (Unit-Test Framework für C++)

05/2015 - 03/2017
Entwicklung und Wartung mehrerer Android-Applikationen aus den Bereichen Entertainment und Productivity

mehrere Erweiterungs- und Anpassungsrunden im angegebenen Zeitraum (Anpassung an neuere Android-Versionen, Tablets, etc.)

Es handelt sich um Applikationen mit größtenteils lokaler Verarbeitung ohne serverseitigem Backend.

Stichworte
 
Java, Android

09/2015 - 01/2017
Feinkonzeptionierung und Implementation eines patentierten Verfahrens zur Beschleunigung von HTTP-Verbindungen für Satelliten-Internetzugänge

Kontext:

Aufgrund verfahrensbedingter sehr hoher Latenzen sind Internetzugänge per Satellitenschüssel (birektional) wenig performant, obwohl rein technisch ausreichend Download-Bandbreite zur Verfügung steht.
Dieses Problem ist für Webseiten besonders stark ausgeprägt, da diese aus vielen Einzelressourcen zusammen gesetzt werden.
Kern des Problems ist, dass das im Internet verwendete Protokoll TCP für dieses Einsatzszenario nicht ausreichend geeignet ist, um die zur Verfügung stehende Bandbreite voll nutzen zu können.

Aufgaben:
  * Feinkonzeptionierung eines eigenen Protokolls zum Transport von Web-Ressourcen
  * Implementation der serverseitigen Komponente, erforderte auch Anbindung an ein Headless-Browser-Modul
  * Implementation der clientseitigen Komponente (Ähnlichkeiten mit einem HTTP-Proxy)
  * Konzeptionierung und Implementation eines Verfahrens zur Reduktion der für die Übertragung der HTTP-Header nötigen Bandbreite (war möglich, da sowohl Server als auch Client Teil des Projektes war und keine Standardkomponenten sind)
  * Implementation eines Interpreters für eine projektspezifische Skriptsprache zur Testautomatisierung inkl. Entwurf der Sprache selbst
  * Konzeptionierung und Implementation einer Sammlung von Unit-Tests, benutzt Google Test
  * Portierung der Referenzimplementation des BLAKE2B Algorithmus nach SSE2 (x86/x64) und AltiVec, des BLAKE2S Algorithmus nach ARM NEON

Stichworte
 
C++, HTTP, UDP, sockets, gtest, headless browser


01/2014 - 04/2015
Konzeptionierung und Implementation einer portablen Lösung aus dem Bereich Digital Content Creation in C++: prozedurale Generierung von Bildern und Texturen

* umfangreiche Nutzung obiger Bibliothek für Berechnungen mit gepackten Vektoren/SIMD
  * Berechnungsschritte werden vom Benutzer in einem Graph zusammengestellt, die Berechnungen finden an den Knoten statt, jeder Knotentyp hat einen Satz an Parametern
  * jeder Knotentyp hat ein oder mehrere Ein- und Ausgänge die miteinander per Kanten verbunden werden können
  * Kanten können Skalare, Vektoren mit festen Größen oder Graustufen- (1 Kanal) bzw. Farbbilder (4 Kanäle) transportieren
  * mehr als 90 Knotentypen

Stichworte
 
C++, Catch (Unit-Test Framework für C++), Bildbearbeitung, Graphenverarbeitung (gerichtet, azyklisch)

07/2006 - 12/2013
Konzeptionierung, Implementation und Wartung einer Software Update Lösung in C++ für ein modifiziertes Windows-System aus dem Bereich Fahrzeugdiagnose

Projekt umfasste ca. 20 Wartungsaufträge im angegebenen Zeitraum

  * Installationspakete liegen als lose Sammlung auf einem HTTP-Server vor und enthalten einen Satz von Bedingungen in Form von Ausdrücken
  * Parsen dieser Ausdrücke und deren Auswertung gegen den Updatestand des Diagnosesystems
  * Herunterladen der Menge der aus der Auswertung hervorgegangenen installierbaren Paket
  * Wiederaufsetzen des Download-Vorgangs nach Abbruch
  * Generierung einer browserbasierten Benutzeroberfläche per XSLT
  * Zurücksenden von Informationen bzgl. Updateständen an den Server
  * in den letzten Jahren des Projektes wurden auch Flash-Dateien (Firmware-Updates f. Steuergeräte in den Fahrzeugen) über diese Software ausgeliefert
  * ein Windows-Dienst sorgt für ein regelmäßiges Starten des hier grob skizzierten Prozesses
  * es können Paketabhängigkeiten definiert werden, so dass eine entsprechende Abhängigkeitsanalyse zu implementieren war unter Verwendung des Verfahrens “Topologische Sortierung”

Stichworte
 
C++, STL, Boost (in geringem Umfang), Windows-Dienst, Parserentwicklung, HTTP, Apache Xalan/Xerces, HTML, CSS, Javascript (in geringem Umfang), XML, XSLT

02/2011 - 07/2013
Software-Entwickler (Festanstellung)

* Einarbeitung in das Output Management System W-ELP, Erweiterung der Konfigurationsoberfläche und Entwicklung der Funktionalität zur Reduzierung von MS Windows basierenden Datenstromgrößen und deren Wandlung in ISO Zeichensätzen
  * Eigenständige Entwicklung einer komplett neuen Installationssoftware für das RICOH Intelligente Barcode System, inklusive Formularmanagement und Anbindung an W-ELP
  * Eigenständige Entwicklung eines PCL 6 Parsers (Druckersprache)
  * Weitere kleinere in sich abgeschlossene Projekte

Pflege der Software Update Lösung für Fahrzeugdiagnosesysteme (siehe unten) im Nebenerwerb

Stichworte

C, C++, MFC, Druckersprachen (PCL 5 und PCL 6/PCL XL), SNMP, UDP, TCP, Winsock, Netzwerkscan per SNMP (Finden von Druckern), eigene spezialisierte Impl. eines Telnet-Client, automatisierte Installation von Erweiterungen für Drucker-Firmware über webbasierte Administrationsschnittstelle

05/2005 - 10/2011
Konzeptionierung, Implementation und Wartung eines XML-Konverters in C++ mit Verwendung von Apache Xalan/Xerces

mehrere Runden mit Wartungsarbeiten im angegebenen Zeitraum: neue Funktionalität, Anpassungen aufgrund geänderter Datenformate, Unterstützung anderer Fahrzeugsparten

  * Extraktion von Sitzungsdaten aus Protokolldateien der Diagnosesoftware (sog. Kurztests: Diagnosesoftware liest Fehlercodes aus im Fahrzeug verbauten Steuergeräten aus)
  * Filterung und Zusammenfassung dieser Einzeldaten
  * Konvertierung in das Zielformat per XSLT
  * Umfasste auch das Analysieren der Protokolldateien und das Unterbreiten von Vorschlägen, aus welchen Protokolldateielementen die fachlich benötigen Einzelinformationen zu extrahieren und ggf. einer Vorverarbeitung zu unterziehen sind
  * Separate Schnittstelle, die aus Diagnosebedatungen direkt aufrufbar ist und die Analyse der Protokolldateien umgeht
  * Zielformat ist Eingabeformat für ein webbasiertes Wissens- und Recherchesystem

Stichworte
 
C++, Apache Xalan/Xerces, XML, XSLT, DLL

Reisebereitschaft

Verfügbar in den Ländern Deutschland
Bevorzugte Einsatzgebiete: Großräume D7, D8, D6
Profilbild von Ronny Press Software-Entwicklung, Code Review, Performance-Optimierung C/C++ aus Boeblingen Software-Entwicklung, Code Review, Performance-Optimierung C/C++
Registrieren