Stefan Merettig
English
Ein Portrait von mir
Welcome Willkommen

Hello, My name is Stefan Merettig and I'm a freelancing Software Engineer from Hamburg, Germany.

Sehr geehrte Damen und Herren, Ich heiße Stefan Merettig und bin freiberuflicher Software Entwickler aus Hamburg.

Please don't hesitate to contact me at [email protected], or LinkedInhttps://www.linkedin.com/in/stefan-merettig/ - I'd be happy to hear from you!

Bei Interesse kontaktieren Sie mich gerne unter [email protected], oder per LinkedInhttps://www.linkedin.com/in/stefan-merettig/ - Ich freue mich von Ihnen zu hören!

C++
Up to C++20 Bis C++20
Qt
Since Qt4.7 Seit Qt4.7
Architecture Architektur
iSAQB Certificate iSAQB Zertifikat
Linux
Also bash scripting Auch bash scripting
SQL
SQLite, PostgreSQL
Rust
First applications Erste Programme
LLM
Using local models Lokale Modelle
Additionally, I know my way around Docker, Git, various CIs, etc. I strive to write reusable, understandable code that's efficient to run without too much overhead.
Zusätzlich beherrsche ich Werkzeuge wie Docker, Git, diverse CIs, und so weiter. Ich versuche stets wiederverwendbaren, leicht-verstehbaren Code zu schreiben der mit guter Effizienz ohne viel Overhead läuft.
C++
Up to C++20 Bis C++20
Qt
Since Qt4.7 Seit Qt4.7
Architecture Architektur
iSAQB Certificate iSAQB Zertifikat
Linux
Also bash scripting Auch bash scripting
SQL
SQLite, PostgreSQL
Rust
First applications Erste Programme
LLM
Using local models Lokale Modelle
Additionally, I know my way around Docker, Git, various CIs, etc. I strive to write reusable, understandable code that's efficient to run without too much overhead.
Zusätzlich beherrsche ich Werkzeuge wie Docker, Git, diverse CIs, und so weiter. Ich versuche stets wiederverwendbaren, leicht-verstehbaren Code zu schreiben der mit guter Effizienz ohne viel Overhead läuft.

Lebenslauf

Career

Stefan Merettig
[email protected]
Löwenstein Medical SE & Co. KG Hamburg August 2023 - August 2024
Software Entwicklung für eines lebenserhaltenden, tragbaren Beatmungsgeräts. Das System besteht aus einem Linux-Computer, welches mit mehreren Microcontrollern über eine UART-Schnittstelle interagiert.
  1. Entwicklung einer Software, die das propritäre UART-Protokoll unterstützt und erlaubt, dieses für Testzwecke zur Laufzeit zu manipulieren. Dies erleichtert den Testaufwand massiv.
  2. Entwicklung neuer Funktionen und Pflege der C++/Qt Software, größtenteils im Backend. Verbesserung der SQLite Datenbank für eine Beschleunigung um Faktor 30.
  3. Beratung bzgl Rust, auch für zukünftige Projekte. Abwägung von Vor- und Nachteilen im Vergleich zu C++/Qt. Dazu kleine Schulung zu den ersten Schritten mit Rust und die Einbettung in die Entwicklungsumgebung.
Software development for a life-sustaining, portable ventilator machine. The system consists of a Linux-computer, which interacts with several microcontrollers via a UART interface.
  1. Development of software that supports the proprietary UART protocol and allows for manual manipulation during runtime for testing purposes, significantly reducing the effort required for testing.
  2. Development of new functions and maintenance of C++/Qt software, primarily on the backend. Improvement of the SQLite database for a speed increase by a factor of 30.
  3. Consultation regarding Rust, including for future projects. Weighing of advantages and disadvantages compared to C++/Qt. Additionally, training sessions on first steps with Rust and integration into the development environment.
Technologien C++, Qt, Linux, Rust
SICK AG Hamburg August 2021 - Mai 2023
Fortführung der letzten Tätigkeit als Software Architekt. Zusätzlich:
  1. Mitgestaltung von einem konzernweiten Rahmen zur Software-Architektur Dokumentation (mit Arc42)
  2. Beratung des neu gegründeten WebUI Teams zur Weiterverwendung unserer Technologien
  3. Entwurf von Proof-of-Concepts von NodeJS Addons und WebAssembly Module um unsere C++ Algorithmen weiter zu verwenden
  4. Erhalt des iSAQB Zertifikats "Certified Professional for Software Architecture"
Continuation of the last assignment as Software Architect. Additionally:
  1. Co-creation of a group-wide framework for software architecture documentation (using Arc42)
  2. Support for the newly founded WebUI team for re-usage of our technologies
  3. Development of a Proof-of-concept of NodeJS addons and WebAssembly modules to keep using our C++ algorithms
  4. Received the iSAQB Certificate "Certified Professional for Software Architecture"
Technologien Arc42, iSAQB
SICK AG Hamburg Juli 2018 - März 2021
Entwicklung einer industriellen Kartierungssoftware von 2D und 3D Punktwolken in einem agilem Team. Ich habe viele der grundlegenden Komponenten entworfen und gewartet. Darunter waren:
  1. Kryptografischer Lizenz-Mechanismus (Mit libSodium), dazu eine einfache WebUI zur Erzeugung und Verwaltung der Lizenzen
  2. Nutzeroberfläche (mit Qt) für eine gleichbleibende Nutzerführung
  3. Refactoring von einem kleinen Projekt für die Forschung hin zu einem Endnutzer-fähigem Programm
  4. Einführung und Schreiben von Tests (Anfangs QTest, später Catch2)
  5. Strukturierte Logging Bibliothek samt WebUI zur effizienten Auswertung von großen Logdaten
  6. Flexibles Datenformat zur Aufzeichnung von hoch-frequenten Rohdaten (mit Capnproto). Diese Daten waren die Eingabe unseres Programms.
  7. Hoch-performanter Datencontainer, ähnlich zu einem Dateisystem, mit transparentem Journaling (Undo-Feature)
  8. Einbringung des GIS (Geospatial Infromation System) Spatialite in die Kartierung

Hervorzuheben ist Punkt 7: Dieses Datenformat war in der Lage von mehreren Threads aus gleichzeitig bearbeitet zu werden. Die Verarbeitungsgeschwindigkeit ähnlicher Prozesse war bis zu 1000x schneller ohne direkt auf dem Dateisystem des Computers.
Dies erlaubte es auch einfache Büro-Computer Dateien mühelos zu verarbeiten, die viel größer als der Arbeitsspeicher war. So konnte eine 150GiB große Datei innerhalb von drei Sekunden geöffnet und flüssig angezeigt werden.

Development of an industrial mapping software for 2D and 3D point clouds in an agile team. I created and maintained many of the base components, such as:
  1. Cryptographic license mechanism (using libSodium), with a simple WebUI to create and manage licenses
  2. User interface (using Qt) with a homogeneous user experience
  3. Refactoring of the initially small research project into a end-user software
  4. Introduction and writing of automated tests (Initially with QTest, later Catch2)
  5. Structured logging library with WebUI for efficient evaluation of large amounts of logged data
  6. Flexible data format to record high-frequency raw data (using Capnproto)
  7. High-performance data container, much like a file system, with transparent journaling capabilities (Undo-Feature)
  8. Introduction of the Spatialite GIS (Geospatial Information System) to aid in mapping
  9. To highlight point 7: This data format was capable of multi-threaded simultaneous access. Doing the same operations directly on the file system would've been up to 1000x slower.
    This allowed a common office computer to easily handle files much larger than its RAM. This way, a 150GiB file could be opened in about 3 seconds.

Technologien C++, Qt, Linux, SQLite, GIS, TypeScript, Capnproto, OpenGL, CMake
crealytics GmbH Passau Oktober 2017 - März 2018
Pflichtpraktikum im Rahmen des Studiums.

Eigenständige Entwicklung eines Werkzeuges, welches Produktkataloge der Kunden mithilfe von Natural Language Processing in eine Neo4j Graph-Datenbank importierte und so visualisieren konnte. Hierdurch konnte die interne BI-Abteilung die Kunden besser verstehen und auf "Lücken" im Sortiment hinweisen.

Mandatory internship as part of the course.

Independent development of a tool which consumed product catalogues of customers, making use of natural language processing. The results were stored in a Neo4j graph database for visualization. Using this, the internal BI department was able to understand customers better and could suggest "missing" products to add to their catalogue.

Technologien Ruby, Docker, Neo4j
Bilfinger Greylogix GmbH Flensburg Juni 2015 - August 2017
Werkstudententätigkeit während des Studiums.

Entwicklung einer Software zur Verwaltung von Docker Containern in einem verteilten System. Dieses haben wir transaktional entworfen wodurch bei einem kaputten Deployment dieses automatisch zurück gerollt wurde.

Working student job.

Development of software to manage Docker containers in a distributed system. This software was transactional, meaning if it detected an error during deployment it could roll back all changes.

Technologien Ruby, Linux, Docker, Ansible
Hochschule Flensburg September 2015 - Mai 2018
Studium der Angewandten Informatik. Abschlussnote 2,0 - Thesis 1,3.

Thesis Thema "Entwicklung eines dynamisch rekompilierenden Emulators", in dem ich einen NES Emulator entwickelt habe der die Maschinenbefehle für diese Spielekonsole in Befehle übersetzt hat, den moderne Computer direkt ausführen können. Das Projekt heißt DyNES und befindet sich auf Github: github.com/papierkorb/dynes

In dem Thesis-Projekt wurde dazu LLVM verwendet. Später habe ich dem Projekt noch weitere Prozessor-Implementationen hinzugefügt:

  1. Ein Kern, der die Anweisungen nach Lua übersetzt und ausführt
  2. Ein Kern, der nativ amd64 Instruktionen ausgibt und ausführt
Studied applied computer science. Final grade 2.0 ("good"), bachelor thesis 1.3 ("Very good").

Thesis topic "Development of a dynamically recompiling emulator", in which I developed an NES emulator that translated the machine instructions of the video gaming system into instructions a modern computer understands. This project is called DyNES and can be found on Github: github.com/papierkorb/dynes

I used LLVM for the thesis to generate the computer instructions. After the thesis, I added further processor implementations:

  1. A core that translates the instructions into Lua code and executes it
  2. A core that outputs native amd64 instructions and executes them