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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Weiterentwicklung einer bestehenden Android App zur Geräteansteuerung mittels Bluetooth. Die Anpassung erfolgte analog zu einer vorangegangenen Anpassung für iOS.
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.
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.
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.
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.
Softwareentwicklung einer sicherheitsrelevanten Softwarekomponente für Drittfirma.
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:
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.
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.
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.
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.
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.
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.
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.
Administration der internen Netzwerk Infrastruktur einer Wohnanlage mit ca. 300 Appartements. Hierzu zählten
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.
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.
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.
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.
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.
Technische Betreuung (Einrichtung und Wartung) des Internet Cafes in einer karitativen Jugendeinrichtung.
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.
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.
Planung und Entwicklung eines einfachen Verwaltungsprogramms für kleinere Bibliotheken. Das Programm ist darauf ausgelegt ein altes „Karteikarten System“ zu ersetzen.
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.
2009
Diplom Informatiker, TU Dortmund
iOS/Android sind die häufigsten Zielsysteme für die ich entwickle, gefolgt von Linux, insbesondere Embedded Linux sowie für Server Backends.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Weiterentwicklung einer bestehenden Android App zur Geräteansteuerung mittels Bluetooth. Die Anpassung erfolgte analog zu einer vorangegangenen Anpassung für iOS.
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.
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.
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.
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.
Softwareentwicklung einer sicherheitsrelevanten Softwarekomponente für Drittfirma.
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:
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.
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.
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.
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.
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.
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.
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.
Administration der internen Netzwerk Infrastruktur einer Wohnanlage mit ca. 300 Appartements. Hierzu zählten
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.
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.
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.
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.
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.
Technische Betreuung (Einrichtung und Wartung) des Internet Cafes in einer karitativen Jugendeinrichtung.
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.
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.
Planung und Entwicklung eines einfachen Verwaltungsprogramms für kleinere Bibliotheken. Das Programm ist darauf ausgelegt ein altes „Karteikarten System“ zu ersetzen.
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.
2009
Diplom Informatiker, TU Dortmund
iOS/Android sind die häufigsten Zielsysteme für die ich entwickle, gefolgt von Linux, insbesondere Embedded Linux sowie für Server Backends.
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.