Projekt: CAN-Bootloader Anpassung
Thema:
Ein im Quellcode vorliegender CAN-Bootloader musste auf ein bestehendes System angepasst werden.
Tätigkeit:
- Integration des Bootloaders in das Buildsystem.
- Anpassung des CAN-Bootloaders an die Zielhardware (NUC240).
- Implementierung der SPI Kommunikation des CAN-Bootloaders mit anderen Bootloadern im System.
Zeitraum: Dezember 2016
Kunde: Die Entwicklerschmiede GmbH & Co. KG
Projekt: Bootloader
Thema:
Für ein Consumer Produkt ist ein Bootloader zu entwickeln, bei dem es den Kunden besonders auf den Schutz des eigenen, in der Firmware steckenden Know-hows ankommt.
Tätigkeit:
- Entwicklung eines USB Bootloaders.
- Entwicklung eines UART Bootloaders.
- Buildsystem für den Bau krytographisch gesicherter Firmware-Updates.
- Implementierung der Display-Ansteuerung.
- Analyse von Problemen mit Bluetooth-Kommunikation.
Zeitraum: Juni 2016 - Juli 2017
Kunde: Unternehmen aus der Musikinstrumente-Branche
Werkzeuge:
- C++ (GCC), Make/CMake, git, ARM Cortex-M4
- STM32L4, BLE Sniffer, Wireshark, AES
Projekt: Neue Bluetooth LE Profile
Thema:
Der Kunde arbeitet als Mitglied der Bluetooth SIG an der Entwicklung neuer Bluetooth Low Energy Profile und bekommt dabei von mir Unterstützung in der Software- und Test-Entwicklung.
Tätigkeit:
- Entwicklung der Testspezifikation.
- Implementierung von Interoperable Prototypes für GATT Server.
- Implementierung von Interoperable Prototypes für GATT Client.
- Teilnahme am Interoperable Prototype Test Events.
Zeitraum: seit August 2015
Kunde: Unternehmen aus der Pharmabranche
Werkzeuge:
- C (Code Composer Studio), Subversion, ARM Cortex-M3
- CC2650, BLE Sniffer, Wireshark, Bluetoe, nRF52
- Noble, Coffeescript
- CMake, C++ (GCC und Clang), RCP, IDS
Projekt: Sensorlager
Thema:
Eine analoge Spannung und drei Beschleunigungen, die auf einer drehenden Welle gemessen werden, mussten aufgenommen und berührungslos (NFC) an ein Lager kommuniziert werden.
Tätigkeit:
- Entwicklung der Firmware für Lager- und Wellenelektronik.
- Implementierung der Anbindung des Lagers über CAN.
- Umsetzung eines CAN-Monitors zur Darstellung und Aufzeichnung von Messwerten.
- Implementierung der NFC-Kommunikation; in Teilen ISO 14443-3.
- Integration von Komponenten über SPI und I2C.
Zeitraum: Juni / Juli 2015
Kunde: Die Entwicklerschmiede
Werkzeuge:
- C++ (GCC; clang), Make/CMake, git
- ARM Cortex-M4, XMC4200
- STM8, stm8flash, SDCC
- Oszilloskop, Lötkolben, JLink PRO
- Tusa Board, PEAK CAN Interface
- Boost Fusion/MPL, Doxygen
Projekt: Neopulse
Thema:
Nach dem kompletten Hardware-Redesign eines medizinischen Geräts für die elektromagnetische Muskelstimulation musste auch die Firmware des Geräts komplett neu entwickelt werden. Das Design besteht aus zwei Mikrocontrollern, die über Funk, galvanisch getrennt, kommunizieren. Bedient wird das Gerät über Bluetooth LE. Die wesentliche Herausforderung bestand in der exakten Ansteuerung der Leistungselektronik bei gleichzeitiger Integration von nötigen Third-Party-Komponenten
Tätigkeiten:
- Design, Implementierung und Test der Firmware.
- Kleinere Hardware-Aufbauten für Tests.
- Begleitung der Hardware-Inbetriebnahme.
- Erweiterung der hausinternen Bibliothek um grundlegende Abstraktionen (GPIO, Timer).
Zeitraum: März 2015
Kunde: Die Entwicklerschmiede
Werkzeuge:
- C++ (GCC; clang), Make/CMake, git, ARM Cortex-M0
- Boost Test, BLExplr, nRF51422
- Oszilloskop, Lötkolben, JLink PRO
- Doxygen
Projekt: Firmware
Thema:
Für eine automatische Gangschaltung für Fahrräder und Pedelecs, bestehend aus mehreren Komponenten, die drahtlos miteinander kommunizieren, wurden Firmwaren entwickelt. Die Gangschaltung wählt selbstständig Gang und Schaltzeitpunkt anhand von Trittfrequenz, Kraft, Radgeschwindigkeit, Neigung und Beschleunigung. Über einen Schaltaktor können bestehende Ketten- und Nabenschaltungen angesteuert werden.
Tätigkeiten:
- Aufbau des Buildsystems, des Toolings und der Unit-Tests.
- Umsetzung der ANT-Kommunikation (Funk) inkl. Monitoring Tools.
- Implementierung drahtgebundener Kommunikations-Schnittstellen (SPI und RS-232).
- Implementierung einer automatischen, konfigurierbaren Gangschaltung.
- Anbindung der iOS-App über Bluetooth LE.
- Entwicklung eines BLE/ANT-Bootloaders inkl. Gegenstück (unter OS/X).
Zeitraum: August 2014 - März 2015
Kunde: Die Entwicklerschmiede
Werkzeuge:
- C++ (GCC; clang), Make/CMake, git, ARM Cortex-M0
- Boost Test, Boost MPL, Boost Fusion, Boost Unit
- BLExplr, nRF51422, OS/X, Objectiv-C, JLink PRO
- Doxygen, bash
Projekt: DC-Analyse
Thema:
Zur Analyse bestimmter Parameter bei der Bauteil-Auslegung elektronischer Schaltungen wurde ein System zur halbautomatischen Gleichstromanalyse geschaffen. Das Analyseergebnis kann in Latex oder Word dokumentiert werden.
Tätigkeit:
- Implementierung eines Netzlisten-Imports.
- Erstellung einer automatischen Bestimmung von Spannungen und Strömen im System.
- Implementierung einer Bauteilparameter-Prüfung.
- Automatische Erstellung der Prüfergebnisse.
Zeitraum: August 2014
Kunde: Die Entwicklerschmiede
Werkzeuge:
Projekt: Branding einer Telco-Verkaufsplattform
Thema:
Eine bestehende Verkaufsplattform für Telekommunikationsprodukte (Unitymedia.de) wurde auf das Branding von kabelbw.de angepasst.
Tätigkeiten:
- Diverse Fehlerbehebungen.
- Erstellung von Tests.
- Herausfaktorisierung von Brand-Abhängigkeiten.
Zeitraum: März - September 2014
Kunde: SinnerSchrader / Hamburg
Werkzeuge:
- Ruby on Rails, JRuby, factory_girl, Capybara,
- RSpec, Rake, Bundler, Selenium
- MySql, HTML, CSS, JavaScript
- git, Sublime, Kanban
Projekt: Feuerwehreinsatz
Thema:
Sporadisch und systematisch auftretende Fehler an Fahrscheinautomaten mussten untersucht werden und eine nachhaltige und zeitnahe Lösung gefunden werden.
Tätigkeiten:
- Analyse von Spannungsschwankungen in USV.
- Analyse von Kunden-Bug-Reports.
- Modernisierung einer Software-Entwicklungs-Umgebung für
- SuperH-Microcontroller (Umstellung auf GCC/Make/Eclipse).
- Modernisierung von C-Quellcode.
Zeitraum: Oktober 2013 - Dezember 2013
Kunde: Höft & Wessel AG
Werkzeuge:
- Bugzilla, Oszilloskop, MinGW, GCC-Cross-Compiler (SH-ELF),
- Make, Eclipse CDT, C/C++, Subversion, ARCnet, GNU Binutils
Thema: Produkterweiterungen und Fehlerbehebungen
Tätigkeit:
- Refactoring von gewachsenem C und C++ und C# Code.
- Entwicklung und Dokumentation von Testfällen.
- Fehlersuche auf Schnittstellen zu Geldscheinlesern.
- Lieferanten Fehlern in Produkten nachweisen und Behebungen einfordern und monitoren.
- C und C++ Code Reviews.
Zeitraum: August und September 2013
Kunde: Höft & Wessel AG
Werkzeuge:
- Visual Studio 2012, TFS, Subversion, Boost.Asio (RS232)
- Windows CE, Windows XP Embedded
- C/C++, C#, Bugzilla
Projekt: Dungeon Pilot; Online-Applikation für Rollenspieler
Thema:
Dungeon Pilot bietet dem Benutzer einen Karten-Editor, der komplett im Browser ohne Plugins läuft. Die Kommunikation mit dem Server läuft asynchron, sodass selbst bei zügigem Bedienen des Editors keine Wartezeiten für den Benutzer sichtbar werden. Über den Comet-Web-Server kann der Benutzer mehrere Computer miteinander verbinden, ohne selbst einen zentralen Server betreiben zu müssen.
Tätigkeiten:
- Gesamte Backend-Entwicklung.
- Datenbank Model. Architektur.
- Anbindung an Payment Gateways (Braintree und Paymill).
- Adaptierung von Rails an Comet Server.
- A/B Testing Framework.
- Continuous Integration Skripte; Cloud-Automatisierung.
- JavaScript / CoffeeScript Tests und Test-Automatisierung.
- Gesamte Frontend-Entwicklung; z.B. Rich Client Karten-Editor mit Undo / Redo und asynchroner Anbindung über AJAX.
- Layout-Umsetzung nach Vorgaben des Designers.
Zeitraum: Oktober 2012 - heute
Werkzeuge:
- Eclipse, Ruby, Rails, Rake, Thor, Bundle, MySql
- Kiel / Capistrano, Sioux, Twitter Bootstrap
- Amazon Web Services (AWS, EC2, RDS, LB, CloudFront, SES, Route 53, AS)
- right_aws, HTML, CSS, CoffeeScript, JavaScript
- git (Bitbucket), SSH, PhantomJS, Jasmine
- Google Chart Tools
Projekt: Sioux; Comet-/HTTP-Server
Thema:
Comet-/HTTP-Server in C++ implementiert, durchgängig multithreaded und mit asynchronem IO für hohe Skalierbarkeit.
Tätigkeiten:
- Erstellung eines Server-Designs, das HTTP-Pipelining mit Long Polling erlaubt.
- Umsetzung des HTTP 1.1- und Bayeux-Protokolls.
- Implementierung einer HTTP-Proxy-Komponente.
- Einfache Datei-Auslieferung.
- JSON Serialisierung und Deserialisierung.
- Mockups für boost-asio socket und timer.
- Rack Web Server handler als Ruby C extension.
- Implementiert wurde durchgängig mit TDD.
Zeitraum: April 2012 - September 2012
Werkzeuge:
- Eclipse, C++ (gcc; clang), git, Boost, Boost-asio
- OS/X, Linux, Doxygen, rake, rack, Ruby
Projekt: EVAplus; Weiterentwicklung des bestehenden Train Planning System (TPS) zu einer Datendrehscheibe für die Fahrplanauskunft.
Thema:
Im Auftrag der Deutschen Bahn wird das bestehende Fahrplanplanungs-Werkzeug TPS zu einer Datendrehscheibe für die unterschiedlichsten Fahrplandaten aus dem Personenverkehr erweitert.
Tätigkeiten:
- Implementierung eines Fahrplanimports aus dem NSS-Format der Deutschen Bahn nach EVAplus.
- Implementierung eines Fahrplanexports in das HAFAS-Rohdatenformat aus EVAplus.
- Optimierung bestehender TPS-Komponenten.
- Erweiterungen und Fehlerbehebungen an TPS.
Zeitraum: März 2011 - März 2012
Kunde: HaCon Ingenieurgesellschaft mbH
Werkzeuge:
- Eclipse, C++ (gcc; msvc), CVS, Mantis, boost, Qt
- linux (Ubuntu), Google-Perftool
Projekt: F125; Systemmonitoring und Redundanzmanagement von Brückenkomponenten
Thema:
Für die neuen Fregatten der Deutschen Marine wurden Erweiterungen bezüglich Verfügbarkeit und Redundanz am bestehenden Integrated Navigation System vorgenommen.
Tätigkeiten:
- Anforderungsanalyse und Spezifikation des Systemmonitorings und Redundanzmanagments.
- Konfigurierbare Abfrage von SNMP-fähigen Netzwerkkomponenten.
- Entwicklung und Implementierung einer DSL zur Beschreibung von Funktionsgruppen, Redundanzbeziehungen und der daraus resultierenden Verfügbarkeit.
- Überwachung der Brückenrechner und der darauf laufenden Prozesse.
- Implementierung einer automatischen Umschaltung von redundanten Komponenten.
Zeitraum: Oktober 2010 - Januar 2011
Kunde: Raytheon Anschütz
Werkzeuge:
- C++ (gcc), Doors, objectiF (UML), Subversion, Doxygen
- SNMP++, boost, boost spirit, linux (Ubuntu)
Projekt: Nautopilot 5000; Entwicklung eines Autopiloten für Schiffe ab 100 m Länge.
Thema:
Die bisherigen Modelle an genauen und hochgenauen Autopiloten wurden durch ein einziges Gerät mit einem einzigen Software-Stand ersetzt. Umgesetzt wurde das Projekt von einem kleinem Team bestehend aus ca. 7 internen und externen Mitarbeitern.
Tätigkeit:
- Anforderungsaufnahme aus Gesprächen mit Mitarbeitern, Analysen der bestehenden Software und aus Vorschriften der Zulassenungsbehörden wie dem BSH.
- Hardware/OS-Abstraktions-Layer für threading, files, timer, CAN-Bus und TCP/IP für jeweils Win32 und WinCE. Allgemeine Komponenten wie logging, timer, shared_ptr, function etc. (boost war nicht verwendbar).
- Umsetzung eines Protokolls für ausfallsichere Kommunikation auf einem redundant ausgelegten CAN-Bus.
- Implementierung des Software-Updates über USB-Stick und über CAN-Bus.
- Anbindung von Bedien-Clients über ein proprietäres Text-Protokoll via TCP/IP.
- Anbindung elektronischer Seekarten (ECDIS).
- Integration der bestehenden Kurs-, Kurs-Über-Grund- und Bahnregler.
- Sensor-Auswahl und Überwachung.
- Implementierung Dead Reckoning und Position Monitoring.
- Implementierung einer Drift-Schätzung.
- Code Reviews.
- Integration der Code Coverage Analyse in den Build-Prozess.
- PC und callstack sampler für WinCE zur Performance Analyse mit Google-Perftool.
- Anpassung der PC-Lint-Konfiguration an die Projektbedürfnisse.
- Sämtlicher Quellcode und Dokumentation wurde in Englisch erstellt.
Zeitraum: Juni 2008 - August 2010
Kunde: Raytheon Anschütz
Werkzeuge:
- Microsoft Visual Studio C++, Subversion, Doxygen
- UnitTest++, PC-Lint, Testwell CTC++ (code coverage)
- Doors, Windows Embedded, Win32, Winsock
- Bugzilla, CAN (IXXAT), UML (objectiF), Google-Perftool
Projekt: Nautosteer Service Tool
Thema:
Beim Kunden wurde für die Konfiguration von Schiffssteuerungskomponenten (Tiller, Feedback Unit, Ruder-Verstärker etc.) über CAN-Bus, intern, für die eigene Entwicklung ein grafisches Tool entwickelt. Um eigenen und fremden Service-Technikern das Werkzeug anbieten zu können, musste es deutlich stabiler und konfortabler gemacht werden
Tätigkeiten:
- Analyse der bestehenden, auf Windows Forms basierenden Software.
- Fehlerbehebungen und Erweiterung um neue Funktionalitäten.
Zeitraum: Mai 2008 - Juni 2008
Kunde: Raytheon Anschütz
Werkzeuge:
- C#, Subversion, CAN (IXXAT), Windows Forms
Projekt: vereine-mobil.de
Thema:
Entwicklung eines Online-Registrationsprozesses für eine Telecom-Vertriebsgesellschaft.
Tätigkeit:
- Datenbankentwurf, Implementierung Frontend / Backoffice
- automatisches Erstellen von Anmelde-Formularen als PDF-Anhang und Versand per EMail.
Kunde: c4society GmbH
Zeitraum: Dezember 2007 - Januar 2008
Werkzeuge:
- Ruby on Rails, mySQL, DBDesigner, Subversion
- PDF (pdf-writer), SMTP
Projekt: Financial-Rumors.de
Thema:
Financial-Rumors.de ist eine Browser-basierte Online-Wirtschaftssimulation, bei der Spieler mit einem virtuellen Startkapital starten, durch die Produktion und dem Handel von Gütern, Immobilien und Schiffen, versuchen können, ein virtuelles Vermögen zu erlangen.
Die Applikation basiert technisch komplett auf Ajax und Comet.
Der Benutzer hat damit eine Benutzererfahrung, wie sie sonst nur bei fat clients möglich ist. Benutzereingaben werden direkt auf dem Client validiert, Änderungen der Spielwelt werden ohne Zutun des Benutzers aktualisiert.
Tätigkeiten:
- Implementierung eines Comet Servers auf Basis eines (monkey) gepatchten Mongrel Servers.
- Entwurf eines Protokolls zur asynchronen Datenübertragung vom Server in Richtung Client.
- Publish/Subscribe Library (client- und Server-Seitig), die transparent Datenansichten vom Server auf den Client spiegelt.
- Library zur Beschreibung von Datenansichten, deren Parameter, ihren Daten-Quellen, und wie sie zu aktualisieren sind. Mit direkter Anbindung an Active Record ergibt dies echtes MVC.
- GUI-Library, zur einfachen Erstellung von Formularen auf Client Seite und zur einfachen Darstellung von Datenansichten (z.B. als Tabelle oder Grafik).
- Datenbankentwurf (~100 Tabellen).
- Implementierung der Applikationslogik in Ruby.
- Implementierung des Clients in JavaScript.
Zeitraum: Januar 2007 - März 2008
Kunde: Torrox GmbH & Co. KG
Werkzeuge:
- Ruby on Rails (RoR), JavaScript, mySQL
- Subversion, Eclipse, DBDesigner
- Linux (Suse), Ajax, JSON, Comet (HTTP push)
- mongrel, diverse Browser
Projekt: Entwicklung einer Betriebszentrale (BZ 2000) für die Deutsche Bahn
Thema:
In dem Projekt "Betriebszentralen (BZ)" der DB Netz AG wurden die bisher räumlich und personell getrennten Ebenen Steuerung und Disposition zusammengeführt. In den sieben Betriebszentralen werden alle Prozesse der Betriebsführung gebündelt und automatisiert. Damit überwachen die Betriebszentralen 15.000 km des 35.000 km langen Streckennetzes mit täglich 33.000 Zugfahrten und ermöglichen so eine neue Qualität der Betriebsführung.
Tätigkeiten:
- Entwicklung eines über Prozess- und Thread-Grenzen hinweg nutzbaren allocator, mit dessen Hilfe sich STL container über Prozessgrenzen hinweg nutzen lassen.
- Implementierung von threading Primitiven (mutex, read/write mutex, condition variable, semaphore), die sowohl Prozesse als auch threads synchronisieren.
- Zentrales locking und caching von Domain-Objekten in shared memory für Daten, die ansonsten in der Datenbank standen.
- Entwurf und Implementierung von objektorientierten Domain-Datenmodellen.
- OR-Mapper, Beschreibung von Daten-Änderungen in Form von Event-Klassen, die eine redundante Datenhaltung erlauben und genutzt werden, um geänderte Objekte mit nur sehr wenigen Datenbankzugriffen in die DB zu schreiben.
- Interprozesskommunikation inklusive Subscribe-Mechanismus für bestimmte Daten-Änderungen.
- Entwicklung von Querschnittskomponenten für logging, TCP/IP, threading,fixed size strings, framework für unit tests und mehr.
- Verteilung von Dispositions-Fahrplänen an Umsysteme; Pufferung und Akkumulieren von Fahrplanänderungen, wenn die abnehmenden Systeme nicht erreichbar sind. Eine priorisierte queue führt zu einer Versorgung mit aktuellen Daten unter sehr hoher Last.
- Für das Fahrzeug-Management der S-Bahn Berlin wurde eigens eine einfache Serialisierungs-Bibliothek geschrieben, um Fahrplan-Daten einfach über TCP/IP transportieren zu können.
- Verarbeitung von Zugstandortmeldungen.
- Zuglaufüberwachung.
- Zeitliche Überwachung von geplanten (Fahrplan-)Ereignissen.
- Räumliche Überwachung von Zugfahrten.
- Netzweite Suche nach alternativer Fahrweise, bei vom Fahrplan abweichenden Fahrweisen (Graphentheorie/Dijkstra).
- Suche nach kleinstmöglichen Änderungen bei der Anpassung von Fahrplänen.
- Wiederaufrüsten von Prozessdaten nach Doppelrechner-Umschaltung oder Systemstart.
- Profiling von eigenem und fremdem Code auf Prozess und Systemebene.
- code reviews (C++ und Java).
Zeitraum: Oktober 1999 - Dezember 2006
Kunde: Funkwerk IT (Konsortium BZ 2000: Funkwerk IT, Thales und Siemens)
Werkzeuge:
- C++, UML (OOA/OOD), Oracle-DB, Oracle-Designer
- OpenVMS, ClearCase, ClearQuest, Doors, Rational Rose
- TIBCO SmartSockets, PCA (Performance and Coverage Analyzer)
- MMS (Module Management System), Telnet, FTP
- Rogue Wave SourcePro, Rogue Wave STL, AlphaServer ES80/AS4100
Projekt: Wartung Rechnergestützten Zugüberwachung (RZÜ)
Thema:
Die RZÜ des Kunden war bei der Deutsche Bahn AG in den Standorten Hannover, Köln, Erfurt und Berlin als Dispositions- und Fahrplanplanungssystem eingesetzt. Meine Aufgabe war es, das mehrere Millionen Zeilen Quellcode große, verteilte System zu warten und funktional zu erweitern.
Tätigkeiten:
- Diverse Fehlerbehebungen.
- Funktionale Erweiterungen.
- Kundenbetreuung.
Zeitraum: Februar 1998 - September 1999
Kunde: Vossloh Systemtechnik GmbH
Werkzeuge:
- DEC Pascal, C/C++, DCL, CMS, OpenVMS
Projekt: Umstellungen von DECnet auf TCP/IP
Thema:
Bei der Rechnergestützten Zugüberwachung (RZÜ) wurden mehrere Kommunikationsbeziehungen zu Umsystemen von DECnet auf TCP/IP umgestellt.
Tätigkeiten:
- Identifikation der Kommunikationsbeziehungen.
- Implementierung eines TCP/IPDECnet-Umsetzers.
- Tool zum Monitoring bestehender Verbindungen und Konfigurationen.
Positiontion: Halbtags neben dem Studium
Zeitraum: August 1997 - Januar 1998
Kunde: Vossloh Systemtechnik GmbH
Werkzeuge:
- DEC Pascal, C, DCL, CMS, OpenVMS