freelance-giosis.com

Projekte

Einsatz 11 2017 bis 03 2018 als Android Entwickler (Mainz / remote)

Überblick: Weiterentwicklung einer bestehenden Informations-App für Mitarbeiter des Kunden.

Stichwörter: Android, Java, Android Studio, gradle, Einsatz von starken Verschlüsselungstechniken.

Die bestehende Android Anwendung wurde um weitere Fragmente erweitert, die Informationen in Form von PDF Dokumente, Web Inhalte oder Listen (z. B. Mitarbeiter-Verzeichnis) anbietet.

Die vorgehaltenen Daten wurden vom Kundenserver regelmäßig bezogen. Wichtig war hier, dass die Daten nahezu komplett verschlüsselt im Android Gerät vorliegen.

Eine besondere Herausforderung war, dass gerade die Verschlüsselungsthematik sich auf unterschiedlichen Android Versionen und Geräten z. T. unterschiedlich verhält. Hier war eine intensive Ursachenklärung notwendig, bis eine angemessene Lösung entwickelt werden konnte.

Einsatz 08 2016 bis 12 2018 als Android und UI5 Entwickler (Frankfurt am Main).

Überblick: Bei meiner Arbeit handelt es sich um native Android Apps und Webanwendungen für den Desktop auf Basis von UI5 (Fiori), die von den Mitarbeitern des Kunden produktiv eingesetzt werden.

Der Kunde verspricht sich durch die Modernisierung der vormals SAP GUI-basierten Anwendungen eine Produktivitätssteigerung als auch eine schnellere Erweiterung der z. T. mobilen Anwendungen.

Stichwörter: Android, Android Studio, C++, JavaScript, OData, SAP Gateway, gradle, UI5

Inhalt der nativen Android-Entwicklung ist die Anbindung von Google Maps und die Visualisierung von unterschiedlichen Karten-Materialien des Kunden, wie z. B. Bahnhöhe, Bahnschranken, Brücken, etc. Diese Informationen werden über verschiedene Web Services bezogen und in einer SQLite Datenbank gespeichert. Dabei handelt es sich um ein Volumen von über 500 MB Rohdaten, was spezielle Anforderungen an den Downloads-Prozess (Download ist nicht nur via WLAN möglich), den Import-Prozess in die Datenbank und auch an die Visualisierung auf der Karte stellt. Durch Anwendung von verschiedenen Filter-Mechanismen (z. B. Berücksichtigung der Zoom-Stufe der Karte) werden entsprechend mehr oder weniger Daten angezeigt. Unter durchgängigen Einsatz von Streams wird der Speicherverbrauch möglichst niedrig gehalten.

Mit dem <Bolts> Framework wird eine stabile Struktur zur asynchronen Verarbeitung der Prozesse gewährleistet, inkl. Fehlerbehandlung, Abbruch und Weiterführung der Vorgänge.

Bei den Webanwendungen geht es um die Entwicklung von komplexen UI5 web apps und der Anbindung von SAP Gateway Services. Die web apps erreichen mittlerweile den Umfang von nativen Desktop Anwendungen. Dabei handelt es sich um aufwendige Vorgänge, die ehemals in der SAP GUI stattfanden und nun effizienter mit modernen Interaktionen aus der modernen UI / UX Welt durchgeführt werden können.

Entwicklung eines auf <epoll> basierten servers in modernem C++14 um Nachrichten an UI5 apps senden zu können. Ich habe zwei Entwicklungswege genutzt: die vereinfachte Version mittels <SSE> (server-sent events) und eine komplexere Variante auf Grundlage des <WebSocket> Protokolls.

Einsatz 10 2015 bis 06 2016 als C++ / Qt und Android Entwickler (Aschaffenburg).

In einer bestehenden Android App auf Basis von C++ / Qt entwickelte ich neue Features in C++ und nativem Android Code (Java). Bei der Software handelt es sich um eine Verwaltungs-App für Außendienst-Mitarbeiter zur Wartung und Inspektion von Stadtwerke-Anlagen.

Der Bestandscode (in C++) ist an manchen Stellen zum Teil älter als 15 Jahre alt (manche Module sogar noch aus Mitte der 90er – Kenner wissen, was ich damit meine), sodass ich mich mit unterschiedlichen Programmier-Stilen und C++ Standards auseinandersetzen musste. Ein generelles Refactoring war nicht gewünscht da der Code (berechtigt) über die Jahre fehlerbereinigt werden konnte.

Einsatz 05 2015 bis 12 2015 als C++ / Qt und Android-Entwickler (Siegen).

Überblick: Folgeauftrag <UI für Time-of-flight Kameras>

Stichwörter: Qt5, C++11, QML, Cross Plattform-Entwicklung, git.

Redesign einer bestehenden UI mit Qt5 + QML, inkl. Sicherstellung der Funktionalität unter Android, iOS, GNU/Linux, Mac OS X und Windows. Die Hauptarbeit wurde mit C++11, Qt5 und QML realisiert. Es wurden komplexe UI Widgets in Qt entwickelt, um eine moderne und auf allen Plattformen einheitliche Darstellung zu gewährleisten.

Es wurde ein grafisches Qt Control entwickelt, welches dem Interface des <Quartz Composers> nachgebaut wurde, inkl. Animationen und Effekte. Das Control wurde eingesetzt, um Netzwerke von digitalen Bildverarbeitungsfiltern interaktiv zu bauen und zu konfigurieren. Die Netzwerke wurden in ein binäres Format umgewandelt, welches von der Kamera-Software des Kunden interpretiert wurde und eingesetzt werden konnte.

Einsatz 04 2015 bis 06 2016 als iOS und Java Entwickler (Frankfurt am Main).

Überblick: Native iOS Lösung für das iPad zur Unterstützung des Verkaufsprozesses in Autohäusern. Anschließend unterstützte ich das Team in der Backend-Entwicklung, welche in Java erfolgte.

Stichwörter: iOS, Objective-C, Bolts Framework, Apiomat, Java, Eclipse.

Bei der Entwicklung ging es im Kern um die Umsetzung einer hoch spezialisierten Design-Vorgabe in enger Absprache mit der Design-Agentur. Dies war auch notwendig, denn es gab zahlreiche Muster, die Sonderlösungen den Einsatz von Core Animation und aufwendigen Tricks mit UIKit erforderlich machten.

Die Anbindung an das backend erfolgte über die Middleware Apiomat, welches in Abstimmung mit dem Hersteller stattfand.

Es wurde mit den neuesten Objective-C Technologien entwickelt. Neben dem Einsatz von high level frameworks wie z. B. Bolts war es dennoch notwendig, bis auf libdispatch Ebene zu debuggen oder aber mit Instruments nicht optimale UI Pfade zu optimieren.

Nachdem das iOS Team verstärkt wurde und in der Backend-Entwicklung weitere Entwicklungsarbeit notwendig war, wechselte ich meine Rolle als Java Backend-Entwickler, um die oben genannte Middleware voran zu treiben. Hier kam hauptsächlich Java 8 mit Eclipse und maven zum Einsatz.

Zeitgemäße Entwicklungs-Methodik im Scrum-Modus mit einer Vier-Augen-QA nach jedem commit in Richtung develop branch.

Einsatz 09 2014 bis 02 2015 als C++ / Qt und Android-Entwickler (Siegen).

Überblick: Entwicklung einer Cross Plattform-Anwendung zur Visualisierung von Daten einer Time-of-flight Kamera.

Stichwörter: Qt 4.8.x, C++11, 3D Kameras, digitale Bildverarbeitung, Visual Studio 2013, CMake, Android NDK, GLSL Shader.

Bei der Anwendung geht es um die Verarbeitung und Visualisierung von Messdaten in Form einer 3D Punkte-Wolke. Die Aufnahmen erfolgen mit einer 3D Kamera, nach dem <Time-Of-flight> Prinzip.

Meine Aufgabe war es, die Visualisierung der Punkte-Wolke in einer hohen Qualität wiederzugeben. Unter Einsatz von Algorithmen aus der digitalen Bildverarbeitung in GLSL und diversen Vorverarbeitungs-Algorithmen (in C++) ist mir dies gelungen. Hierbei ging es hauptsächlich um das Filtern von Sampling Fehlern, Streupixel, etc.

Entwicklung von spezialisierten Qt Widgets zur Interaktion mit der Punkte-Wolke und zur Ansteuerung der Verarbeitungskette (Shader, Algorithmen-Parameter, Filterung von Mess-Fehlern usw.).

Anschließend wurde eine Anbindung der Kameras an Android Tablets mit dem NDK und libusb durchgeführt.

Umsetzung der Visualisierung auf Android-Systemen mit OpenGL ES 2 und dem Android SDK. Die Hauptarbeit wurde mit Visual Studio 2010 und 2013 realisiert. Als Konfigurations- und Build-Tool wurde CMake verwendet.

Native Android Entwicklung in C++ mit dem NDK.

Einsatz 05 2014 bis 08 2014 als iOS-Entwickler (Frankfurt am Main).

Überblick: Mitarbeit an einer nativen iPhone App (Gelbe Seiten).

Stichwörter: Klassisches iOS Entwicklung, Objective-C

Beratung und Umsetzung von Software-Komponenten für die Gelbe Seiten iPhone App. Der größte Teil meiner Arbeit beinhaltete die Umsetzung eines iPhone-ähnlichen Dashboards, auf welchem Icons abgelegt, gelöscht und bearbeitet werden, bzw. per Drag And Drop zu Gruppen zusammengefasst werden können. Die Interaktion und Animation sollte dabei möglichst dem iPhone-Dashboard entsprechen.

Die Entwicklung wurde mit Objective-C und diversen Frameworks des iOS SDKs umgesetzt.

Einsatz 03 2014 bis 12 2014 als Web-, Backend-, iOS- und Android-Entwickler (remote).

Überblick: Full-Stack Entwicklung eines App-Generators.

Stichwörter: JavaScript, Objective-C, Android, Java, C

Design und Umsetzung einer Web Anwendung zur Content-Verwaltung von Web-Inhalten für mobile Apps. Hierfür habe ich ein innovatives Bedienkonzept in HTML5/CSS, d3.js und jQuery entwickelt. Im Prinzip wird ein interaktiver Graph dargestellt, dessen Knoten Web-Inhalten entsprechen. Unterschiedliche Knoten erforderten die Umsetzung von spezialisierten Editoren (z. B. Text-Editor, Bilder-Galerie, usw.). Via Drag and Drop konnte die Navigationsstruktur der App verändert werden.

Entwicklung der Backend Software in Common Lisp, um die Business-Logik der Web Anwendung zu realisieren.

Entwicklung eines optimierten CGI Programms in ANSI C für Apache, um die Kommunikation zwischen Web App und backend herzustellen. Die Wahl für CGI wurde aufgrund der Einfachheit der Umsetzung getroffen. Darüber hinaus vereinfachte die nicht-öffentliche Nutzung der Web Anwendung weiterhin.

Entwicklung des nativen Android und iOS App Containers mit Einsatz von Standard SDK Frameworks.

Mit dem entwickelten System werden die mobilen Inhalte der jährlichen Kunden-Events (Lighthouse Festival, Technoball, u. a.) verwaltet und veröffentlicht.

Einsatz 09 2013 bis 02 2014 als C und iOS Entwickler (Frankfurt am Main).

Überblick: Mitarbeit an einer nativen iPad App für Versicherungsmakler.

Stichwörter: Objective-C, OpenGL, 3D / lineare Algebra

Entwicklung einer 3D Engine in ANSI C auf OpenGL ES 2 Basis, um komplexe 3D-Diagramme aus der Versicherungsbranche wiederzugeben.

Intensive Nutzung von linearer Algebra zur Erstellung von Verfahren zur Abbildung von Touches (2D) in den Raum (3D). Dies ermöglichte das Interagieren mit den Diagrammen auf dem iPad.

Entwicklung eines Objective-C wrappers, damit die Engine als Komponente in iOS Apps mehrfach eingesetzt werden kann.

Entwicklung eines Wavefront Converters in Common Lisp, um 3D-Modelle aus Blender in das Engine-spezifische Format zu transformieren, d. h. das Ausgabeformat ist auf vorher ermittelte Vertex Buffer Formate abgestimmt, um optimale render performance zu erzielen.

Entwicklung von GLSL shadern um visuelle Effekte gem. Abstimmung mit den Visual Designern zu erreichen, z. B. Antialiasing, Körnung, etc.

Mitarbeit an der gesamten App-Entwicklung in Objective-C, Core Animation, Core Data und weiteren iOS Frameworks.

Team-Arbeit im Scrum-Modus, mit wöchentlichen Sprints.

Hoch optimierte low level C und OpenGL ES Entwicklung.

Entwicklung von GLSL Shader Programmen.

Ältere Projekte

Web-, Android- und iOS-Entwicklung einer Werbe-App.

Entwicklung nativer App-Container für das iPhone (in Objective C) und für Android Geräte (in Java).

Entwicklung der eigentlichen App mit Hilfe von JavaScript / CSS3 und HTML5 Technologien. Als Frameworks kamen jQuery und d3.js (Visualisierung von Diagrammen) zum Einsatz.

Die Einbindung von Flurry für iOS und Android diente zur Sammlung von Nutzungsdaten, während push notifications mit der Integration von Urban Airship ermöglicht wurde.

Die Auswahl der Frameworks und Technologien wurde in Absprache mit dem Kunden durchgeführt.

Die Apps wurden als Marketingkampagne für das Red Bull SummerSplash Event eingesetzt.

Einsatz 07 2013 bis 09 2013

iOS App Entwicklung einer Umfrage-App für die IAA Messe.

Kurzer Einsatz wegen zeitkritischem Event (IAA 2013).

Das Design wurde vom Kunden vorgegeben. Das Datenmodell wurde mit Hilfe von Core Data abgebildet (Fragen und mögliche Antworten). Über eine NSString Kategorie konnten Umfragen als CSV Dateien für Auswertungen exportiert werden.

Einsatz 08 2013 bis 08 2013 bei einer Werbeagentur in Schwalbach.

C# App Entwicklung einer Umfrage-App.

Entwicklung einer Umfrage-App zur Unterstützung der Markteinführung einer neuen Zahnpflege-Marke. Es handelte sich hierbei um einen Fragebogen zur Zahngesundheit. Die Daten wurden in einer lokalen Datei gesammelt und in Form von CSV Zeilen gespeichert. Die Entwicklung wurde komplett in C# realisiert. Das Design wurde vom Kunden vorgegeben.

Einsatz 04 2013 bis 04 2013.

[08.2012 – 01.2013] Hardware-Hersteller, München

iPad Entwicklung

Eine iPad-Anwendung zur Steuerung einer Filmkamera im Profi-Umfeld.

Die Kamerasteuerung ermöglicht dem Kunden aus der Ferne Aufnahmen zu starten, zu stoppen, Kamera-Logs auszuwerten u. v. m.

Die Kommunikation zwischen Kamera und iPad erfolgte in Form eines kundenspezifischen Binärprotokolls, das in C realisiert wurde.

Um dem Profi-Audio/Video-Umfeld gerecht zu werden, wurden spezialisierte iOS Controls wie z. B. Drehregler oder Digital-Anzeigen in nutzerorientierter Optik programmiert.

Bei diesem Projekt erfolgte eine sehr enge Abstimmung mit dem Kunden, da zur Entwicklung nur die Simulationsumgebung zur Verfügung stand und die Tests erst auf dem Gerät des Kunden durchgeführt wurden.

[02.2011 – 06.2013] Software-Dienstleister, Walldorf

Web-, iOS-, Android-Entwicklung, Projekt-Coaching

Januar 2013 – Juni 2013

Ich war Teil eines Entwicklungsteams, welches die ersten Anwendungen im SAP Fiori Stil entwickelte. Wir begleiteten teilweise die Entwicklung von UI5 und realisierten damit erfolgreich Anwendungen. Im Rahmen des Projekts wurden verschiedene SAP Business Prozesse wie z. B. die Verwaltung von Urlaubsanträgen oder Reisekosten-Abrechnungen umgesetzt. Die Entwicklung wurde mit JavaScript und deklaratives HTML realisiert.

November 2012 – Dezember 2012

Entwicklung einer App für die damals neue Blackberry 10 Plattform, teils webbasiert, und teils nativ. Der native Teil bestand aus einem C-Kern, um bestimmte Verschlüsselungsfunktionen des Gerätes zu verwenden. Die Hauptanwendung verwendete diese und rief sie via eines JavaScript Protokolls auf. Bei der Anwendung handelte es sich um die Darstellung von Finanzdaten, die in Form von Tabellen dargestellt wurden. Dies wurde mit JavaScript realisiert.

August 2012 – Oktober 2012 Ich war Teil des Teams, das beim wichtigsten Kunden des Auftraggebers vor Ort an der Entwicklung von nativen App-Containern und Web-Anwendungen beteiligt war. Damals wurden wichtige Grundlagen für die spätere Akzeptanz von UI5. Meine Hauptaufgabe war die Vorstellung und Umsetzung eines nativen App Containers auf der iOS Plattform.

Mai 2012 – August 2012

Es entstand ein Prototyp mit Hilfe von Cocos2D für einfache Spiele zur Konzentrationsförderung und zur Steigerung der Reaktionsfähigkeit. Der Auftrag erfolgte durch einen namhaften Fußballverein (Sponsoring vom Auftraggeber). Die Vorgaben wurden vom entsprechenden Sportmediziner des Vereins gegeben und umfassten die Anbindung des Microsoft Kinect Controllers zur Steuerung der iPad Spiele. Die Entwicklung des Kinect Servers wurde von einem Kollegen mit C# realisiert. Das Kommunikationsprotokoll wurde in Kooperation mit dem C# Entwickler umgesetzt.

Januar 2012 - April 2012

Ich arbeitete an der SAP Visual BI iPad Anwendung mit. Die Software ermöglicht auf einfache Weise, komplexe BI Reports auf dem iPad verständlich wiederzugeben. Dafür realisierte ich einen MDX Parser, um die internen Statements zu analysieren und die entsprechenden UI Aktionen auszuführen bzw. die Daten darzustellen.

August 2011 - Dezember 2011

Ich erstellte ein Web-Framework, welches dem UIKit Framework von Apple sehr ähnlich war. Dies ermöglichte meinem Kollegen und mir eine Web-Anwendung für das iPad zu realisieren, die sich sehr einfach programmieren ließ. Der Kunde beauftragte uns mit der Entwicklung eines Analyse-Tools für SAP Opportunity Objekte. Die sehr zeitgemäße UI verwendete durch kluge CSS Regeln fast ausschließlich die Hardware-beschleunigten Zeichenpfade des iPads. Der Grund für das Apple ähnliche Web Framework kam vom Kunden, da die Vorgabe war, eine Anwendung zu bauen, die vom Look and Feel exakt den damals gängigen iPad Apps entsprechen sollte.

Februar 2011 - Juni 2011

Ich war mit der Entwicklung der ersten Version der Manager Insight iPad App beauftragt. Dazu gehörte die Vorstellung einer App-Architektur und Umsetzung der beschriebenen Komponenten. Durch zahlreiche Custom Controls wurden die Vorstellungen der Designer erfüllt. Die Anbindung von SAP HR Bausteinen wurde via SOAP Services vorgenommen. Die Entwicklung der App erforderte eine genaue Kenntnis und Interpretation komplexer XML Strukturen. Das Projekt verlief in enger Kooperation mit den Visual Designern und wurde mit Hilfe der SCRUM-Methode in zweiwöchigen Sprints durchgeführt.

[12.2010 – 02.2011] Software-Dienstleister, Frankfurt am Main

iOS Entwicklung

Unter Vorgabe eines Designs wurde eine Universal App (für iPhone und iPad) für die Steuerung von Heizungsanlagen realisiert. Die Entwicklung basierte auf Basis-Technologien des iOS SDK. Die Anbindung an die Heizungsanlagen erfolgte mit Hilfe von SOAP Services. Dafür wurden die entsprechenden XML Parser und das daraus resultierende Datenmodell gebaut.

[04.2010 – 06.2013] Pharmaunternehmen, Bad Vilbel

iPad Entwicklung

Design, Beratung und Entwicklung einer iPad App zur Verkaufsunterstützung von Außendienst-Mitarbeitern.

Die UI wurde in Abstimmung mit einem Designer und dem Kunden realisiert.

Die Entwicklung beinhaltete, u. a. folgende Punkte:

  • Datenmodellierung und Abbildung mit Core Data.
  • Hoch optimierte XML Parser in C mit Hilfe von memory mapped files, da die klassischen Techniken zu langsam oder speicherhungrig waren. Die App verarbeitet XML Dokumente von mehreren Hundert MB, auf älteren iPad 2 Geräten.
  • Klassische iPad UI Entwicklung und Netzwerk I/O.

Einsatz 08 2010 bis 11 2010 als iOS Entwickler (Dreieich).

Entwicklung einer iPad Anwendung für einen Endkunden aus dem Automobil-Bereich. Die UI basierte auf den Frameworks UIKit und Core Animation. Da zahlreiche, hochaufgelöste Medien (Bilder, Videos) zum Einsatz kamen, stelle dies besondere Anforderungen an der UI Umsetzung.

Die Anbindung an die Backend-Webservices wurden mit den Standard-Lösungen des iOS SDK realisiert (NSMutableURLRequests, NSURLConnection, NSXMLParser zum Interpretieren der empfangenen Daten).

Analyse mit Hilfe von Instruments, da die aufwendigen Grafiken die damaligen iPads ausgereizt hatten. Mit den Erkenntnissen wurden Code-Strategien realisiert, um den Speicherverbrauch zu reduzieren.

Einsatz 05 2010 bis 12 2010 als iOS Entwickler (München).

Der Schwerpunkt meiner Mitarbeit an der MINI Connected App (im Apple App Store verfügbar) lag in der Realisierung des Radio Streaming-Clients und des Fahrt-Analyzer, der Fahrleistungen (Verbrauch, Brems-Verhalten) visuell (mit Hilfe eines vorgegebenen gamification Konzepts) darstellt.

Bei der Anwendung kamen zahlreiche Unit-Tests zum Einsatz, um die relativ komplexe Anwendung zuverlässig testen zu können.

Einsatz 06 2010 bis 07 2010 als iOS Entwickler (Darmstadt).

Bei diesem Projekt leistete ich Entwicklungs-Support bei der Erstellung der mobile.de App v1.0. Meine Arbeit beinhaltete die Umsetzung des Datenmodells mit Hilfe von Core Data und die Unterstützung des Hauptentwicklers.

Einsatz 06 2010 bis 08 2010 als iOS Entwickler (Singen).

Entwicklung einer kostenpflichtigen Wetter App. Die Umsetzung der UI wurde mit Hilfe von UIKit realisiert. Es handelte sich um eine sehr bekannte App, die für lange Zeit in den oberen Rängen des stores angesiedelt war.

Im Projekt ging es hauptsächlich um Standard iOS Entwicklung.

Einsatz 03 2010 bis 05 2010 als C++ Entwickler (Weiterstadt).

In diesem Kurzprojekt wurde ich für Korrekturen von OpenGL-Softwarefehlern in einer bestehenden Video Post Processing Software für GNU/Linux eingesetzt. Da ich mit dem Quellcode aus der Vergangenheit vertraut war, konnte der Einsatz in kurzer Zeit abgeschlossen werden. Im Anschluss erfolgte eine Anbindung der ffmpeg library zur Unterstützung eines bestimmten Video Codecs. Das Debugging wurde mit GNU/gdb durchgeführt.

Einsatz 02 2010 bis 03 2010 als Projekt Coach (Bremen).

Ich wurde für eine kurze Zeit zur Unterstützung interner Mitarbeiter bei der Anwendungs-Entwicklung für das iPhone im Allgemeinen sowie Entwicklungs-Support für ein laufendes iPhone Projekt eingesetzt.

Einsatz 08 2009 bis 12 2009 als iOS Entwickler (Darmstadt).

Das Telekommunikationsunternehmen wünschte eine Anbindung des iPhones an ein SAP CRM System. Dafür wurden bestimmte RFCs bzw. BAPIs als Webservices (SOAP) zur Verfügung gestellt.

Die Beschreibung der Services lag in WSDL-Dateien vor. Hierfür entwickelte ich einen parser in Common Lisp, der die WSDL-Dateien in Lisp-Code umwandelte, welcher wiederum Objective-C Code generierte. Damit ließen sich die Webservices sehr schnell und einfach in das iPhone-Projekt einbinden.

Anschließend wurden alle notwendigen grafischen Benutzerschnittstellen entwickelt mit Hilfe von Standard iOS Frameworks.

Einsatz 05 2009 bis 07 2009 als iOS Entwickler (Berlin).

Der Schwerpunkt der Mitarbeit an den Prototypen für eine iPhone Kommunikations-Software lag in der Realisierung der Audio Routinen, um Daten zu streamen, über das Netz zu versenden und zu empfangen und Aufnahmen über das Mikrofon zu machen, sowie in der GUI-Entwicklung und der Durchführung von Fehlerkorrekturen. Hierbei handelte es sich um einen Prototyp, da der Kunde die damals Ideen auf die relativ neue iOS Plattform evaluieren wollte. Bei diesem Projekt konnte ich meine Core Audio Erfahrungen aus dem parallel laufen Mac OS Projekt einsetzen.

Einsatz 02 2009 bis 05 2009 als iOS Entwickler (Singen).

Der Auftrag beinhaltete die Entwicklung eines Wetter-Programms inkl. Vorhersage, Radar, Karten-Overlays und Videostreaming. Die Kommunikation mit dem Wettersystem basierte auf einfachen Webservices, die XML-Daten austauschten. Das Ganze wurde als Weather App (kostenfrei) v1.0 im App Store veröffentlicht und war monatelang unter den ersten drei Plätzen. Zur Entwicklung wurden die Standard Frameworks vom iOS verwendet.

Einsatz 10 2008 bis 06 2009 als iOS Entwickler (Baden-Baden).

Die Erstellung einer Radio Streaming App für das iPhone umfasste die komplette GUI-Entwicklung, das Design und die Implementierung des Kommunikationsprotokolls zwischen SWR3 Server und App.

Es waren sehr aufwendige Analysen notwendig, da zu diesem Zeitpunkt kein Instruments zur Verfügung stand und das Problem des hohen Speicherverbrauchs ("gestreamte Audiodaten in Echtzeit abspielen") gelöst werden musste.

Zu diesem Zweck instrumentierte ich u.a. libc Funktionen, um entsprechende Auswertungen über den Systemzustand zu erstellen.

Die App war der Rahmen für eine eingebettete Web Anwendung, welche News, Informationen, Play-Listen, uvm. beinhaltete. Dafür habe ich einen Web Service für den Versions-Abgleich, einen Download-Mechanismus der Inhalte und ein zlib Interface zum Entpacken der Daten realisiert.

Das Streaming basierte auf einen eigens entwickelten Ringpuffer, welcher Core Audio stets mit Daten versorgte.

Einsatz 09 2007 bis 09 2008 als Java und C++ Entwickler (Frankfurt am Main).

Für eine Makler-Software im Bereich Designated Sponsoring wurde eine Server-Komponente in Java programmiert, um Referenz-Märkte und Quoten-Daten zu verwalten. Die Client-Komponente wurde mit Swing, ebenfalls in Java realisiert. Die Datenverwaltung wurde mit Hilfe von SQL Statements an die darunter liegende Oracle-Datenbank umgesetzt.

Debugging der dazugehörigen C++ Server-Komponenten, die von Kollegen entwickelt wurden.

Eine bereits existierende Anwendung sollte das Xetra-Handelssystem nahtlos unterstützen. Bisher dahin wurde nur das XONTRO-System verwendet. Dazu waren Anpassungen und Erweiterungen an der Swing-GUI und in darunter liegende Subsysteme der Anwendung notwendig.

Performance-Analysen beim Kunden (vor Ort am Börsenplatz) mit dem Netbeans Profiler halfen bei der Identifikation von bottlenecks.

Als Entwicklungsumgebung diente eine Kombination aus Emacs, Netbeans und Borland JBuilder. In der mittleren Phase des Projekts wurde insbesondere mit Oracle SQL gearbeitet, um die Grundlage und den Zugriff auf Tabellen für den Prototyp der neuen Anwendung zu testen.

Alle Projekt-Bestandteile wurden strikt nach dem Wasserfall-Modell ausgeführt. Ich war in den Phasen Entwurf, Implementation und Überprüfung beteiligt. In der Überprüfungs-Phase habe ich jedoch nicht meine Komponenten, sondern die von Kollegen geprüft.

Einsatz 05 2007 bis 12 2009 als Software-Entwickler im Bereich Objective-C unter Mac OS X (Mainz).

In 2007 entwickelte ich eine Software, um den Bildschirminhalt eines Macs als Video, inklusive aller möglichen Audio-Kanäle und Videokameras in Echtzeit aufzunehmen.

Die Software nutzte zur Aufzeichnung und Komprimierung von Video- und Audiodaten Komponenten des Mac OS X Systems (QuickTime, OpenGL und Core Audio). Um Audio-Daten zu grabben, wurde ein Kernel-Modul (.kext) in C++ programmiert.

Alles zusammen stellte sehr hohe Anforderungen an den Mac und es musste sehr gründlich entwickelt werden, um eine geeignete Performance zu erreichen. Dazu waren diverse Algorithmen notwendig um u. a. die Mehrkern-Funktionalität optimal auszunutzen.

Die Kooperation mit dem Kunden beschränkte sich auf den Vertrieb der Software. Bis Dezember 2009 wurde die Anwendung von mir gepflegt und erweitert.

Einsatz 11 2005 bis 08 2007 als Software-Entwickler im Bereich C++ Entwicklung (Weiterstadt).

Der Kunde beauftrage die Entwicklung und das Design einer grafischen Benutzeroberfläche für einen Pro A/V Mischer (ein aufwendiges Gerät zum Mischen und Regeln von Audio- und Video-Signalen in Echtzeit, genauer: https://de.wikipedia.org/wiki/Mischpult).

Ein Touch-Display diente zur Steuerung der Oberfläche. Um die komplexen Abhängigkeiten des Video-Mischers auf der UI-Seite in den Griff zu bekommen, wurde ein Publish/Subscribe Mechanismus eingeführt. Für die Entwicklung der UI entstand ein spezialisiertes Framework auf Basis von FLTK. Die gesamte Anwendung wurde in C++ programmiert.

Zur Optimierung des speziell angepassten Window Systems MicroWindows wurden Performance-Tests durchgeführt.

Die GNU/Linux Treiberentwicklung für Peripherie-Chips (Video Pixel-Decoder und Encoder) erfolgte in C.

Mitarbeit am Design und Konzeption user interfaces mit einer externen Design-Agentur. Hierzu musste ich dafür sorgen, dass die UI mit den Hardware-Gegebenheiten optimal umgesetzt werden konnte (z. B. Pixelformat in RGB 5:6:5 mit einem softwaregestützten Alpha-Kanal).

Zum Projekt gehörte die Realisierung von Testsoftware für EEPROM-Chips und Video Pixel-Decoder und Encoder, sowie Code-Erweiterungen und Bugfixing des darunter liegenden X11-Servers und Anpassung des Touchscreen-Treibers.

Einsatz 04 2005 bis 10 2005 als Software-Entwickler im Bereich hardwarenahe C Entwicklung (Dreieich).

Für einen Auftraggeber des Kunden wurde ein Lastenheft entwickelt, um den Einsatz des firmenspezifischen Grafik-Controllers (GPU) zu unterstützen. Die Software-Demonstration arbeitete auf einem embedded System einer MPC5200 CPU (PowerPC).

Die Demo-Software wurde in C mit Hilfe einer eigens entwickelten 3D Engine, die abgestimmt auf die Hardware war, entwickelt.

Zu dem Auftrag zählte ebenfalls die Umsetzung von grafischen 3D Effekten wie z. B. toon shading. Damals wurden noch keine Shader eingesetzt, bzw. die vorhandene Hardware unterstützte diese nicht.

Einsatz 11 2002 bis 03 2005 als Software-Entwickler im Bereich hardwarenahe C- und C++ Entwicklung (Geisenheim).

Erster Aufgabenbereich: Assembler, C, C++ Entwicklung (Projekt OPUS-A2)

Als hauptverantwortlicher Software-Entwickler für die Plattform OPUS A2 (Bedienterminal für Landfahrzeugmaschinen) konzipierte ich die Architektur und setze die Entwicklung des Software-Stacks (BIOS, API) und der Basis-Software (das eigentliche Betriebssystem zum Verwalten von System-Ressourcen). Die Entwicklung wurde in Assembler (primär für den bootloader und spezialisierte Routinen zur Hardware-Anbindung) und in C realisiert.

Entwicklung einer Grafikbibliothek zum Zeichnen von Linien, Kreisen und gefüllten Flächen. Schnelle Blitter wurden mit Hilfe von hardwarenahen Assembler Code realisiert. Die Zeichenalgorithmen basierten auf Festkomma-Arithmetik und diversen Lookup-Tabellen um sich wiederholende Berechnungen vorzuhalten.

Im Zuge des Projekts wurden Treiber für verschiedene Peripherie-Chips (z. B. RS-232 / UART, SPI, I2C, CAN, SRAM, Grafik-Controller) zur Ansteuerung mit dem C167 sowie Treiber für das SD-CARD Interface und zur Implementierung des FAT16 Dateisystems entwickelt. Hierzu diente eine ältere Spezifikation von Microsoft und die Implementierung im GNU/Linux Kernel.

Später wurde aufgrund von Hardware-Aktualisierungen Treiber-Software für die Grafik-Controller FUJITSU Jasmine, EPSON und HITACHI (ältere 8-Bit chips) sowie Treiber-Software für das MontaVista GNU/Linux System (z. B. Touch-Screen, UART, I2C, …).

Die Analyse der Hardware und die Fehlersuche, insbesondere bei den neu angebundenen Grafik-Chips und dem SD Karten-Interface wurde anfangs mit dem Oszilloskop durchgeführt.

Die Software-Modellierung erfolgte in UML.

Zweiter Aufgabenbereich: C, C++ Entwicklung (Projekt OPUS-A1)

Entwicklung eines Bedienterminals für Landfahrzeugmaschinen aus Basis des Intel XScale Prozessors. Als Betriebssystem wurde MontaVista GNU/Linux eingesetzt. Anpassungen an den X11 Server source code um die hardwarespezifischen Gegebenheiten zu bedienen. Anschließend folgte die Entwicklung eines touchscreen basierten Fenster-Manager.

Entwicklung eines UI toolkits auf Basis von xlib damit Kunden 3rd party software für das Terminal entwickeln können.

Entwicklung eines Task Switchers zum Umschalten von parallel laufenden, grafischen Anwendungen innerhalb des speziellen Fenster-Manager.

Die zusätzliche Entwicklung einer Benutzer-Software ermöglichte über CAN-BUS eine Kontrolle der angeschlossenen Landfahrzeug-Geräte.

Die Hard- und Software wurde primär vor Ort, direkt beim Kunden in Betrieb genommen.

Einsatz 09 2001 bis 07 2002 als Programmierer im Bereich C++ Entwicklung (Wiesbaden).

Entwicklung eines einfachen socket servers in C++ unter GNU/Linux. Der Server wartete auf eingehende Verbindungen von FAX-Aufträgen im internen Netzwerk und leitete diese an einen externen Sende-Prozess weiter.

Weiterentwicklung einer datenbankorientierten Software zur Auswertung von Datenbank-Trails ("Logs"). Als Benutzer-Interface wurde ein SQL-Interpreter mit den Lex/Yacc Tools umgesetzt.

Einsatz 01 2001 bis 08 2001 als Programmierer im Bereich hardwarenahe C und ARM7 Assembler Entwicklung (Frankfurt am Main).

Entwicklung eines einfachen Betriebssystems für den Gameboy Advance.

Während meiner Anstellung als Werksstudent entwickelte ich für das Unternehmen hardwarenahe Routinen um Speicherbereiche und weitere Geräte-Ressourcen zu verwalten. Hardware-Komponenten wie DMA, Sound- und Grafik-Chip wurden mit diesen Routinen anschließend gesteuert.

Ein Teil meiner Arbeit war auch die Performance-Analyse der Grafikroutinen. Im Laufe des Projekts konnte ich mich in die Hardware (ARM7TDMI) gut einarbeiten was mir später in weiteren Einsätzen einen Vorteil verschaffte.

Interessen

In diesem Abschnitt sind nur Skills erwähnt, welche ich sicher und ohne nennenswerte Vorlaufzeit sofort einsetzen kann. Die Reihenfolgen sind alphabetisch sortiert und geben keine Aussage bzgl. Priorität oder Präferenz.

  • Common Lisp
  • Elektronik Entwicklung
  • GNU/Linux
  • High Level Software-Entwicklung in C++, Java und ähnliche Sprachen
  • Low Level (hardwarenahe) Software-Entwicklung in C und/oder Assembler
  • Mikrocontroller Programmierung
  • Mobile Software-Entwicklung (iOS, Android)
  • OpenGL (2D und 3D)
  • User Interfaces und UI Frameworks
  • Web-Entwicklung

Schlüsselwörter

Für den schnellen Abgleich mit einer Projektanfrage, biete ich folgende Tabelle an. Wie zuvor unter <Interessen> erwähnt, handelt es sich hier um Begriffe, mit denen ich sofort arbeiten kann.

Sprachen Tools Frameworks API / SDK Betriebssysteme  
Atmel AVR Assembler CMake Cocoa Android NDK GNU/Linux  
Bash Eclipse Qt 5.x Android SDK iOS  
C Emacs UIKit iOS SDK macOS  
C++ GCC UI5 / Fiori OpenGL ES    
Common Lisp GNU make        
GLSL Git        
Java Jira        
JavaScript Xcode        
Objective-C clang / llvm        
x86 (32 und 64 Bit) Assembler          

Kontakt

Walantis Giosis, Dipl-Inform. (FH)

Adlerstraße 59, 65183 Wiesbaden

Telefon: +49 160 9037 7146

E-Mail: wg@freelance-giosis.com

Umsatzsteuer-Identifikationsnummer: DE 248338376

Impressum

Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehme ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.

Autor: Walantis Giosis

Created: 2018-10-14 Sun 15:58

Validate