Embedded Software Entwicklung C/C++, Mikrocontroller und Linux, sowie Mobilentwicklung
Aktualisiert am 21.10.2024
Profil
Freiberufler / Selbstständiger
Remote-Arbeit
Verfügbar ab: 02.12.2024
Verfügbar zu: 100%
davon vor Ort: 100%
embedded
Bluetooth
C++
Software-Entwicklung
Linux
C
Qt
Swift
Android
iOS
Kotlin
Java
Deutsch
Muttersprache
Englisch
Fließend

Einsatzorte

Einsatzorte

Deutschland
möglich

Projekte

Projekte

2 Jahre 9 Monate
2022-04 - 2024-12

Bluetooth Implementierung eines Phone-as-a-key Systems im Automobilumfeld

Software-Entwickler C Bluetooth LE Mikrocontroller ...
Software-Entwickler
Für einen Kunden in der Automobilbranche habe ich die Software-Entwicklung des Bluetooth Mikrocontrollers eines "Phone-as-a-Key" Projektes übernommen. Hier kann ein Smartphone als Ersatz für einen Fahrzeugschlüssel verwendet werden, entweder durch Bedienung des Smartphones oder durch automatische Lokalisierung des Smartphones durch das Fahrzeug ("passive Entry") mit BLE und UWB.
Zunächst habe ich das Bluetooth Team in dem Projekt ergänzt, im Laufe des Projektes habe ich dann den Bluetooth Teil vollständig übernommen und auch große Teile der CAN/CAN TP Kommunikation Übernommen. Die Entwicklung bestand aus mehreren Teams und mehreren Mikrocontrollern, die in enger Abstimmung kommunizieren mussten.
Der anfangs verwendete Mikrocontroller wurde mehrmals aus verschiedenen Gründen gewechselt, die Software musste dementsprechend an neue Mikrocontroller und teilweise an den Bluetooth Stack eines anderen Herstellers angepasst werden - auch in Kooperation mit dem Hersteller der entsprechenden Mikrocontrollers, da dieser sich ebenfalls noch in Entwicklung befand. Mehrere Bugreports an die Hersteller (teils bzgl. der Hardware selber) wurden von mir erstellt und ggf. intern bis zur Behebung durch den Hersteller durch interne Workarounds umfahren.
Eine große Produktdemo zwecks Vertrieb der Umsetzung wurde (auch) von mir unterstützt, welche letztlich erfolgreich war und zu einer erheblichen Ausweitung des Gesamtprojekts geführt hat.
Für die Umsetzung wurden je nach Projektstand teilweise FreeRTOS, ansonsten aber hauptsächlich AUTOSAR eingesetzt.
C Bluetooth LE Mikrocontroller SPI Segger J-link AUTOSAR CAN (CAN FD CAN TP) CANoe NXP TI ARM Cortex-M Secure Boot Cryptographie
1 Jahr 2 Monate
2021-11 - 2022-12

Bluetooth Implementierung eines Smart-Keyfobs im Automobilumfeld

Software-Entwickler C Bluetooth LE Mikrocontroller ...
Software-Entwickler
Für einen Kunden in der Automobilbranche habe ich die Implementierung einer Bluetooth Anbindung eines ?smarten? Fahrzeugschlüssel vorgenommen. Der Schlüssel (embedded Gerät) soll hierbei mit dem Fahrzeug über Bluetooth kommunizieren und Daten austauschen können, mit verschiedenen Randbedingungen, einschließlich einer Anbindung an den CAN Bus des Fahrzeuges sowie spezielle Anforderungen an die Batterielaufzeit. Das konkrete auf Bluetooth aufsetzende Protokoll war nicht vorgegeben, jedoch existiert eine branchenweit verwendete Protokollspezifikation für ähnliche Geräte und im Zuge dieses Projektes wurde ebenfalls geprüft, ob diese mit gezielten Änderungen auch für unseren Fall einsetzbar ist. Die Bluetooth Implementierung setzte vollständig auf Bluetooth 5 auf und musste zwangsläufig höhere Sicherheitsanforderungen sowie Stabilitätskriterien erfüllen. Das hierzu verwendete Protokoll wurde von mir umgesetzt - zunächst in einer "Mock" Umsetzung, die später von einer kompletten Cryptographischen Lösung ersetzt wurde.
Zielhardware war eine Mikrocontroller Architektur mit einem eingeschränkten Betriebssystem (FreeRTOS), in einem weiteren Schritt wurde jedoch auch eine ?Bare Metal? Implementierung ohne Betriebssystem vorgenommen.
Im Zuge dieses Projekts habe ich in Absprache mit dem Kunden eine Android App zur Diagnose der Bluetooth Geräte entwickelt. Diese App scannt nach vorhandenen Geräten des Kunden, stellt eine Verbindung her und überträgt über ein proprietäres Protokoll Diagnose Kommandos und Parameter Daten zum Gerät und erhält entsprechende Antwortdaten, die dem Nutzer aufbereitet zur Verfügung gestellt werden. Diese App wird intern zum Testen verschiedener Funktionalitäten sowie für Hardware Tests verwendet und wird auch den Kunden (Fachpersonal) zur Verfügung gestellt werden, um Fehleranalysen im Feld durchführen zu können.
Demo bzw. Vertriebs Veranstaltungen in denen das Produkt im jeweiligen Stand präsentiert wurde, wurden durch mich unterstützt und haben letztlich zur vollen Beauftragung bei meinem Kunden geführt.
Im weiteren Verlauf habe ich in einem separaten Projekt ebenfalls die Bluetooth LE Implementierung der Fahrzeugseite übernommen.

C Bluetooth LE Mikrocontroller SPI FreeRTOS Segger J-Link CAN CANoe Java Kotlin Android
4 Monate
2021-08 - 2021-11

Umsetzung Pilotprojekt Modbus TCP Security für IoT Geräte

Software-Entwickler Java Modbus Python ...
Software-Entwickler
Für einen Kunden aus der Energiewirtschaft, wurde in einem Pilotprojekt eine Implementierung des Modbus TCP Security Protokolls in Java umgesetzt.
Die produktiv genutzten Geräte des Kunden unterstützen die Anbindung verschiedener Geräte an das Gesamtsystem über branchenübliche Protokolle, insbesondere Modbus. Um die Nutzung außerhalb gesondert gesicherter Netzwerke zu ermöglichen, wird geplant die Möglichkeit Modbus TCP Security zu nutzen anzubieten, welches eine sichere Kommunikation der Geräte untereinander anbietet, ggf. auch über unsichere Internet Verbindungen.
In dem Pilotprojekt wurde die bestehende Modbus Umsetzung analysiert, erweitert und ggf. umgeschrieben um das zertifikatsbasierte Modbus TCP Security Protokoll zu ermöglichen. Weiterhin wurden Test Applikationen entwickelt um die Implementierung mit alternativen Tools testen zu können. Des Weiteren wurde ein Konzept erarbeitet, um dem Endanwender eine unkomplizierte Möglichkeit zu bieten neue Geräte auf sichere Weise in das System einzubinden.
Als weitere Option wurde die Java Implementierung so gestaltet, dass die Crypto Implementierungen einfach auf neue Java Versionen migriert werden können, insbesondere in Bezug auf genutzte kryptographische Funktionalitäten, die nicht Teil der Standard Java API sind.
Java Modbus Python golang OSGi IoT
1 Jahr 3 Monate
2020-09 - 2021-11

Entwurf und Entwicklung eines Authentifizierungs-Systems für IoT Geräte

Software-Entwickler C C++ googletest ...
Software-Entwickler
Für einen Kunden aus der Energiewirtschaft, der internet-fähige Geräte (IoT/Internet of Things) für Kunden unterschiedlicher Größenklassen (Industrieanlagen bis Einzelgeräte bei privaten Endkunden) herstellt, wurde ein Login Protokoll entwickelt und implementiert. Der Kunde hat das bestehende Authentifizierungsprotokoll seiner Geräte als Schwachstelle identifiziert und strebte einen Ersatz durch ein modernes, kryptographisch sicheres Verfahren an. Hierzu wurden Vorüberlegungen und Entwürfe einer Spezifikation durch den Kunden erstellt, zu deren weiteren Ausarbeitung und Umsetzung ich beauftragt wurde. Da eine große Bandbreite der Produkte des Kunden betroffen waren, involvierte dieses Projekt fast alle Abteilungen des gesamten Großunternehmens, einschließlich interner Entwicklungsabteilung, die Produktion, den Vertrieb, die interne Verwaltung und den Service. Eine Abstimmung und Anforderungsanalyse mit den jeweiligen Abteilungen wurde in enger Zusammenarbeit und unter Leitung des Kunden durchgeführt, parallel dazu wurde eine C++ Library für die Hauptproduktlinie als Pilotprojekt entwickelt. Die Entwicklung wurde aufgrund der komplexen und dynamischen Anforderungssituation durchgehend agil durchgeführt und die Library in das bestehende Gesamtsystem integriert. Es wurden zudem mehrere Client Implementierungen in verschiedenen Sprachen und Umgebungen (C/C++ auf Linux und Windows, JavaScript für Browser, Python Scripte und Kommandozeile für verschiedene Tools) umgesetzt, die die entwickelte Library im Hauptprodukt als Gegenstelle ansteuern und in die von Endkunden verwendete Software integriert werden. Es wurden verschiedene Fallback Varianten, einschließlich eines Hash basierten One-Time-Passworts (HOTP) entwickelt, weiterhin wurde die Funktionalität mit Unit Tests und Integration Tests in der bestehenden CI abgesichert.

C C++ googletest REST OAuth2 curl OpenSSL JavaScript Kryptographie Diffie-Hellman PAKE HOTP IoT
4 Monate
2020-05 - 2020-08

Weiterentwicklung einer iOS und Android App zur Heimautomatisierung

Software-Entwickler Swift/Objective-C Kotlin Java ...
Software-Entwickler
Für einen App zur Heimautomatisierung/Internet of Things Bereich wurden für iOS und Android verschiedene Weiterentwicklungen vorgenommen. Es wurde eine nativen Karte mit den jeweiligen nativen APIs (Apple Maps sowie Google Maps) umgesetzt und in die bestehenden Apps integriert.
Weiterhin wurde für eine neue Klasse von unterstützten Endgeräten eine neue Cloud Anbindung vorgenommen, deren Schnittstelle im Zuge des Projektes in Abstimmung mit dem externen Cloud-Plattform Entwickler definiert wurde.

Swift/Objective-C Kotlin Java iOS Android Maps REST Qt C/C++
5 Monate
2019-11 - 2020-03

Entwicklung eines Software Development Kits zur Kommunikation mit embedded Geräten

Software-Entwickler C Bluetooth LE C++ ...
Software-Entwickler

Für einen Kunden aus der Automobilindustrie wurde ein Software Development Kit (SDK) für eine End-to-End Kommunikation zwischen einem Hardware Endgerät und einem Mobilgerät entwickelt. Das Kommunikationprotokoll sowie die Implementierung für Mobilgeräte waren bereits verfügbar und produktiv. Die zuvor existierende Anwendung für das Hardware Endgerät sollte vollständig neu entwickelt und in ein SDK überführt werden, mit dem Ziel dieses auf verschiedenen Embedded Endgeräten, insbesondere verschiedenen Microcontrollern zur Verfügung zu stellen.

Die Entwicklung erfolgte vollständig in C mit dem Ziel möglichst geringe Speicher Anforderungen, sowohl an RAM als auch an Programmspeicher/Flash, zu stellen. Weiterhin wurden sämtliche Hardware-, Betriebssystem- und sonstige Software-Anforderungen (einschließlich Speicherallokationen und Crypto Funktionen) in einen (Hardware-)Abstraktionslayer überführt, so dass diese je nach Möglichkeiten der Zielplattformen implementiert werden können.

Es wurde eine Beispielimplementierung auf einem Microcontroller vorgenommen, die die Funktionalität vollständig zur Verfügung stellt und sämtliche Anforderungen des SDKs, insbesondere in Bezug auf Speicher, demonstriert. Die Kommunikation mit dem Mobilgerät erfolgt hier über Bluetooth LE, von der verwendeten Kommunikationstechnik abstrahiert.

Alle Kernfunktionalitäten wurden durch Unit Tests abgedeckt.

Code Composer Studio
C Bluetooth LE C++ googletest TI-RTOS
3 Monate
2019-08 - 2019-10

Python-Bindings zur Anbindung einer C++ Library an Python

Software-Entwickler
Software-Entwickler

Für ein produktiv eingesetztes internes Test Framework eines umfangreichen Systems mit Client/Server Architektur sollte die zugrundeliegende Client Bibliothek sowie das zugehörige Datenmodell ersetzt werden. Hierzu sollte eine bereits in C++/Qt geschriebene Kommunikations-Library eingesetzt werden.

Das existierende, Python basierte, Test Framework wurde vollständig durch ein neues Framework ersetzt, welches die C++/Qt Library in den Python Tests verfügbar macht. Dabei wurde die Funktionalität des alten Frameworks vollständig nachgebildet, so dass nur minimale Änderungen an den existierenden Tests (mehrere tausend) notwendig wurden.

Hierzu wurden Python Bindings für die C++ Library auf Basis von Shiboken/PySide entwickelt, sowie eine Python basiertes Test Framework, das die erforderliche API darstellt und die Bindings für die Tests verfügbar macht.

Python C++ Qt Shiboken2 PySide2 PyCharm
4 Monate
2019-04 - 2019-07

Weiterentwicklung von Android App zur Heimautomatisierung

Software-Entwickler
Software-Entwickler

Für eine bestehende, produktive Android App im Bereich Heimautomatisierung / Internet of Things wurden Wartungsarbeiten und Bugfixing durchgeführt. Die Wartungsarbeiten umfassten insbesondere Anpassungen an Verhaltensänderungen von Android Versionen 8 und 9, insbesondere in Bezug auf Hintergrunddienste. Das zur Verfügung gestellte Android Appwidget wurde so umgeschrieben, dass der bisher verwendete Service nun ein Vordergrunddienst ist, da sonst das Widget auf diesen Android Versionen nicht länger verfügbar gewesen wäre.

Weiterhin wurden für ein Release auf dem chinesischen Markt, alle Google Dienste (einschließlich Push-Notifications) durch eine alternative Library, die auf dem dortigen Markt funktionsfähig ist, ersetzt. Hierzu wurde die chinesische Library in die App bzw. eine separate Version der App integriert. Da die Dokumentation aller technischen Schnittstellen ausschließlich in chinesisch vorlag, erfolgte die Implementierung in Zusammenarbeit mit den dortigen Kollegen.

C/C++ Android Java Android Studio
1 Jahr 2 Monate
2018-04 - 2019-05

Entwicklung Mitarbeiterapp

Software-Entwickler Scrum REST
Software-Entwickler

Für einen Kunden aus der Automobilindustrie wurde eine interne Mitarbeiterapp neu entwickelt. Die Android und iOS Versionen wurde separat entwickelt, jeweils nativ mit Java bzw. Swift, mein Aufgabenbereich war zunächst die Android App.

Wesentliche Funktionsmerkmale waren ein sicherer Login in das interne Firmennetz, Zeitverwaltung, Abruf interner Dokumente, Bereitstellung interner Unternehmensinformationen und die Integration einer von einem separaten Team entwickelten umfangreichen Webapp zur Arbeitszeitverwaltung. Weiterhin waren ein Einrichtungswizard und ein Demo-Modus Bestandteile.

Zusätzlich wurde ein vollständiger Mock-Server zur Fehlerfindung entwickelt, der Testdaten bereitstellen konnte und ohne das gesicherte Unternehmensnetz (das selbst für Entwickler nur eingeschränkt verfügbar war) funktionierte.

Die Entwicklung fand in einem Team mit mehreren Entwicklern mit SCRUM statt. Ich wurde in dem Projekt als Android Experte hinzugezogen, da bisher in diesem Feld noch wenig Expertisen vorhanden waren. Dementsprechend waren meine Aufgabenbereiche neben verschiedener Features die Weiterentwicklung des allgemeinen Frameworks und Qualitätssicherung.

Ab ungefähr 2019 habe ich aufgrund der internen Prioritätensetzung das parallel arbeitende iOS Team verstärkt. Hier war mein Aufgabenbereich insbesondere die Erweiterung und Neuentwicklung von automatisierten Tests sowie die Entwicklung einer Lösung für Dokumentenscan und -übermittlung nach Design und API Vorgaben.

Android Java Android Studio git Swift iOS Xcode Python
Scrum REST
1 Monat
2019-03 - 2019-03

Weiterentwicklung von Android App zur Heimautomatisierung

Software-Entwickler
Software-Entwickler

Wartungsarbeiten an einer bestehenden produktiven App für Android. Die Apps fungieren als mobile Benutzerschnittstelle zum eigentlichen Produkt und sind im Bereich Heimautomatisierung anzusiedeln. Aufgrund von neueren Android Versionen waren Anpassungen für die TLS Kommunikation mit dem externen Gerät (internet of Things) notwendig geworden. In diesem Zuge wurden ebenfalls Anpassungen an neue Android Versionen vorgenommen, insbesondere um die Vorgaben von Google Play zu erfüllen.

Java Android Studio Android
5 Monate
2017-11 - 2018-03

Entwicklung von iOS- und Android-App zur Steuerung von Bluetooth LE Geräten

Entwickler, Software-Architekt, Technischer Projektleiter C/C++ Android Java ...
Entwickler, Software-Architekt, Technischer Projektleiter

Es wurde eine App für die Konfiguration sowie Steuerung einer Bluetooth LE basierten Gerätereihe aus dem Bereich Elektroinstallationstechnik sowie Internet of Things erstellt. Die Designvorlagen wurden vollständig vom Kunden zur Verfügung gestellt.

Die App wurde bereits von einem anderen Team entwickelt, lag zu (unserem) Projektbeginn jedoch trotz bereits weit verstrichener Deadline in einer nicht funktionsfähigen Fassung vor. Nach Abstimmung mit dem Kunden sowie nach einem Review der bereits vorliegenden App wurde entschieden die App vollständig neu zu entwickeln, da dies schneller war als den vorliegenden Stand zu reparieren. Die JavaScript basierte Web-App bzw. der WebContainer wurde durch eine native App ersetzt, deren Business Logik weitgehend in C++ geschrieben ist und lediglich Plattform-spezifische Komponenten (insbesondere die Bluetooth LE Kommunikation) jeweils separat in Java sowie Swift/Objective-C.

Eine frühe Prototyp App, welche die Grundfunktionalität und insbesondere die Bluetooth LE Kommunikation bereitstellt wurden auf Wunsch des Kunden innerhalb von 2 Monaten fertig gestellt, so dass der Kunde die internen Tests der Bluetooth Stabilität (inklusive der ebenfalls implementieren Firmware Updates über SUOTA) starten und die sich ebenfalls noch in Entwicklung befindliche Hardware finalisieren konnte. Insbesondere auf die Stabilität der Verbindung in der Android App wurde Wert gelegt, da der Kunde hier schlechte Erfahrungen gemacht hat.

Die Apps wurden in 3-4 Monaten vollständig und entsprechend den separat erstellten Designvorlagen des Kunden zur ausdrücklichen Zufriedenheit fertiggestellt.

Das Entwicklungsteam bestand aus 4 Mobilentwicklern, inklusiver mich selber. Neben meiner Entwicklungstätigkeit habe ich ebenfalls die technische Projektleitung des Entwicklungsteams und die Projektabstimmung mit dem Kunden übernommen.

Android Studio Xcode
C/C++ Android Java JNI/NDK iOS Objective-C Swift Bluetooth LE git SUOTA REST
Dortmund
1 Monat
2017-10 - 2017-10

Unterstützung von Geofencing in einer Android App

Entwickler, Software-Architekt C/C++ Java JNI/NDK ...
Entwickler, Software-Architekt

Für eine bestehende Android App im Bereich Heimautomatisierung / Internet of Things wurde Geofencing Unterstützung implementiert. Die Android App meldet an den von einer Fremdfirma bereitgestellten Server das Betreten sowie das Verlassen des Anwenders aus bestimmten Bereichen (etwa "zu Hause", "im Büro", etc.) und führt ggf. Aktionen durch, die vom Server definiert wurden. Die Geofences werden dabei mit dem Server bzw. mit verschiedenen Geräten synchronisiert.

Android Studio Xcode
C/C++ Java JNI/NDK Android Geofencing
Dortmund
6 Monate
2017-04 - 2017-09

Entwurf und Umsetzung von Low-Level OS und Hardware Testframework

Entwickler, Software-Architekt, Technischer Projektleiter Linux Python PyTest ...
Entwickler, Software-Architekt, Technischer Projektleiter

Für eine Linux basiertes Hardware Gerät wurde ein Testframework entwickelt, das die Funktionalität des Betriebssystems, der Treiber und der Firmware insgesamt bei Hardware- sowie Software Updates (etwa neue Treiber Versionen) sicherstellt. Das Python/PyTest basierte Test Framework läuft hierbei auf einem Desktop PC und kontrolliert das zu testende Gerät mittels spezieller Zusatzhardware, etwa einem Labornetzteil (um das zu testende System zu starten sowie die Spannung gezielt zu stören) und I/O Anschlüssen zum Abfragen von Sensorwerten.

Für die Ansteuerung der Spezialhardware wurden teilweise einfache Treiber bzw. Tools entwickelt und um die Sensordaten in geeigneter Form zur Nachverarbeitung zur Verfügung zu stellen.

Für die darüberhinausgehenden Tests auf OS-Ebene (etwa CPU Last, I/O Geschwindigkeit, Netzwerkfunktionalität, etc.) stellt das Testframework ssh Verbindungen zu dem zu testenden Gerät her.

Für die einfachen Einsatz durch die Tester und zur besseren Überwachung der Testergebnisse insbesondere bei Langzeittests wurde eine HTML/PHP/JavaScript basiertes Web Frontend entwickelt.

Linux Python PyTest SSH JavaScript PHP KNX
Dortmund
1 Monat
2017-03 - 2017-03

Design und Implementierung einer REST und Websocket API

Entwickler, Software-Architekt C/C++ Go Python ...
Entwickler, Software-Architekt

Für ein bestehendes Heimautomatisierungssystem / Internet of Things wurde eine REST API sowie parallel eine Websocket basierte API für die Nutzung durch externe Firmen und Tools (etwa zur Anbindung von Sprachsteuerungssystemen wie Amazon Alexa) entwickelt. Hierzu wurden die jeweiligen Protokolle von Grund auf spezifiziert und in einem Server Backend implementiert. Das Projekt war als Demo sowie Proof-of-Concept gedacht und wurde nach erfolgreicher Durchführung zwecks produktivem Einsatz an einen weiteren Dienstleister übergeben.

Die Implementierung erfolgte zunächst auf Basis von Python, aufgrund diverser Einschränkungen ist es jedoch frühzeitig auf Go umgestellt worden, was die Effizienz der Umsetzung deutlich erhöht hat.

Das Protokoll sowie das Backend befindet sich derzeit im produktiven Einsatz.

C/C++ Go Python REST Websockets JSON-RPC Linux
Dortmund
10 Monate
2016-06 - 2017-03

Integration einer iOS und Android App zur Heimautomatisierung in eine Cloud Lösung

Entwickler Java Objective-C iOS ...
Entwickler

Integration einer produktiv eingesetzte App zur Heimautomatisierung in eine Cloud Lösung des Kunden. Das Cloud Backend wurde von einer Drittfirma bereitgestellt, die Apps müssen mit diesem kommunizieren. Dabei sollen die Apps weiterhin die lokale, d.h. über W-LAN verfügbare Funktionalität bevorzugen, sofern das Mobilgerät in dem lokalen Netz ist, andernfalls soll die Cloud Variante gewählt werden. Die Kommunikation der Cloud Variante erfolgt ausschließlich über SSL gesicherte Verbindungen.

Android Studio Xcode
Java Objective-C iOS Android
Dortmund
1 Jahr 3 Monate
2016-01 - 2017-03

Weiterentwicklung von iOS und Android App zur Heimautomatisierung

Entwickler Objective-C Java iOS ...
Entwickler

Wartung und Weiterentwicklung von verschiedenen bestehenden und produktiven Apps für iOS Android. Die Apps fungieren als mobile Benutzerschnittstelle zum eigentlichen Produkt und sind im Bereich Heimautomatisierung anzusiedeln.
Die Wartungsarbeiten und Weiterentwicklungen erfolgten je nach Bedarf über einen weiten Zeitraum verteilt.

Android Studio Xcode
Objective-C Java iOS Android Apple Maps
Dortmund
4 Monate
2016-10 - 2017-01

Entwicklung von Android/iOS Widgets

Entwickler, Software-Architekt C/C++ Java JNI/NDK ...
Entwickler, Software-Architekt

Für eine bestehende App wurden Android AppWidgets sowie iOS today Widgets entwickelt. Aufgrund von Einschränkungen der jeweiligen Plattformen, wurden die GUIs der jeweiligen Widgets neu entwickelt und nach Design Vorgaben des Kunden umgesetzt. Die Widgets stellen weitgehende Funktionalität der zuvor existierenden App als Hintergrund Service zur Verfügung, hierfür wurde eine gemeinsame Code Basis entwickelt. Die Apps sind im Bereich Heimautomatisierung anzusiedeln und ermöglichen die Steuerung und Status Anzeige von Geräten über ein proprietäres Protokoll des Kunden. Die Widgets sind inzwischen in den Stores verfügbar und wurden von den Endkunden sehr gut aufgenommen.

Android Studio XCode
C/C++ Java JNI/NDK Objective-C Android iOS AppWidgets today widgets Git
Dortmund
2 Monate
2016-09 - 2016-10

Entwicklung Android App zur Bereitstellung von Mediendaten und Lokalisierung im Raum

Entwickler Java Android Bluetooth LE ...
Entwickler

Entwicklung eine Android App zur Präsentation auf einer Messe. Die App stellt anhand der aktuellen Position des Anwenders in einem Raum vorgegebene Bilder und Videos dar. Die Lokalisierung im Raum erfolgt mittels Entfernung zu Beacon Geräte, die über Bluetooth gefunden werden. Der Anwender kann am Messestand mit weiteren externen Geräten agieren und so die dargestellten Inhalte in der App beeinflussen.

Android Studio
Java Android Bluetooth LE iBeacon
Dortmund
1 Monat
2016-09 - 2016-09

Erweiterung von iOS App zur Bluetooth Kommunikation mit proprietärer Hardware

Entwickler iOS Bluetooth LE
Entwickler

Erweiterung einer iOS App zur Kommunikation mit der Hersteller-eigenen Hardware. Die produktive App kommuniziert über Bluetooth mit dem Gerät, es wurde Unterstützung für neue Funktionalität des Geräts in die App eingebaut, sowie das existierende Kommunikationsprotokoll aktualisiert.

Xcode
iOS Bluetooth LE
Dortmund
5 Monate
2016-05 - 2016-09

Review eines Crypto Konzeptes sowie Design und Implementierung eines Test Frameworks

Entwickler, Software-Architekt C/C++ Kryptographie SSL ...
Entwickler, Software-Architekt

Für eine bestehende und produktive Software Library auf Basis von C/C++ zur Ansteuerung von Internet-of-Things Geräten wurde das Crypto Konzept der Cloud Implementierung reviewed. Dieses Review umfasste zwei Phasen, zum einen das High-Level Pairing Konzept (Zertifikatserstellung, Login, Logout, Zertifikaterneuerung, etc.) und zum anderen das Verschlüsselungskonzept der Kommunikation. Im Zuge des Reviews wurde darüberhinaus ein Test Framework entwickelt das die Funktionsfähigkeit von Schlüsselfunktionalitäten, insbesondere bzgl. des Crypto Konzeptes, sicherstellt. Hierzu wurden die in Frage kommenden Fehlerfälle (etwa Zertifikat abgelaufen) und ausgewählte wichtige Angriffsszenarien identifiziert und in einem dafür entwickelten Python und PyUnit basierten Toolkit realisiert.

C/C++ Kryptographie SSL Zertifikate Python PyUnit Unit-Tests Web Server XMPP Linux
Dortmund
2 Monate
2016-05 - 2016-06

Unterstützung für mehrere Sprachen in Desktop Applikation sowie Unterstützung für weiteres Dateiformat

Entwickler C/C++ Qt CMake ...
Entwickler

Anpassung einer produktiven Linux/Windows Desktop Applikation an Mehrsprachigkeit. Die Qt basierte Applikation lag komplett in Englisch vor und sollte unter Verwendung des Qt Lokalisierungs-Frameworks für mehrere Sprachen, insbesondere aus dem asiatischen Raum vorbereitet werden.

Nach erfolgreicher Durchführung wurde unabhängig davon die Unterstützung eines weiteren branchenspezifischen Dateiformats implementiert.

C/C++ Qt CMake Git Linux Windows
Dortmund
5 Monate
2016-02 - 2016-06

Entwicklung einer VNC/RFB Library

Entwickler, Software-Architekt C/C++ Java JNI/NDK ...
Entwickler, Software-Architekt

Entwicklung einer C/C++ Library für Implementierung von Fernwartungs-Applikationen auf Basis des RFB/VNC Protokolls. Die Library wurde von Grund auf für spezifische Anforderungen und insbesondere mit Unterstützung für Mobile Geräte entwickelt, da bereits verfügbare Lösungen die Anforderungen nicht erfüllen konnte. Es wurden mehrere gängige VNC Erweiterungen implementiert und Anbindungen an Android, iOS und Windows 10 sowie Windows 10 Mobile entwickelt. Besonderes Augenmerk wurde auf einfache Benutzbarkeit und Performanz gelegt, da der Einsatz auf Mobilen Geräten möglich sein sollte.

Android Studio Xcode
C/C++ Java JNI/NDK Objective-C VNC/RFB iOS Android Windows 10 Linux
Dortmund
3 Monate
2016-01 - 2016-03

Entwicklung einer Fernwartungssoftware auf Basis von RFB/VNC

Entwickler, Software-Architekt C/C++ Java JNI/NDK ...
Entwickler, Software-Architekt

Der Kunde produziert und betreibt Industrieanlagen, deren aktueller Systemzustand von Smartphone und Tablet Geräten überwacht und ggf. gewartet werden soll. Die Wartung bzw. Fernsteuerung erfolgt mit Hilfe des RFB (VNC) Protokolls. Die hierfür entwickelte App implementiert dieses Protokoll in einer C/C++ Library die von der App verwendet wird um Verbindungen zu mehreren Anlagen zu ermöglichen. Dabei war zu beachten, dass die Anlagen häufig nur über eine sehr langsame und instabile Internet Verbindunng verfügen, die Kommunikation muss daher entsprechend solide sein. Die App wurde darüberhinaus vollständig gebranded, da sie an Endkunden herausgegeben werden soll.

Android Studio
C/C++ Java JNI/NDK VNC/RFB Android
Dortmund
6 Monate
2015-07 - 2015-12

Aufbau von Server-Synchronisations Framework

Entwickler, Software-Architekt, System Administrator PostgreSQL Python SVN ...
Entwickler, Software-Architekt, System Administrator

Für eine bestehende Server Infrastruktur auf PostgreSQL Basis wurde ein spezialisiertes Synchronisations Framework entwickelt, welches die kritischen Daten des Kunden auf einen Backup Server überträgt, um im Ernstfall einen reibungslose Umstellung zu ermöglichen. Wegen verschiedener kritischer Randbedingungen waren normale Replikations Lösungen nicht ausreichend und konnten nicht eingesetzt werden, daher wurde eine spezialisierte Lösung auf Basis von Python entwickelt. Die Lösung synchronisiert dabei verschiedene Datenbank Tabellen unter Beachtung von interner Business Logik, sowie verschiedener Zusatz Daten, die nicht in der Datenbank gespeichert werden.

PostgreSQL Python SVN SSH Linux
Dortmund
1 Jahr 11 Monate
2014-02 - 2015-12

Entwicklung eines plattformübergreifenden Smartphone Spiels

Entwickler, Software-Architekt C/C++ Java C# ...
Entwickler, Software-Architekt

Entwicklung eines auf Smartphones (iOS/Android/WP8) ausgerichteten 3D (OpenGL bzw. Direct3D) Spiels.

Meine Tätigkeit in diesem Projekt umfassen neben plattformübergreifenden Tätigkeiten an der Engine insbesondere die Umsetzung der Android und Windows Phone 8 Varianten.

MSVC
C/C++ Java C# Direct3D OpenGL Android SVN Git PostgreSQL WP8
Dortmund
6 Monate
2015-06 - 2015-11

Weiterentwicklung von iOS und Android App zur Heimautomatisierung

Entwickler Objective-C Java iOS ...
Entwickler

Wartung, Aktualisierung und Weiterentwicklung einer bestehenden und produktiven App für iOS (iPhone und iPad) und Android (Phones und Tablets). Die App fungiert als mobile Benutzerschnittstelle zum eigentlichen Produkt und ist im Bereich Heimautomatisierung anzusiedeln. Es wurden verschiedene Änderungen am Laufzeitverhalten, an der Benutzeroberfläche sowie Fehlerbehebungen vorgenommen, die im Laufe der Zeit in den App Versionen aufgelaufen waren.

Xcode Eclipse Android Studio
Objective-C Java iOS Android
Dortmund
1 Monat
2015-09 - 2015-09

Weiterentwicklung Android App

Entwickler Java Android
Entwickler

Weiterentwicklung einer bestehenden Android App zur Geräteansteuerung mittels Bluetooth. Die Anpassung erfolgte analog zu einer vorangegangenen Anpassung für iOS.

Eclipse
Java Android
Dortmund
1 Monat
2015-08 - 2015-08

Weiterentwicklung iOS App

Entwickler Objective-C iOS
Entwickler

Weiterentwicklung einer bestehenden iOS App zur Geräteansteuerung mittels Bluetooth.

Die Funktionalität der App stand bereits zur Verfügung, es wurde lediglich eine komplett aktualisierte graphische Benutzerschnittstelle nach Vorgaben des Kunden entwickelt. Aufgrund eines bevorstehenden Messetermins wurde das gesamte Projekt innerhalb von drei Wochen vollständig umgesetzt.

Xcode
Objective-C iOS
Dortmund
2 Jahre 8 Monate
2013-01 - 2015-08

Weiterentwicklung einer Serverbasierten Streaming Lösung für medizinische Daten

Entwickler, Software-Architekt SQL/PostgreSQL Qt PACS ...
Entwickler, Software-Architekt

Weiterentwicklung einer Serverapplikation für die effiziente Verteilung medizinischer Bilddaten in Krankenhaus- und Praxis-Umgebungen. Hierbei muss die Software die für Befundungen und teils Behandlungen erforderliche Daten aus unterschiedlichen Quellen an die jeweiligen Abteilungen weiterleiten. Die teils erheblichen Datenmengen (oft mehrere Terabyte/Tag) werden mittels eigens entwickelter Streaming Technologie und mit Proxy-Unterstützung übertragen.

Das Projekt wurde von mir aus einem bereits fortgeschrittenen, aber komplett nicht funktionsfähigen Zustand übernommen und zur Einsatzfähigkeit gebracht. Weiterhin wurden Teile der Kernfunktionalität von Grund auf neu entwickelt.

SQL/PostgreSQL Qt PACS SVN Unit Tests / Integration Tests Multithreading Performance Optimization Boost Linux trac
Dortmund
3 Monate
2014-10 - 2014-12

Portierung einer iOS Magazin-App nach Android

Entwickler Java Android Git ...
Entwickler

Portierung einer bereits veröffentlichten Magazin-App von iOS nach Android. Die Magazine können direkt mit in-App Purchases aus der App gekauft und gelesen werden.

Technisch werden die einzelnen Magazine durch Zip Archive mit HTML Inhalten umgesetzt, d.h. mittels WebView/WebKit. Ebenfalls wird ein Web-Login für plattformübergreifende Synchronisierung bereitgestellt.

Eclipse
Java Android Git PHP PostgreSQL WebKit
Dortmund
3 Monate
2014-07 - 2014-09

Softwarekomponente zur Ansteuerung eines externen Geräts

Entwickler C/C++ Qt JSON ...
Entwickler

Entwicklung einer Qt basierten Softwarekomponente eines Embedded Devices zur Ansteuerung und Kontrolle eines externen Geräts. Die Komponente ist Teil eines zu weiten Teilen bereits beim Kunden bestehenden größeren Embedded Devices und musste dort entsprechend integriert werden.

Das externe Gerät wird über eine (vom Hersteller vorgegebene) Web/JSON Schnittstelle gesteuert und kontrolliert. Die entwickelte Komponente sollte insbesondere die verwendeten Ein-/Ausgabe Parameter des externen Geräts in die (sofern möglich) jeweiligen Repräsentationen des Embedded Devices umgerechnet werden.

C/C++ Qt JSON Git Linux
Dortmund
8 Monate
2013-12 - 2014-07

Projekt in IT-Sicherheit

Entwickler
Entwickler

Softwareentwicklung einer sicherheitsrelevanten Softwarekomponente für Drittfirma.

München, Dortmund
4 Jahre 4 Monate
2009-10 - 2014-01

Weiterentwicklung, Wartung und Support von Flaggschiffprodukt eines Softwareherstellers in der Medizinbranche

Entwickler, Software-Architekt C++ Qt SQL/PostgreSQL ...
Entwickler, Software-Architekt

Weiterentwicklung, Wartung und Support des Flaggschiffproduktes eines Softwareherstellers in der Medizintechnik. Die Software ist ein Befundungssystem für radiologische Bilddaten („Picture Archiving and Communication System“, „PACS“) und wird insbesondere von Radiologen verwendet. Als Flaggschiffprodukt des Unternehmens verfügt die Software über viele Teilaspekte die im Laufe dieses Projektes bearbeitet und/oder entwickelt wurden, einschließlich:

  • Benutzerfreundliche Oberfläche, da ärztliches Personal Zielgruppe ist
  • Anspruchsvolle Real-Time Netzwerk Unterstützung (Streaming)
  • 3D Visualisierung
  • Synchronisierung verschiedener Anzeigen sowie verschiedener Bilddaten mittels jeweils geeigneter Algorithmen
  • Vielfältige Datenbank Unterstützung, sowohl zentralisiert als auch dezentralisiert
  • Umfangreiche Unit-/Integration Tests, u.a. zur Erfüllung gesetzlicher Anforderungen sowie zur Umsetzung von QM Anforderungen
  • Usw.
C++ Qt SQL/PostgreSQL PACS SVN Unit Tests / Integration Tests Python Multithreading Performance Optimization pthread Boost trac Linux
Dortmund
5 Monate
2013-08 - 2013-12

Entwicklung von Artikel-/Magazin-App für Smartphones

Entwickler, Software-Architekt C/C++ Java JNI ...
Entwickler, Software-Architekt

Entwicklung einer Artikel- bzw. Magazin-App für iOS und Android, die Android Umsetzung war meine Verantwortung.
Die App ist die digitale „Auferstehung“ eines Print Magazins und stellt verschiedene (Text-)Artikel als In-App Purchases zur Verfügung. Die gekauften Artikel können auf allen unterstützten Plattformen (einschließlich einer Web-Variante) betrachtet und bewertet werden.
Die Entwicklung erfolgte in Kooperation mit dem Verlag, wobei wir die technische Umsetzung vollständig übernommen haben. Neben der eigentlichen App wurde auch eine Server- sowie Datenbankanbindung entwickelt und bereitgestellt. Die App ist im Android und iOS Store verfügbar und ist derzeit mit 4,5 Sternen bewertet.

Eclipse
C/C++ Java JNI Android Git swig PHP PostgreSQL CMake Qt GCM Linux
Dortmund
7 Monate
2013-02 - 2013-08

Portierung eines erfolgreichen iOS/Android Spiels auf Windows Phone 8

Projektleiter, Entwickler C/C++ C# Direct3D ...
Projektleiter, Entwickler

Umsetzung einer erfolgreichen iOS Spiele-App (Download Millionär) auf Windows Phone 8. Das Projekt umfasste den vollständigen Produkt-Workflow, angefangen bei der Machbarkeits- und Anforderungsanalyse, über die Entwicklungsplanung und der eigentlichen Software-Entwicklung, bis hin zur erfolgreichen Einstellung des fertigen Produkts in den Store.

MSVC
C/C++ C# Direct3D OpenGL SVN
Dortmund
1 Jahr
2011-12 - 2012-11

Entwicklung eines Softwaremoduls zur Bilddatenberechnung entlang von Bezier Kurven

Entwickler C++ Qt PACS ...
Entwickler

Entwicklung eines Softwaremoduls das aus Freihand Zeichnungen geglättete Bezier Kurven erstellt und entlang dieser Kurven neue Daten aus existierenden radiologischen Bilddaten erstellt. Die so erstellten Bilddaten können zur Befundung genutzt werden.

Das Projekt umfasst sowohl die theoretische Seite (Sichtung des Forschungsstandes, Anpassung der Formeln an gegebene Anforderungen, etc.), die Umsetzung in Software als auch die Erstellung der zugehörigen graphischen Benutzeroberfläche.

Ebenfalls enthalten ist eine Echtzeit Visualisierung der Ergebnisse für den Anwender.

C++ Qt PACS SVN Unit Tests / Integration Tests Multithreading Performance Optimization Linux
Dortmund
4 Monate
2012-04 - 2012-07

Erstellung einer Software Lösung für Langzeit-Archivierung auf Basis von Tivoli Storage Manager (IBM)

Entwickler, Systemadministrator bash PACS Linux
Entwickler, Systemadministrator

Planung, Konfiguration und Entwicklung einer Backup und Archivierung Lösung im medizinischen Umfeld mit gesetzlichen Vorschriften zur Langzeit Archivierung (30+ Jahre). Teilweise erfolgte Planungen eines vergleichbaren Projekts wurden übernommen und ausgebaut.

Die Archivierung erfolgte auf Tapes mit bereits vorhandener Hardware (insbesondere Tape Library), auf Basis von IBM Tivoli Storage Manager (TSM) 6.3.

Aufgrund der gesetzlichen Anforderungen zur Archivierung sowie des unternehmenskritischen Characters der zu sichernden Daten wurde besonderes Augenmerk auf die Ausfallsicherheit des automatischen Backup Systems gelegt, einschließlich redundanter off-site Backups.

Tivoli Store Manager (TSM) 6.3 TSM 6.1
bash PACS Linux
Dortmund
3 Monate
2012-01 - 2012-03

Konzeption, Einrichtung und Wartung einer Netzwerk- und System-Monitoring Infrastruktur

Entwickler, Software-Architekt, Projektleiter, Systemadmin Python sqlite bash ...
Entwickler, Software-Architekt, Projektleiter, Systemadmin

Netzwerk- und System-Monitoring einer verteilten Rechnerumgebung, bestehend aus über 100 Rechnern an verschiedenen Standorten (überwiegend Krankenhäuser). Das Projekt umfasst die gesamte Spannbreite, von Bestands- und Bedarfsanalyse über Wahl der zu verwendenden Software bis hin zur Einrichtung und Wartung. Es wurde Nagios (später teilweise Icinga) in einer verteilten Installation und Konfiguration verwendet. Aus Netzwerktechnischen Gründen wurde zusätzlich ein eigenes Kommunikationsframework entwickelt um Einschränkungen (insbesondere Routing und Firewall) einiger Kunden transparent zu berücksichtigen.

Das fertige System ist produktiv im Einsatz und stellt die durchgängige Funktionsfähigkeit von unternehmenskritischer Software, sowie von essentieller Hard- und Software des radiologischen Personals der betroffenen Krankenhäuser sicher. Insgesamt hat es den Support Aufwand erheblich verringert und ist auf entsprechend positives Echo gestoßen.

Nagios Icinga
Python sqlite bash Linux NRPE
Dortmund
4 Monate
2010-12 - 2011-03

Konzeption und Entwicklung einer Multithreading Bibliothek

Projektleiter, Entwickler, Software-Architekt C++ Qt SVN ...
Projektleiter, Entwickler, Software-Architekt

Planung (einschließlich Bedarfsanalyse) und Entwicklung einer Multithreading Bibliothek auf Basis des Threadpool Patterns. Die Bibliothek ist plattformunabhängig ausgerichtet und in C++ entwickelt. Für Qt Anwendungen werden spezialisierte Klassen zur vereinfachten Benutzung bereitgestellt.

Die Bibliothek ist auf einfache Benutzbarkeit bei möglichst niedrigem Performance Overhead ausgelegt und wurde verwendet um die Multithreading Unterstützung in mehreren kleineren Projekten zu ersetzen und zu verbessern.

C++ Qt SVN Unit Tests / Integration Tests Multithreading Performance Optimization Linux
Dortmund
7 Monate
2010-01 - 2010-07

Semi-Automatische Lymphknoten Segmentierung

Entwickler, Software-Architekt C++ Qt PACS ...
Entwickler, Software-Architekt

Entwicklung eines Software Moduls für bestehendes PACS System zur semi-automatischen Lymphknoten Segmentierung in dreidimensionalen radiologischen Bilddaten.

Das Modul enthält Unterstützung für mehrere, in beliebigen Zeitabständen erfolgte Untersuchungen und stellt einen webkit/HTML-basierten Viewer und Editor zur Befunderstellung durch den Radiologen bereit.

Die Entwicklung wurde in Kooperation mit einer externen Firma durchgeführt.

C++ Qt PACS SQL/PostgreSQL WebKit SVN Multithreading Linux
Dortmund
4 Jahre
2006-01 - 2009-12

Netzwerkadministration in einem studentischen Wohnkomplex

Systemadministrator, Supporter Samba leafnode postfix ...
Systemadministrator, Supporter

Administration der internen Netzwerk Infrastruktur einer Wohnanlage mit ca. 300 Appartements. Hierzu zählten

  • Server-Administration (Mail Server, interne Web- und Usenet Foren, Website, etc.),
  • Anwender Support bei Internet Problem und
  • Unterstützung der Wohnverwaltung, etwa durch Bereitstellung von Mailing Listen.
Wireshark
Samba leafnode postfix mailman Apache PHP bash Perl iptables Tcpdump phpbb Linux Windows
Dortmund
1 Jahr 2 Monate
2008-05 - 2009-06

Softwaresystem zur Analyse und Generierung genetischer Daten in der medizinischen Grundlagenforschung

Software-Architekt, Entwickler, Technischer Projektleiter C++ Qt Unit Tests / Integration Tests ...
Software-Architekt, Entwickler, Technischer Projektleiter

Konzeption und Entwicklung eines Softwaresystems zur Generierung von Modellen und Modelldatensätzen sowie zur Datenanalyse in der medizinischen Grundlagenforschung.

Die Software wurde für genetische Daten entwickelt und war demnach ausgerichtet auf große Daten mit teils mehreren Gigabyte.

Das Projekt umfasste den gesamten Entwicklungsprozess von der Anforderungsanalyse mit medizinischem Fachpersonal, über Einordnung und Sichtung des aktuellen Forschungsstandes mit folgender Verfahrensauswahl bis hin zur konkreten Realisierung.

C++ Qt Unit Tests / Integration Tests Multithreading Linux Windows
Dortmund
1 Jahr
2007-04 - 2008-03

Planung und Entwicklung einer Kollisionsdetektionsbibliothek

Software-Architekt, Entwickler C++ ODE OGRE ...
Software-Architekt, Entwickler

Entwicklung einer Kollisionsdetektionsbibliothek sowohl für feste, als auch für deformierbare Körper (etwa Kleidung).

Die Bibliothek ist auf moderne Multi-Core/Multi-Prozessor Architekturen ausgelegt, kann aber auch in single-Core Systemen sinnvoll verwendet werden. Für verschiedene Anwendungszwecke wurden verschiedene Kollisions Algorithmen implementiert, insbesondere für deformierbare Körper.

Die Bibliothek kann problemlos auch mit vielen Objekten gleichzeitig umgehen, mehrere Beispielanwendungen wurden zu Demonstrationszwecken realisiert.

Die Software wurde ausgiebig auf Performance optimiert um insbesondere auch für zeitkritische Anforderungen geeignet zu sein.

Diverse Unit Tests/Integration Tests wurden implementiert um die Korrektheit der berechneten Ergebnisse zu garantieren.

C++ ODE OGRE CEGUI OpenGL CppUnit CMake lib3ds UML Multithreading Unit Tests / Integration Tests Linux Windows
Dortmund
5 Jahre 11 Monate
2001-01 - 2006-11

Entwicklung von 3D-Echtzeit Strategiespiel

Projektleiter, Entwickler, Software-Architekt C++ Qt3 Qt4 ...
Projektleiter, Entwickler, Software-Architekt
  • Weiterentwicklung des Prototyps eines 2D-Echtzeit Strategiespiels (Real Time Strategy Game, RTS), insbesondere Entwicklung von Mehrspieler Fähigkeit (TCP/IP).
  • Planung und Entwicklung einer modernen 3D Umsetzung auf Basis von OpenGL.
  • Planung und Entwicklung eines Frameworks für KI, einschließlich einer eigens entwickelten Script-Engine unter Verwendung von Python.

Die Game-Engine unterstützt bis zu 10 Spieler, die jeweils über Netzwerk/Internet oder als Computer Spieler (während des Spiels austauschbar) realisiert sein können. Das Spiel verwendet eine peer-to-peer Netzwerkarchitektur und stellt Event-basierte Szenarien bereit.

  • Ebenfalls geplant und entwickelt wurden zugehörige Tools zur Unterstützung des Model Designs sowie ein Level Editor.
  • Die Arbeit anderer Teammitglieder, etwa Sound-Artists, Graphik-Artists sowie Pathfinding- und Graphik-Entwickler wurde unterstützt und koordiniert.
C++ Qt3 Qt4 OpenGL lib3ds Python Perl libufo automake/autoconf CMake SVN PHP Linux
Dortmund
5 Monate
2006-01 - 2006-05

Performance Optimierung in Visualisierungs Anwendung

Entwickler Java Swing Linux ...
Entwickler

Verbesserung der Laufzeit einer Prozess-Visualisierungs Anwendung. Bei umfangreichen Datenmengen wurde die Anwendung aufgrund der existierenden Implementierung inakzeptabel langsam.

Die Optimierung hat die Laufzeit wichtiger Funktionen von einigen Minuten bis Stunden auf teils unter eine Sekunde gedrückt.

Java Swing Linux Windows
Dortmund
10 Monate
2005-01 - 2005-10

Buch zum Thema ?Open Source Game Development?

Koautor C++ Qt OpenGL ...
Koautor

Koautor von [Name auf Anfrage].

Das Buch ist eine Einführung in das Thema „Destop Games“ (d.h. „kleine“ Spiele heute wird der Begriff „Casual Games“ verwendet) mit Hilfe von Qt.

Word OpenOffice Latex
C++ Qt OpenGL Latex SVN
Dortmund
4 Jahre
2001-01 - 2004-12

Systemadministration in einer karitativen Jugendeinrichtung

Systemadministrator, Supporter
Systemadministrator, Supporter

Technische Betreuung (Einrichtung und Wartung) des Internet Cafes in einer karitativen Jugendeinrichtung.

Krefeld
3 Jahre 9 Monate
2001-01 - 2004-09

Netzwerk-Bibliothek für Multiplayer KDE Spiele

Entwickler, Software-Architekt C++ Qt KDE ...
Entwickler, Software-Architekt

Entwicklung einer Netzwerkbibliothek für Multiplayer Spiele im KDE Umfeld, basierend auf wahlweise Dedicated-Server oder Peer-to-Peer Architektur. Die Bibliothek wird sowohl Server- als auch Client-seitig von einigen KDE Spielen eingesetzt. Ebenfalls enthalten ist eine multi-Prozess basierte Unterstützung für KI Spieler.

C++ Qt KDE Linux CVS
Krefeld
1 Monat
2004-03 - 2004-03

Spieleentwicklung

Entwickler, Software-Architekt Java Swing UML ...
Entwickler, Software-Architekt

Planung und Entwicklung einer Umsetzung des bekannten „Halma“ Gesellschaftsspiels, mit Computerspieler (3 Schwierigkeitsstufen) Unterstützung. Das fertige Spiel hat in einem Wettbewerb mehrerer Konkurrierender Gruppen den 1. Platz belegt.

Netbeans Borland Together 6.1
Java Swing UML Unit Tests / Integration Tests Linux
Dortmund
1 Monat
2004-02 - 2004-02

Entwicklung von Verwaltungssoftware für Bibliotheken

Entwickler, Software-Architekt Java Swing UML ...
Entwickler, Software-Architekt

Planung und Entwicklung eines einfachen Verwaltungsprogramms für kleinere Bibliotheken. Das Programm ist darauf ausgelegt ein altes „Karteikarten System“ zu ersetzen.

Netbeans Borland Together 6.1
Java Swing UML Unit Tests / Integration Tests Linux
Dortmund
1 Jahr 7 Monate
2001-09 - 2003-03

Entwicklung eines Microcontroller basierten Smartcard Lesers

Entwickler, Software-Architekt C C++ Pascal ...
Entwickler, Software-Architekt

Planung, Entwurf und Entwicklung eines Smartcard Lesers mit Netzwerkanschluss auf Microcontroller (8051) Basis. Das Projekt umfasste den vollständigen Entwicklungsprozess, von Spezifikation der Hardware-Anforderungen und aktiver Unterstützung der hardwareseitigen Umsetzung, bis hin zur vollständigen Software Entwicklung. Das fertige Produkt enthält den entwickelten Smartdrive Treiber, die Netzwerk Protokoll Implementierungen (DHCP, HTTP) auf Standalone Device ohne Betriebssystem.

C C++ Pascal 8051 Keil C51 SDCC Atmel Beck DK40 SC12 IPC@CHIP Towitoko Smartdrive Samba Wiznet IIM7100 Linux Windows
Krefeld

Aus- und Weiterbildung

Aus- und Weiterbildung

2009

Diplom Informatiker, TU Dortmund

Kompetenzen

Kompetenzen

Top-Skills

embedded Bluetooth C++ Software-Entwicklung Linux C Qt Swift Android iOS Kotlin Java

Produkte / Standards / Erfahrungen / Methoden

Android Studio
Apache
autotools
automake, autoconf
Boost
CMake
Geofencing
git
Icinga
JNI
Nagios
OpenGL
pthreads
PyTest
Qt
Scrum
SSH
Subversion
SUOTA
SVN
Swift
VNC
Protokollimplementierung
WebKit
Xcode

Betriebssysteme

Android
iOS
Linux
Mac OSX
TI-RTOS
Unix
Windows
Windows 10

iOS/Android sind die häufigsten Zielsysteme für die ich entwickle, gefolgt von Linux, insbesondere Embedded Linux sowie für Server Backends.

Programmiersprachen

Bash
C
C#
Grundlagen
C++
C/C++
Go
Java
Objective-C
Im Bereich iOS für Bestandsprojekte. Für neue Projekte setze ich Swift ein.
Perl
Basiskenntnisse, verwende ich inzwischen kaum noch.
PHP
Python
Qt
Umfangreiche Kenntnisse, insbesondere im Desktop Bereich, in den meisten Modulen.
Shell
Swift

Mein fachlicher Schwerpunkt ist in der mobilen Softwareentwicklung (Android/iOS) mit Java/Kotlin, Swift/Objective C sowie ggf. C/C++.

Darüberhinaus habe ich umfangreiche Kenntnisse in der Entwicklung mit C/C++ im Bereich Server Backend sowie Desktop Systemen, insbesondere unter Linux. Sehr häufig setze ich hierfür Qt ein.

Datenbanken

MySQL
Postgres
PostgreSQL
sqlite

Datenkommunikation

Bluetooth LE
Internet, Intranet
JSON
JSON-RPC
REST
TCP/IP
VNC/RFB
Websockets
XMPP

Berechnung / Simulation / Versuch / Validierung

cpptest
googletest
PyUnit
Unit Tests / Integration Tests
Unit-Tests

Branchen

Branchen

  • Elektroinstallationstechnik
  • Maschinenbau
  • IT-Dienstleistungen
  • Software
  • Automotive
  • Medien & Entertainment
  • Medizintechnik
  • IT-Sicherheit
  • Luftfahrt

Einsatzorte

Einsatzorte

Deutschland
möglich

Projekte

Projekte

2 Jahre 9 Monate
2022-04 - 2024-12

Bluetooth Implementierung eines Phone-as-a-key Systems im Automobilumfeld

Software-Entwickler C Bluetooth LE Mikrocontroller ...
Software-Entwickler
Für einen Kunden in der Automobilbranche habe ich die Software-Entwicklung des Bluetooth Mikrocontrollers eines "Phone-as-a-Key" Projektes übernommen. Hier kann ein Smartphone als Ersatz für einen Fahrzeugschlüssel verwendet werden, entweder durch Bedienung des Smartphones oder durch automatische Lokalisierung des Smartphones durch das Fahrzeug ("passive Entry") mit BLE und UWB.
Zunächst habe ich das Bluetooth Team in dem Projekt ergänzt, im Laufe des Projektes habe ich dann den Bluetooth Teil vollständig übernommen und auch große Teile der CAN/CAN TP Kommunikation Übernommen. Die Entwicklung bestand aus mehreren Teams und mehreren Mikrocontrollern, die in enger Abstimmung kommunizieren mussten.
Der anfangs verwendete Mikrocontroller wurde mehrmals aus verschiedenen Gründen gewechselt, die Software musste dementsprechend an neue Mikrocontroller und teilweise an den Bluetooth Stack eines anderen Herstellers angepasst werden - auch in Kooperation mit dem Hersteller der entsprechenden Mikrocontrollers, da dieser sich ebenfalls noch in Entwicklung befand. Mehrere Bugreports an die Hersteller (teils bzgl. der Hardware selber) wurden von mir erstellt und ggf. intern bis zur Behebung durch den Hersteller durch interne Workarounds umfahren.
Eine große Produktdemo zwecks Vertrieb der Umsetzung wurde (auch) von mir unterstützt, welche letztlich erfolgreich war und zu einer erheblichen Ausweitung des Gesamtprojekts geführt hat.
Für die Umsetzung wurden je nach Projektstand teilweise FreeRTOS, ansonsten aber hauptsächlich AUTOSAR eingesetzt.
C Bluetooth LE Mikrocontroller SPI Segger J-link AUTOSAR CAN (CAN FD CAN TP) CANoe NXP TI ARM Cortex-M Secure Boot Cryptographie
1 Jahr 2 Monate
2021-11 - 2022-12

Bluetooth Implementierung eines Smart-Keyfobs im Automobilumfeld

Software-Entwickler C Bluetooth LE Mikrocontroller ...
Software-Entwickler
Für einen Kunden in der Automobilbranche habe ich die Implementierung einer Bluetooth Anbindung eines ?smarten? Fahrzeugschlüssel vorgenommen. Der Schlüssel (embedded Gerät) soll hierbei mit dem Fahrzeug über Bluetooth kommunizieren und Daten austauschen können, mit verschiedenen Randbedingungen, einschließlich einer Anbindung an den CAN Bus des Fahrzeuges sowie spezielle Anforderungen an die Batterielaufzeit. Das konkrete auf Bluetooth aufsetzende Protokoll war nicht vorgegeben, jedoch existiert eine branchenweit verwendete Protokollspezifikation für ähnliche Geräte und im Zuge dieses Projektes wurde ebenfalls geprüft, ob diese mit gezielten Änderungen auch für unseren Fall einsetzbar ist. Die Bluetooth Implementierung setzte vollständig auf Bluetooth 5 auf und musste zwangsläufig höhere Sicherheitsanforderungen sowie Stabilitätskriterien erfüllen. Das hierzu verwendete Protokoll wurde von mir umgesetzt - zunächst in einer "Mock" Umsetzung, die später von einer kompletten Cryptographischen Lösung ersetzt wurde.
Zielhardware war eine Mikrocontroller Architektur mit einem eingeschränkten Betriebssystem (FreeRTOS), in einem weiteren Schritt wurde jedoch auch eine ?Bare Metal? Implementierung ohne Betriebssystem vorgenommen.
Im Zuge dieses Projekts habe ich in Absprache mit dem Kunden eine Android App zur Diagnose der Bluetooth Geräte entwickelt. Diese App scannt nach vorhandenen Geräten des Kunden, stellt eine Verbindung her und überträgt über ein proprietäres Protokoll Diagnose Kommandos und Parameter Daten zum Gerät und erhält entsprechende Antwortdaten, die dem Nutzer aufbereitet zur Verfügung gestellt werden. Diese App wird intern zum Testen verschiedener Funktionalitäten sowie für Hardware Tests verwendet und wird auch den Kunden (Fachpersonal) zur Verfügung gestellt werden, um Fehleranalysen im Feld durchführen zu können.
Demo bzw. Vertriebs Veranstaltungen in denen das Produkt im jeweiligen Stand präsentiert wurde, wurden durch mich unterstützt und haben letztlich zur vollen Beauftragung bei meinem Kunden geführt.
Im weiteren Verlauf habe ich in einem separaten Projekt ebenfalls die Bluetooth LE Implementierung der Fahrzeugseite übernommen.

C Bluetooth LE Mikrocontroller SPI FreeRTOS Segger J-Link CAN CANoe Java Kotlin Android
4 Monate
2021-08 - 2021-11

Umsetzung Pilotprojekt Modbus TCP Security für IoT Geräte

Software-Entwickler Java Modbus Python ...
Software-Entwickler
Für einen Kunden aus der Energiewirtschaft, wurde in einem Pilotprojekt eine Implementierung des Modbus TCP Security Protokolls in Java umgesetzt.
Die produktiv genutzten Geräte des Kunden unterstützen die Anbindung verschiedener Geräte an das Gesamtsystem über branchenübliche Protokolle, insbesondere Modbus. Um die Nutzung außerhalb gesondert gesicherter Netzwerke zu ermöglichen, wird geplant die Möglichkeit Modbus TCP Security zu nutzen anzubieten, welches eine sichere Kommunikation der Geräte untereinander anbietet, ggf. auch über unsichere Internet Verbindungen.
In dem Pilotprojekt wurde die bestehende Modbus Umsetzung analysiert, erweitert und ggf. umgeschrieben um das zertifikatsbasierte Modbus TCP Security Protokoll zu ermöglichen. Weiterhin wurden Test Applikationen entwickelt um die Implementierung mit alternativen Tools testen zu können. Des Weiteren wurde ein Konzept erarbeitet, um dem Endanwender eine unkomplizierte Möglichkeit zu bieten neue Geräte auf sichere Weise in das System einzubinden.
Als weitere Option wurde die Java Implementierung so gestaltet, dass die Crypto Implementierungen einfach auf neue Java Versionen migriert werden können, insbesondere in Bezug auf genutzte kryptographische Funktionalitäten, die nicht Teil der Standard Java API sind.
Java Modbus Python golang OSGi IoT
1 Jahr 3 Monate
2020-09 - 2021-11

Entwurf und Entwicklung eines Authentifizierungs-Systems für IoT Geräte

Software-Entwickler C C++ googletest ...
Software-Entwickler
Für einen Kunden aus der Energiewirtschaft, der internet-fähige Geräte (IoT/Internet of Things) für Kunden unterschiedlicher Größenklassen (Industrieanlagen bis Einzelgeräte bei privaten Endkunden) herstellt, wurde ein Login Protokoll entwickelt und implementiert. Der Kunde hat das bestehende Authentifizierungsprotokoll seiner Geräte als Schwachstelle identifiziert und strebte einen Ersatz durch ein modernes, kryptographisch sicheres Verfahren an. Hierzu wurden Vorüberlegungen und Entwürfe einer Spezifikation durch den Kunden erstellt, zu deren weiteren Ausarbeitung und Umsetzung ich beauftragt wurde. Da eine große Bandbreite der Produkte des Kunden betroffen waren, involvierte dieses Projekt fast alle Abteilungen des gesamten Großunternehmens, einschließlich interner Entwicklungsabteilung, die Produktion, den Vertrieb, die interne Verwaltung und den Service. Eine Abstimmung und Anforderungsanalyse mit den jeweiligen Abteilungen wurde in enger Zusammenarbeit und unter Leitung des Kunden durchgeführt, parallel dazu wurde eine C++ Library für die Hauptproduktlinie als Pilotprojekt entwickelt. Die Entwicklung wurde aufgrund der komplexen und dynamischen Anforderungssituation durchgehend agil durchgeführt und die Library in das bestehende Gesamtsystem integriert. Es wurden zudem mehrere Client Implementierungen in verschiedenen Sprachen und Umgebungen (C/C++ auf Linux und Windows, JavaScript für Browser, Python Scripte und Kommandozeile für verschiedene Tools) umgesetzt, die die entwickelte Library im Hauptprodukt als Gegenstelle ansteuern und in die von Endkunden verwendete Software integriert werden. Es wurden verschiedene Fallback Varianten, einschließlich eines Hash basierten One-Time-Passworts (HOTP) entwickelt, weiterhin wurde die Funktionalität mit Unit Tests und Integration Tests in der bestehenden CI abgesichert.

C C++ googletest REST OAuth2 curl OpenSSL JavaScript Kryptographie Diffie-Hellman PAKE HOTP IoT
4 Monate
2020-05 - 2020-08

Weiterentwicklung einer iOS und Android App zur Heimautomatisierung

Software-Entwickler Swift/Objective-C Kotlin Java ...
Software-Entwickler
Für einen App zur Heimautomatisierung/Internet of Things Bereich wurden für iOS und Android verschiedene Weiterentwicklungen vorgenommen. Es wurde eine nativen Karte mit den jeweiligen nativen APIs (Apple Maps sowie Google Maps) umgesetzt und in die bestehenden Apps integriert.
Weiterhin wurde für eine neue Klasse von unterstützten Endgeräten eine neue Cloud Anbindung vorgenommen, deren Schnittstelle im Zuge des Projektes in Abstimmung mit dem externen Cloud-Plattform Entwickler definiert wurde.

Swift/Objective-C Kotlin Java iOS Android Maps REST Qt C/C++
5 Monate
2019-11 - 2020-03

Entwicklung eines Software Development Kits zur Kommunikation mit embedded Geräten

Software-Entwickler C Bluetooth LE C++ ...
Software-Entwickler

Für einen Kunden aus der Automobilindustrie wurde ein Software Development Kit (SDK) für eine End-to-End Kommunikation zwischen einem Hardware Endgerät und einem Mobilgerät entwickelt. Das Kommunikationprotokoll sowie die Implementierung für Mobilgeräte waren bereits verfügbar und produktiv. Die zuvor existierende Anwendung für das Hardware Endgerät sollte vollständig neu entwickelt und in ein SDK überführt werden, mit dem Ziel dieses auf verschiedenen Embedded Endgeräten, insbesondere verschiedenen Microcontrollern zur Verfügung zu stellen.

Die Entwicklung erfolgte vollständig in C mit dem Ziel möglichst geringe Speicher Anforderungen, sowohl an RAM als auch an Programmspeicher/Flash, zu stellen. Weiterhin wurden sämtliche Hardware-, Betriebssystem- und sonstige Software-Anforderungen (einschließlich Speicherallokationen und Crypto Funktionen) in einen (Hardware-)Abstraktionslayer überführt, so dass diese je nach Möglichkeiten der Zielplattformen implementiert werden können.

Es wurde eine Beispielimplementierung auf einem Microcontroller vorgenommen, die die Funktionalität vollständig zur Verfügung stellt und sämtliche Anforderungen des SDKs, insbesondere in Bezug auf Speicher, demonstriert. Die Kommunikation mit dem Mobilgerät erfolgt hier über Bluetooth LE, von der verwendeten Kommunikationstechnik abstrahiert.

Alle Kernfunktionalitäten wurden durch Unit Tests abgedeckt.

Code Composer Studio
C Bluetooth LE C++ googletest TI-RTOS
3 Monate
2019-08 - 2019-10

Python-Bindings zur Anbindung einer C++ Library an Python

Software-Entwickler
Software-Entwickler

Für ein produktiv eingesetztes internes Test Framework eines umfangreichen Systems mit Client/Server Architektur sollte die zugrundeliegende Client Bibliothek sowie das zugehörige Datenmodell ersetzt werden. Hierzu sollte eine bereits in C++/Qt geschriebene Kommunikations-Library eingesetzt werden.

Das existierende, Python basierte, Test Framework wurde vollständig durch ein neues Framework ersetzt, welches die C++/Qt Library in den Python Tests verfügbar macht. Dabei wurde die Funktionalität des alten Frameworks vollständig nachgebildet, so dass nur minimale Änderungen an den existierenden Tests (mehrere tausend) notwendig wurden.

Hierzu wurden Python Bindings für die C++ Library auf Basis von Shiboken/PySide entwickelt, sowie eine Python basiertes Test Framework, das die erforderliche API darstellt und die Bindings für die Tests verfügbar macht.

Python C++ Qt Shiboken2 PySide2 PyCharm
4 Monate
2019-04 - 2019-07

Weiterentwicklung von Android App zur Heimautomatisierung

Software-Entwickler
Software-Entwickler

Für eine bestehende, produktive Android App im Bereich Heimautomatisierung / Internet of Things wurden Wartungsarbeiten und Bugfixing durchgeführt. Die Wartungsarbeiten umfassten insbesondere Anpassungen an Verhaltensänderungen von Android Versionen 8 und 9, insbesondere in Bezug auf Hintergrunddienste. Das zur Verfügung gestellte Android Appwidget wurde so umgeschrieben, dass der bisher verwendete Service nun ein Vordergrunddienst ist, da sonst das Widget auf diesen Android Versionen nicht länger verfügbar gewesen wäre.

Weiterhin wurden für ein Release auf dem chinesischen Markt, alle Google Dienste (einschließlich Push-Notifications) durch eine alternative Library, die auf dem dortigen Markt funktionsfähig ist, ersetzt. Hierzu wurde die chinesische Library in die App bzw. eine separate Version der App integriert. Da die Dokumentation aller technischen Schnittstellen ausschließlich in chinesisch vorlag, erfolgte die Implementierung in Zusammenarbeit mit den dortigen Kollegen.

C/C++ Android Java Android Studio
1 Jahr 2 Monate
2018-04 - 2019-05

Entwicklung Mitarbeiterapp

Software-Entwickler Scrum REST
Software-Entwickler

Für einen Kunden aus der Automobilindustrie wurde eine interne Mitarbeiterapp neu entwickelt. Die Android und iOS Versionen wurde separat entwickelt, jeweils nativ mit Java bzw. Swift, mein Aufgabenbereich war zunächst die Android App.

Wesentliche Funktionsmerkmale waren ein sicherer Login in das interne Firmennetz, Zeitverwaltung, Abruf interner Dokumente, Bereitstellung interner Unternehmensinformationen und die Integration einer von einem separaten Team entwickelten umfangreichen Webapp zur Arbeitszeitverwaltung. Weiterhin waren ein Einrichtungswizard und ein Demo-Modus Bestandteile.

Zusätzlich wurde ein vollständiger Mock-Server zur Fehlerfindung entwickelt, der Testdaten bereitstellen konnte und ohne das gesicherte Unternehmensnetz (das selbst für Entwickler nur eingeschränkt verfügbar war) funktionierte.

Die Entwicklung fand in einem Team mit mehreren Entwicklern mit SCRUM statt. Ich wurde in dem Projekt als Android Experte hinzugezogen, da bisher in diesem Feld noch wenig Expertisen vorhanden waren. Dementsprechend waren meine Aufgabenbereiche neben verschiedener Features die Weiterentwicklung des allgemeinen Frameworks und Qualitätssicherung.

Ab ungefähr 2019 habe ich aufgrund der internen Prioritätensetzung das parallel arbeitende iOS Team verstärkt. Hier war mein Aufgabenbereich insbesondere die Erweiterung und Neuentwicklung von automatisierten Tests sowie die Entwicklung einer Lösung für Dokumentenscan und -übermittlung nach Design und API Vorgaben.

Android Java Android Studio git Swift iOS Xcode Python
Scrum REST
1 Monat
2019-03 - 2019-03

Weiterentwicklung von Android App zur Heimautomatisierung

Software-Entwickler
Software-Entwickler

Wartungsarbeiten an einer bestehenden produktiven App für Android. Die Apps fungieren als mobile Benutzerschnittstelle zum eigentlichen Produkt und sind im Bereich Heimautomatisierung anzusiedeln. Aufgrund von neueren Android Versionen waren Anpassungen für die TLS Kommunikation mit dem externen Gerät (internet of Things) notwendig geworden. In diesem Zuge wurden ebenfalls Anpassungen an neue Android Versionen vorgenommen, insbesondere um die Vorgaben von Google Play zu erfüllen.

Java Android Studio Android
5 Monate
2017-11 - 2018-03

Entwicklung von iOS- und Android-App zur Steuerung von Bluetooth LE Geräten

Entwickler, Software-Architekt, Technischer Projektleiter C/C++ Android Java ...
Entwickler, Software-Architekt, Technischer Projektleiter

Es wurde eine App für die Konfiguration sowie Steuerung einer Bluetooth LE basierten Gerätereihe aus dem Bereich Elektroinstallationstechnik sowie Internet of Things erstellt. Die Designvorlagen wurden vollständig vom Kunden zur Verfügung gestellt.

Die App wurde bereits von einem anderen Team entwickelt, lag zu (unserem) Projektbeginn jedoch trotz bereits weit verstrichener Deadline in einer nicht funktionsfähigen Fassung vor. Nach Abstimmung mit dem Kunden sowie nach einem Review der bereits vorliegenden App wurde entschieden die App vollständig neu zu entwickeln, da dies schneller war als den vorliegenden Stand zu reparieren. Die JavaScript basierte Web-App bzw. der WebContainer wurde durch eine native App ersetzt, deren Business Logik weitgehend in C++ geschrieben ist und lediglich Plattform-spezifische Komponenten (insbesondere die Bluetooth LE Kommunikation) jeweils separat in Java sowie Swift/Objective-C.

Eine frühe Prototyp App, welche die Grundfunktionalität und insbesondere die Bluetooth LE Kommunikation bereitstellt wurden auf Wunsch des Kunden innerhalb von 2 Monaten fertig gestellt, so dass der Kunde die internen Tests der Bluetooth Stabilität (inklusive der ebenfalls implementieren Firmware Updates über SUOTA) starten und die sich ebenfalls noch in Entwicklung befindliche Hardware finalisieren konnte. Insbesondere auf die Stabilität der Verbindung in der Android App wurde Wert gelegt, da der Kunde hier schlechte Erfahrungen gemacht hat.

Die Apps wurden in 3-4 Monaten vollständig und entsprechend den separat erstellten Designvorlagen des Kunden zur ausdrücklichen Zufriedenheit fertiggestellt.

Das Entwicklungsteam bestand aus 4 Mobilentwicklern, inklusiver mich selber. Neben meiner Entwicklungstätigkeit habe ich ebenfalls die technische Projektleitung des Entwicklungsteams und die Projektabstimmung mit dem Kunden übernommen.

Android Studio Xcode
C/C++ Android Java JNI/NDK iOS Objective-C Swift Bluetooth LE git SUOTA REST
Dortmund
1 Monat
2017-10 - 2017-10

Unterstützung von Geofencing in einer Android App

Entwickler, Software-Architekt C/C++ Java JNI/NDK ...
Entwickler, Software-Architekt

Für eine bestehende Android App im Bereich Heimautomatisierung / Internet of Things wurde Geofencing Unterstützung implementiert. Die Android App meldet an den von einer Fremdfirma bereitgestellten Server das Betreten sowie das Verlassen des Anwenders aus bestimmten Bereichen (etwa "zu Hause", "im Büro", etc.) und führt ggf. Aktionen durch, die vom Server definiert wurden. Die Geofences werden dabei mit dem Server bzw. mit verschiedenen Geräten synchronisiert.

Android Studio Xcode
C/C++ Java JNI/NDK Android Geofencing
Dortmund
6 Monate
2017-04 - 2017-09

Entwurf und Umsetzung von Low-Level OS und Hardware Testframework

Entwickler, Software-Architekt, Technischer Projektleiter Linux Python PyTest ...
Entwickler, Software-Architekt, Technischer Projektleiter

Für eine Linux basiertes Hardware Gerät wurde ein Testframework entwickelt, das die Funktionalität des Betriebssystems, der Treiber und der Firmware insgesamt bei Hardware- sowie Software Updates (etwa neue Treiber Versionen) sicherstellt. Das Python/PyTest basierte Test Framework läuft hierbei auf einem Desktop PC und kontrolliert das zu testende Gerät mittels spezieller Zusatzhardware, etwa einem Labornetzteil (um das zu testende System zu starten sowie die Spannung gezielt zu stören) und I/O Anschlüssen zum Abfragen von Sensorwerten.

Für die Ansteuerung der Spezialhardware wurden teilweise einfache Treiber bzw. Tools entwickelt und um die Sensordaten in geeigneter Form zur Nachverarbeitung zur Verfügung zu stellen.

Für die darüberhinausgehenden Tests auf OS-Ebene (etwa CPU Last, I/O Geschwindigkeit, Netzwerkfunktionalität, etc.) stellt das Testframework ssh Verbindungen zu dem zu testenden Gerät her.

Für die einfachen Einsatz durch die Tester und zur besseren Überwachung der Testergebnisse insbesondere bei Langzeittests wurde eine HTML/PHP/JavaScript basiertes Web Frontend entwickelt.

Linux Python PyTest SSH JavaScript PHP KNX
Dortmund
1 Monat
2017-03 - 2017-03

Design und Implementierung einer REST und Websocket API

Entwickler, Software-Architekt C/C++ Go Python ...
Entwickler, Software-Architekt

Für ein bestehendes Heimautomatisierungssystem / Internet of Things wurde eine REST API sowie parallel eine Websocket basierte API für die Nutzung durch externe Firmen und Tools (etwa zur Anbindung von Sprachsteuerungssystemen wie Amazon Alexa) entwickelt. Hierzu wurden die jeweiligen Protokolle von Grund auf spezifiziert und in einem Server Backend implementiert. Das Projekt war als Demo sowie Proof-of-Concept gedacht und wurde nach erfolgreicher Durchführung zwecks produktivem Einsatz an einen weiteren Dienstleister übergeben.

Die Implementierung erfolgte zunächst auf Basis von Python, aufgrund diverser Einschränkungen ist es jedoch frühzeitig auf Go umgestellt worden, was die Effizienz der Umsetzung deutlich erhöht hat.

Das Protokoll sowie das Backend befindet sich derzeit im produktiven Einsatz.

C/C++ Go Python REST Websockets JSON-RPC Linux
Dortmund
10 Monate
2016-06 - 2017-03

Integration einer iOS und Android App zur Heimautomatisierung in eine Cloud Lösung

Entwickler Java Objective-C iOS ...
Entwickler

Integration einer produktiv eingesetzte App zur Heimautomatisierung in eine Cloud Lösung des Kunden. Das Cloud Backend wurde von einer Drittfirma bereitgestellt, die Apps müssen mit diesem kommunizieren. Dabei sollen die Apps weiterhin die lokale, d.h. über W-LAN verfügbare Funktionalität bevorzugen, sofern das Mobilgerät in dem lokalen Netz ist, andernfalls soll die Cloud Variante gewählt werden. Die Kommunikation der Cloud Variante erfolgt ausschließlich über SSL gesicherte Verbindungen.

Android Studio Xcode
Java Objective-C iOS Android
Dortmund
1 Jahr 3 Monate
2016-01 - 2017-03

Weiterentwicklung von iOS und Android App zur Heimautomatisierung

Entwickler Objective-C Java iOS ...
Entwickler

Wartung und Weiterentwicklung von verschiedenen bestehenden und produktiven Apps für iOS Android. Die Apps fungieren als mobile Benutzerschnittstelle zum eigentlichen Produkt und sind im Bereich Heimautomatisierung anzusiedeln.
Die Wartungsarbeiten und Weiterentwicklungen erfolgten je nach Bedarf über einen weiten Zeitraum verteilt.

Android Studio Xcode
Objective-C Java iOS Android Apple Maps
Dortmund
4 Monate
2016-10 - 2017-01

Entwicklung von Android/iOS Widgets

Entwickler, Software-Architekt C/C++ Java JNI/NDK ...
Entwickler, Software-Architekt

Für eine bestehende App wurden Android AppWidgets sowie iOS today Widgets entwickelt. Aufgrund von Einschränkungen der jeweiligen Plattformen, wurden die GUIs der jeweiligen Widgets neu entwickelt und nach Design Vorgaben des Kunden umgesetzt. Die Widgets stellen weitgehende Funktionalität der zuvor existierenden App als Hintergrund Service zur Verfügung, hierfür wurde eine gemeinsame Code Basis entwickelt. Die Apps sind im Bereich Heimautomatisierung anzusiedeln und ermöglichen die Steuerung und Status Anzeige von Geräten über ein proprietäres Protokoll des Kunden. Die Widgets sind inzwischen in den Stores verfügbar und wurden von den Endkunden sehr gut aufgenommen.

Android Studio XCode
C/C++ Java JNI/NDK Objective-C Android iOS AppWidgets today widgets Git
Dortmund
2 Monate
2016-09 - 2016-10

Entwicklung Android App zur Bereitstellung von Mediendaten und Lokalisierung im Raum

Entwickler Java Android Bluetooth LE ...
Entwickler

Entwicklung eine Android App zur Präsentation auf einer Messe. Die App stellt anhand der aktuellen Position des Anwenders in einem Raum vorgegebene Bilder und Videos dar. Die Lokalisierung im Raum erfolgt mittels Entfernung zu Beacon Geräte, die über Bluetooth gefunden werden. Der Anwender kann am Messestand mit weiteren externen Geräten agieren und so die dargestellten Inhalte in der App beeinflussen.

Android Studio
Java Android Bluetooth LE iBeacon
Dortmund
1 Monat
2016-09 - 2016-09

Erweiterung von iOS App zur Bluetooth Kommunikation mit proprietärer Hardware

Entwickler iOS Bluetooth LE
Entwickler

Erweiterung einer iOS App zur Kommunikation mit der Hersteller-eigenen Hardware. Die produktive App kommuniziert über Bluetooth mit dem Gerät, es wurde Unterstützung für neue Funktionalität des Geräts in die App eingebaut, sowie das existierende Kommunikationsprotokoll aktualisiert.

Xcode
iOS Bluetooth LE
Dortmund
5 Monate
2016-05 - 2016-09

Review eines Crypto Konzeptes sowie Design und Implementierung eines Test Frameworks

Entwickler, Software-Architekt C/C++ Kryptographie SSL ...
Entwickler, Software-Architekt

Für eine bestehende und produktive Software Library auf Basis von C/C++ zur Ansteuerung von Internet-of-Things Geräten wurde das Crypto Konzept der Cloud Implementierung reviewed. Dieses Review umfasste zwei Phasen, zum einen das High-Level Pairing Konzept (Zertifikatserstellung, Login, Logout, Zertifikaterneuerung, etc.) und zum anderen das Verschlüsselungskonzept der Kommunikation. Im Zuge des Reviews wurde darüberhinaus ein Test Framework entwickelt das die Funktionsfähigkeit von Schlüsselfunktionalitäten, insbesondere bzgl. des Crypto Konzeptes, sicherstellt. Hierzu wurden die in Frage kommenden Fehlerfälle (etwa Zertifikat abgelaufen) und ausgewählte wichtige Angriffsszenarien identifiziert und in einem dafür entwickelten Python und PyUnit basierten Toolkit realisiert.

C/C++ Kryptographie SSL Zertifikate Python PyUnit Unit-Tests Web Server XMPP Linux
Dortmund
2 Monate
2016-05 - 2016-06

Unterstützung für mehrere Sprachen in Desktop Applikation sowie Unterstützung für weiteres Dateiformat

Entwickler C/C++ Qt CMake ...
Entwickler

Anpassung einer produktiven Linux/Windows Desktop Applikation an Mehrsprachigkeit. Die Qt basierte Applikation lag komplett in Englisch vor und sollte unter Verwendung des Qt Lokalisierungs-Frameworks für mehrere Sprachen, insbesondere aus dem asiatischen Raum vorbereitet werden.

Nach erfolgreicher Durchführung wurde unabhängig davon die Unterstützung eines weiteren branchenspezifischen Dateiformats implementiert.

C/C++ Qt CMake Git Linux Windows
Dortmund
5 Monate
2016-02 - 2016-06

Entwicklung einer VNC/RFB Library

Entwickler, Software-Architekt C/C++ Java JNI/NDK ...
Entwickler, Software-Architekt

Entwicklung einer C/C++ Library für Implementierung von Fernwartungs-Applikationen auf Basis des RFB/VNC Protokolls. Die Library wurde von Grund auf für spezifische Anforderungen und insbesondere mit Unterstützung für Mobile Geräte entwickelt, da bereits verfügbare Lösungen die Anforderungen nicht erfüllen konnte. Es wurden mehrere gängige VNC Erweiterungen implementiert und Anbindungen an Android, iOS und Windows 10 sowie Windows 10 Mobile entwickelt. Besonderes Augenmerk wurde auf einfache Benutzbarkeit und Performanz gelegt, da der Einsatz auf Mobilen Geräten möglich sein sollte.

Android Studio Xcode
C/C++ Java JNI/NDK Objective-C VNC/RFB iOS Android Windows 10 Linux
Dortmund
3 Monate
2016-01 - 2016-03

Entwicklung einer Fernwartungssoftware auf Basis von RFB/VNC

Entwickler, Software-Architekt C/C++ Java JNI/NDK ...
Entwickler, Software-Architekt

Der Kunde produziert und betreibt Industrieanlagen, deren aktueller Systemzustand von Smartphone und Tablet Geräten überwacht und ggf. gewartet werden soll. Die Wartung bzw. Fernsteuerung erfolgt mit Hilfe des RFB (VNC) Protokolls. Die hierfür entwickelte App implementiert dieses Protokoll in einer C/C++ Library die von der App verwendet wird um Verbindungen zu mehreren Anlagen zu ermöglichen. Dabei war zu beachten, dass die Anlagen häufig nur über eine sehr langsame und instabile Internet Verbindunng verfügen, die Kommunikation muss daher entsprechend solide sein. Die App wurde darüberhinaus vollständig gebranded, da sie an Endkunden herausgegeben werden soll.

Android Studio
C/C++ Java JNI/NDK VNC/RFB Android
Dortmund
6 Monate
2015-07 - 2015-12

Aufbau von Server-Synchronisations Framework

Entwickler, Software-Architekt, System Administrator PostgreSQL Python SVN ...
Entwickler, Software-Architekt, System Administrator

Für eine bestehende Server Infrastruktur auf PostgreSQL Basis wurde ein spezialisiertes Synchronisations Framework entwickelt, welches die kritischen Daten des Kunden auf einen Backup Server überträgt, um im Ernstfall einen reibungslose Umstellung zu ermöglichen. Wegen verschiedener kritischer Randbedingungen waren normale Replikations Lösungen nicht ausreichend und konnten nicht eingesetzt werden, daher wurde eine spezialisierte Lösung auf Basis von Python entwickelt. Die Lösung synchronisiert dabei verschiedene Datenbank Tabellen unter Beachtung von interner Business Logik, sowie verschiedener Zusatz Daten, die nicht in der Datenbank gespeichert werden.

PostgreSQL Python SVN SSH Linux
Dortmund
1 Jahr 11 Monate
2014-02 - 2015-12

Entwicklung eines plattformübergreifenden Smartphone Spiels

Entwickler, Software-Architekt C/C++ Java C# ...
Entwickler, Software-Architekt

Entwicklung eines auf Smartphones (iOS/Android/WP8) ausgerichteten 3D (OpenGL bzw. Direct3D) Spiels.

Meine Tätigkeit in diesem Projekt umfassen neben plattformübergreifenden Tätigkeiten an der Engine insbesondere die Umsetzung der Android und Windows Phone 8 Varianten.

MSVC
C/C++ Java C# Direct3D OpenGL Android SVN Git PostgreSQL WP8
Dortmund
6 Monate
2015-06 - 2015-11

Weiterentwicklung von iOS und Android App zur Heimautomatisierung

Entwickler Objective-C Java iOS ...
Entwickler

Wartung, Aktualisierung und Weiterentwicklung einer bestehenden und produktiven App für iOS (iPhone und iPad) und Android (Phones und Tablets). Die App fungiert als mobile Benutzerschnittstelle zum eigentlichen Produkt und ist im Bereich Heimautomatisierung anzusiedeln. Es wurden verschiedene Änderungen am Laufzeitverhalten, an der Benutzeroberfläche sowie Fehlerbehebungen vorgenommen, die im Laufe der Zeit in den App Versionen aufgelaufen waren.

Xcode Eclipse Android Studio
Objective-C Java iOS Android
Dortmund
1 Monat
2015-09 - 2015-09

Weiterentwicklung Android App

Entwickler Java Android
Entwickler

Weiterentwicklung einer bestehenden Android App zur Geräteansteuerung mittels Bluetooth. Die Anpassung erfolgte analog zu einer vorangegangenen Anpassung für iOS.

Eclipse
Java Android
Dortmund
1 Monat
2015-08 - 2015-08

Weiterentwicklung iOS App

Entwickler Objective-C iOS
Entwickler

Weiterentwicklung einer bestehenden iOS App zur Geräteansteuerung mittels Bluetooth.

Die Funktionalität der App stand bereits zur Verfügung, es wurde lediglich eine komplett aktualisierte graphische Benutzerschnittstelle nach Vorgaben des Kunden entwickelt. Aufgrund eines bevorstehenden Messetermins wurde das gesamte Projekt innerhalb von drei Wochen vollständig umgesetzt.

Xcode
Objective-C iOS
Dortmund
2 Jahre 8 Monate
2013-01 - 2015-08

Weiterentwicklung einer Serverbasierten Streaming Lösung für medizinische Daten

Entwickler, Software-Architekt SQL/PostgreSQL Qt PACS ...
Entwickler, Software-Architekt

Weiterentwicklung einer Serverapplikation für die effiziente Verteilung medizinischer Bilddaten in Krankenhaus- und Praxis-Umgebungen. Hierbei muss die Software die für Befundungen und teils Behandlungen erforderliche Daten aus unterschiedlichen Quellen an die jeweiligen Abteilungen weiterleiten. Die teils erheblichen Datenmengen (oft mehrere Terabyte/Tag) werden mittels eigens entwickelter Streaming Technologie und mit Proxy-Unterstützung übertragen.

Das Projekt wurde von mir aus einem bereits fortgeschrittenen, aber komplett nicht funktionsfähigen Zustand übernommen und zur Einsatzfähigkeit gebracht. Weiterhin wurden Teile der Kernfunktionalität von Grund auf neu entwickelt.

SQL/PostgreSQL Qt PACS SVN Unit Tests / Integration Tests Multithreading Performance Optimization Boost Linux trac
Dortmund
3 Monate
2014-10 - 2014-12

Portierung einer iOS Magazin-App nach Android

Entwickler Java Android Git ...
Entwickler

Portierung einer bereits veröffentlichten Magazin-App von iOS nach Android. Die Magazine können direkt mit in-App Purchases aus der App gekauft und gelesen werden.

Technisch werden die einzelnen Magazine durch Zip Archive mit HTML Inhalten umgesetzt, d.h. mittels WebView/WebKit. Ebenfalls wird ein Web-Login für plattformübergreifende Synchronisierung bereitgestellt.

Eclipse
Java Android Git PHP PostgreSQL WebKit
Dortmund
3 Monate
2014-07 - 2014-09

Softwarekomponente zur Ansteuerung eines externen Geräts

Entwickler C/C++ Qt JSON ...
Entwickler

Entwicklung einer Qt basierten Softwarekomponente eines Embedded Devices zur Ansteuerung und Kontrolle eines externen Geräts. Die Komponente ist Teil eines zu weiten Teilen bereits beim Kunden bestehenden größeren Embedded Devices und musste dort entsprechend integriert werden.

Das externe Gerät wird über eine (vom Hersteller vorgegebene) Web/JSON Schnittstelle gesteuert und kontrolliert. Die entwickelte Komponente sollte insbesondere die verwendeten Ein-/Ausgabe Parameter des externen Geräts in die (sofern möglich) jeweiligen Repräsentationen des Embedded Devices umgerechnet werden.

C/C++ Qt JSON Git Linux
Dortmund
8 Monate
2013-12 - 2014-07

Projekt in IT-Sicherheit

Entwickler
Entwickler

Softwareentwicklung einer sicherheitsrelevanten Softwarekomponente für Drittfirma.

München, Dortmund
4 Jahre 4 Monate
2009-10 - 2014-01

Weiterentwicklung, Wartung und Support von Flaggschiffprodukt eines Softwareherstellers in der Medizinbranche

Entwickler, Software-Architekt C++ Qt SQL/PostgreSQL ...
Entwickler, Software-Architekt

Weiterentwicklung, Wartung und Support des Flaggschiffproduktes eines Softwareherstellers in der Medizintechnik. Die Software ist ein Befundungssystem für radiologische Bilddaten („Picture Archiving and Communication System“, „PACS“) und wird insbesondere von Radiologen verwendet. Als Flaggschiffprodukt des Unternehmens verfügt die Software über viele Teilaspekte die im Laufe dieses Projektes bearbeitet und/oder entwickelt wurden, einschließlich:

  • Benutzerfreundliche Oberfläche, da ärztliches Personal Zielgruppe ist
  • Anspruchsvolle Real-Time Netzwerk Unterstützung (Streaming)
  • 3D Visualisierung
  • Synchronisierung verschiedener Anzeigen sowie verschiedener Bilddaten mittels jeweils geeigneter Algorithmen
  • Vielfältige Datenbank Unterstützung, sowohl zentralisiert als auch dezentralisiert
  • Umfangreiche Unit-/Integration Tests, u.a. zur Erfüllung gesetzlicher Anforderungen sowie zur Umsetzung von QM Anforderungen
  • Usw.
C++ Qt SQL/PostgreSQL PACS SVN Unit Tests / Integration Tests Python Multithreading Performance Optimization pthread Boost trac Linux
Dortmund
5 Monate
2013-08 - 2013-12

Entwicklung von Artikel-/Magazin-App für Smartphones

Entwickler, Software-Architekt C/C++ Java JNI ...
Entwickler, Software-Architekt

Entwicklung einer Artikel- bzw. Magazin-App für iOS und Android, die Android Umsetzung war meine Verantwortung.
Die App ist die digitale „Auferstehung“ eines Print Magazins und stellt verschiedene (Text-)Artikel als In-App Purchases zur Verfügung. Die gekauften Artikel können auf allen unterstützten Plattformen (einschließlich einer Web-Variante) betrachtet und bewertet werden.
Die Entwicklung erfolgte in Kooperation mit dem Verlag, wobei wir die technische Umsetzung vollständig übernommen haben. Neben der eigentlichen App wurde auch eine Server- sowie Datenbankanbindung entwickelt und bereitgestellt. Die App ist im Android und iOS Store verfügbar und ist derzeit mit 4,5 Sternen bewertet.

Eclipse
C/C++ Java JNI Android Git swig PHP PostgreSQL CMake Qt GCM Linux
Dortmund
7 Monate
2013-02 - 2013-08

Portierung eines erfolgreichen iOS/Android Spiels auf Windows Phone 8

Projektleiter, Entwickler C/C++ C# Direct3D ...
Projektleiter, Entwickler

Umsetzung einer erfolgreichen iOS Spiele-App (Download Millionär) auf Windows Phone 8. Das Projekt umfasste den vollständigen Produkt-Workflow, angefangen bei der Machbarkeits- und Anforderungsanalyse, über die Entwicklungsplanung und der eigentlichen Software-Entwicklung, bis hin zur erfolgreichen Einstellung des fertigen Produkts in den Store.

MSVC
C/C++ C# Direct3D OpenGL SVN
Dortmund
1 Jahr
2011-12 - 2012-11

Entwicklung eines Softwaremoduls zur Bilddatenberechnung entlang von Bezier Kurven

Entwickler C++ Qt PACS ...
Entwickler

Entwicklung eines Softwaremoduls das aus Freihand Zeichnungen geglättete Bezier Kurven erstellt und entlang dieser Kurven neue Daten aus existierenden radiologischen Bilddaten erstellt. Die so erstellten Bilddaten können zur Befundung genutzt werden.

Das Projekt umfasst sowohl die theoretische Seite (Sichtung des Forschungsstandes, Anpassung der Formeln an gegebene Anforderungen, etc.), die Umsetzung in Software als auch die Erstellung der zugehörigen graphischen Benutzeroberfläche.

Ebenfalls enthalten ist eine Echtzeit Visualisierung der Ergebnisse für den Anwender.

C++ Qt PACS SVN Unit Tests / Integration Tests Multithreading Performance Optimization Linux
Dortmund
4 Monate
2012-04 - 2012-07

Erstellung einer Software Lösung für Langzeit-Archivierung auf Basis von Tivoli Storage Manager (IBM)

Entwickler, Systemadministrator bash PACS Linux
Entwickler, Systemadministrator

Planung, Konfiguration und Entwicklung einer Backup und Archivierung Lösung im medizinischen Umfeld mit gesetzlichen Vorschriften zur Langzeit Archivierung (30+ Jahre). Teilweise erfolgte Planungen eines vergleichbaren Projekts wurden übernommen und ausgebaut.

Die Archivierung erfolgte auf Tapes mit bereits vorhandener Hardware (insbesondere Tape Library), auf Basis von IBM Tivoli Storage Manager (TSM) 6.3.

Aufgrund der gesetzlichen Anforderungen zur Archivierung sowie des unternehmenskritischen Characters der zu sichernden Daten wurde besonderes Augenmerk auf die Ausfallsicherheit des automatischen Backup Systems gelegt, einschließlich redundanter off-site Backups.

Tivoli Store Manager (TSM) 6.3 TSM 6.1
bash PACS Linux
Dortmund
3 Monate
2012-01 - 2012-03

Konzeption, Einrichtung und Wartung einer Netzwerk- und System-Monitoring Infrastruktur

Entwickler, Software-Architekt, Projektleiter, Systemadmin Python sqlite bash ...
Entwickler, Software-Architekt, Projektleiter, Systemadmin

Netzwerk- und System-Monitoring einer verteilten Rechnerumgebung, bestehend aus über 100 Rechnern an verschiedenen Standorten (überwiegend Krankenhäuser). Das Projekt umfasst die gesamte Spannbreite, von Bestands- und Bedarfsanalyse über Wahl der zu verwendenden Software bis hin zur Einrichtung und Wartung. Es wurde Nagios (später teilweise Icinga) in einer verteilten Installation und Konfiguration verwendet. Aus Netzwerktechnischen Gründen wurde zusätzlich ein eigenes Kommunikationsframework entwickelt um Einschränkungen (insbesondere Routing und Firewall) einiger Kunden transparent zu berücksichtigen.

Das fertige System ist produktiv im Einsatz und stellt die durchgängige Funktionsfähigkeit von unternehmenskritischer Software, sowie von essentieller Hard- und Software des radiologischen Personals der betroffenen Krankenhäuser sicher. Insgesamt hat es den Support Aufwand erheblich verringert und ist auf entsprechend positives Echo gestoßen.

Nagios Icinga
Python sqlite bash Linux NRPE
Dortmund
4 Monate
2010-12 - 2011-03

Konzeption und Entwicklung einer Multithreading Bibliothek

Projektleiter, Entwickler, Software-Architekt C++ Qt SVN ...
Projektleiter, Entwickler, Software-Architekt

Planung (einschließlich Bedarfsanalyse) und Entwicklung einer Multithreading Bibliothek auf Basis des Threadpool Patterns. Die Bibliothek ist plattformunabhängig ausgerichtet und in C++ entwickelt. Für Qt Anwendungen werden spezialisierte Klassen zur vereinfachten Benutzung bereitgestellt.

Die Bibliothek ist auf einfache Benutzbarkeit bei möglichst niedrigem Performance Overhead ausgelegt und wurde verwendet um die Multithreading Unterstützung in mehreren kleineren Projekten zu ersetzen und zu verbessern.

C++ Qt SVN Unit Tests / Integration Tests Multithreading Performance Optimization Linux
Dortmund
7 Monate
2010-01 - 2010-07

Semi-Automatische Lymphknoten Segmentierung

Entwickler, Software-Architekt C++ Qt PACS ...
Entwickler, Software-Architekt

Entwicklung eines Software Moduls für bestehendes PACS System zur semi-automatischen Lymphknoten Segmentierung in dreidimensionalen radiologischen Bilddaten.

Das Modul enthält Unterstützung für mehrere, in beliebigen Zeitabständen erfolgte Untersuchungen und stellt einen webkit/HTML-basierten Viewer und Editor zur Befunderstellung durch den Radiologen bereit.

Die Entwicklung wurde in Kooperation mit einer externen Firma durchgeführt.

C++ Qt PACS SQL/PostgreSQL WebKit SVN Multithreading Linux
Dortmund
4 Jahre
2006-01 - 2009-12

Netzwerkadministration in einem studentischen Wohnkomplex

Systemadministrator, Supporter Samba leafnode postfix ...
Systemadministrator, Supporter

Administration der internen Netzwerk Infrastruktur einer Wohnanlage mit ca. 300 Appartements. Hierzu zählten

  • Server-Administration (Mail Server, interne Web- und Usenet Foren, Website, etc.),
  • Anwender Support bei Internet Problem und
  • Unterstützung der Wohnverwaltung, etwa durch Bereitstellung von Mailing Listen.
Wireshark
Samba leafnode postfix mailman Apache PHP bash Perl iptables Tcpdump phpbb Linux Windows
Dortmund
1 Jahr 2 Monate
2008-05 - 2009-06

Softwaresystem zur Analyse und Generierung genetischer Daten in der medizinischen Grundlagenforschung

Software-Architekt, Entwickler, Technischer Projektleiter C++ Qt Unit Tests / Integration Tests ...
Software-Architekt, Entwickler, Technischer Projektleiter

Konzeption und Entwicklung eines Softwaresystems zur Generierung von Modellen und Modelldatensätzen sowie zur Datenanalyse in der medizinischen Grundlagenforschung.

Die Software wurde für genetische Daten entwickelt und war demnach ausgerichtet auf große Daten mit teils mehreren Gigabyte.

Das Projekt umfasste den gesamten Entwicklungsprozess von der Anforderungsanalyse mit medizinischem Fachpersonal, über Einordnung und Sichtung des aktuellen Forschungsstandes mit folgender Verfahrensauswahl bis hin zur konkreten Realisierung.

C++ Qt Unit Tests / Integration Tests Multithreading Linux Windows
Dortmund
1 Jahr
2007-04 - 2008-03

Planung und Entwicklung einer Kollisionsdetektionsbibliothek

Software-Architekt, Entwickler C++ ODE OGRE ...
Software-Architekt, Entwickler

Entwicklung einer Kollisionsdetektionsbibliothek sowohl für feste, als auch für deformierbare Körper (etwa Kleidung).

Die Bibliothek ist auf moderne Multi-Core/Multi-Prozessor Architekturen ausgelegt, kann aber auch in single-Core Systemen sinnvoll verwendet werden. Für verschiedene Anwendungszwecke wurden verschiedene Kollisions Algorithmen implementiert, insbesondere für deformierbare Körper.

Die Bibliothek kann problemlos auch mit vielen Objekten gleichzeitig umgehen, mehrere Beispielanwendungen wurden zu Demonstrationszwecken realisiert.

Die Software wurde ausgiebig auf Performance optimiert um insbesondere auch für zeitkritische Anforderungen geeignet zu sein.

Diverse Unit Tests/Integration Tests wurden implementiert um die Korrektheit der berechneten Ergebnisse zu garantieren.

C++ ODE OGRE CEGUI OpenGL CppUnit CMake lib3ds UML Multithreading Unit Tests / Integration Tests Linux Windows
Dortmund
5 Jahre 11 Monate
2001-01 - 2006-11

Entwicklung von 3D-Echtzeit Strategiespiel

Projektleiter, Entwickler, Software-Architekt C++ Qt3 Qt4 ...
Projektleiter, Entwickler, Software-Architekt
  • Weiterentwicklung des Prototyps eines 2D-Echtzeit Strategiespiels (Real Time Strategy Game, RTS), insbesondere Entwicklung von Mehrspieler Fähigkeit (TCP/IP).
  • Planung und Entwicklung einer modernen 3D Umsetzung auf Basis von OpenGL.
  • Planung und Entwicklung eines Frameworks für KI, einschließlich einer eigens entwickelten Script-Engine unter Verwendung von Python.

Die Game-Engine unterstützt bis zu 10 Spieler, die jeweils über Netzwerk/Internet oder als Computer Spieler (während des Spiels austauschbar) realisiert sein können. Das Spiel verwendet eine peer-to-peer Netzwerkarchitektur und stellt Event-basierte Szenarien bereit.

  • Ebenfalls geplant und entwickelt wurden zugehörige Tools zur Unterstützung des Model Designs sowie ein Level Editor.
  • Die Arbeit anderer Teammitglieder, etwa Sound-Artists, Graphik-Artists sowie Pathfinding- und Graphik-Entwickler wurde unterstützt und koordiniert.
C++ Qt3 Qt4 OpenGL lib3ds Python Perl libufo automake/autoconf CMake SVN PHP Linux
Dortmund
5 Monate
2006-01 - 2006-05

Performance Optimierung in Visualisierungs Anwendung

Entwickler Java Swing Linux ...
Entwickler

Verbesserung der Laufzeit einer Prozess-Visualisierungs Anwendung. Bei umfangreichen Datenmengen wurde die Anwendung aufgrund der existierenden Implementierung inakzeptabel langsam.

Die Optimierung hat die Laufzeit wichtiger Funktionen von einigen Minuten bis Stunden auf teils unter eine Sekunde gedrückt.

Java Swing Linux Windows
Dortmund
10 Monate
2005-01 - 2005-10

Buch zum Thema ?Open Source Game Development?

Koautor C++ Qt OpenGL ...
Koautor

Koautor von [Name auf Anfrage].

Das Buch ist eine Einführung in das Thema „Destop Games“ (d.h. „kleine“ Spiele heute wird der Begriff „Casual Games“ verwendet) mit Hilfe von Qt.

Word OpenOffice Latex
C++ Qt OpenGL Latex SVN
Dortmund
4 Jahre
2001-01 - 2004-12

Systemadministration in einer karitativen Jugendeinrichtung

Systemadministrator, Supporter
Systemadministrator, Supporter

Technische Betreuung (Einrichtung und Wartung) des Internet Cafes in einer karitativen Jugendeinrichtung.

Krefeld
3 Jahre 9 Monate
2001-01 - 2004-09

Netzwerk-Bibliothek für Multiplayer KDE Spiele

Entwickler, Software-Architekt C++ Qt KDE ...
Entwickler, Software-Architekt

Entwicklung einer Netzwerkbibliothek für Multiplayer Spiele im KDE Umfeld, basierend auf wahlweise Dedicated-Server oder Peer-to-Peer Architektur. Die Bibliothek wird sowohl Server- als auch Client-seitig von einigen KDE Spielen eingesetzt. Ebenfalls enthalten ist eine multi-Prozess basierte Unterstützung für KI Spieler.

C++ Qt KDE Linux CVS
Krefeld
1 Monat
2004-03 - 2004-03

Spieleentwicklung

Entwickler, Software-Architekt Java Swing UML ...
Entwickler, Software-Architekt

Planung und Entwicklung einer Umsetzung des bekannten „Halma“ Gesellschaftsspiels, mit Computerspieler (3 Schwierigkeitsstufen) Unterstützung. Das fertige Spiel hat in einem Wettbewerb mehrerer Konkurrierender Gruppen den 1. Platz belegt.

Netbeans Borland Together 6.1
Java Swing UML Unit Tests / Integration Tests Linux
Dortmund
1 Monat
2004-02 - 2004-02

Entwicklung von Verwaltungssoftware für Bibliotheken

Entwickler, Software-Architekt Java Swing UML ...
Entwickler, Software-Architekt

Planung und Entwicklung eines einfachen Verwaltungsprogramms für kleinere Bibliotheken. Das Programm ist darauf ausgelegt ein altes „Karteikarten System“ zu ersetzen.

Netbeans Borland Together 6.1
Java Swing UML Unit Tests / Integration Tests Linux
Dortmund
1 Jahr 7 Monate
2001-09 - 2003-03

Entwicklung eines Microcontroller basierten Smartcard Lesers

Entwickler, Software-Architekt C C++ Pascal ...
Entwickler, Software-Architekt

Planung, Entwurf und Entwicklung eines Smartcard Lesers mit Netzwerkanschluss auf Microcontroller (8051) Basis. Das Projekt umfasste den vollständigen Entwicklungsprozess, von Spezifikation der Hardware-Anforderungen und aktiver Unterstützung der hardwareseitigen Umsetzung, bis hin zur vollständigen Software Entwicklung. Das fertige Produkt enthält den entwickelten Smartdrive Treiber, die Netzwerk Protokoll Implementierungen (DHCP, HTTP) auf Standalone Device ohne Betriebssystem.

C C++ Pascal 8051 Keil C51 SDCC Atmel Beck DK40 SC12 IPC@CHIP Towitoko Smartdrive Samba Wiznet IIM7100 Linux Windows
Krefeld

Aus- und Weiterbildung

Aus- und Weiterbildung

2009

Diplom Informatiker, TU Dortmund

Kompetenzen

Kompetenzen

Top-Skills

embedded Bluetooth C++ Software-Entwicklung Linux C Qt Swift Android iOS Kotlin Java

Produkte / Standards / Erfahrungen / Methoden

Android Studio
Apache
autotools
automake, autoconf
Boost
CMake
Geofencing
git
Icinga
JNI
Nagios
OpenGL
pthreads
PyTest
Qt
Scrum
SSH
Subversion
SUOTA
SVN
Swift
VNC
Protokollimplementierung
WebKit
Xcode

Betriebssysteme

Android
iOS
Linux
Mac OSX
TI-RTOS
Unix
Windows
Windows 10

iOS/Android sind die häufigsten Zielsysteme für die ich entwickle, gefolgt von Linux, insbesondere Embedded Linux sowie für Server Backends.

Programmiersprachen

Bash
C
C#
Grundlagen
C++
C/C++
Go
Java
Objective-C
Im Bereich iOS für Bestandsprojekte. Für neue Projekte setze ich Swift ein.
Perl
Basiskenntnisse, verwende ich inzwischen kaum noch.
PHP
Python
Qt
Umfangreiche Kenntnisse, insbesondere im Desktop Bereich, in den meisten Modulen.
Shell
Swift

Mein fachlicher Schwerpunkt ist in der mobilen Softwareentwicklung (Android/iOS) mit Java/Kotlin, Swift/Objective C sowie ggf. C/C++.

Darüberhinaus habe ich umfangreiche Kenntnisse in der Entwicklung mit C/C++ im Bereich Server Backend sowie Desktop Systemen, insbesondere unter Linux. Sehr häufig setze ich hierfür Qt ein.

Datenbanken

MySQL
Postgres
PostgreSQL
sqlite

Datenkommunikation

Bluetooth LE
Internet, Intranet
JSON
JSON-RPC
REST
TCP/IP
VNC/RFB
Websockets
XMPP

Berechnung / Simulation / Versuch / Validierung

cpptest
googletest
PyUnit
Unit Tests / Integration Tests
Unit-Tests

Branchen

Branchen

  • Elektroinstallationstechnik
  • Maschinenbau
  • IT-Dienstleistungen
  • Software
  • Automotive
  • Medien & Entertainment
  • Medizintechnik
  • IT-Sicherheit
  • Luftfahrt

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.