Work Experience
Gardena Digital Hub
I’m working with the IoT platform team on connected Embedded devices. This includes the development and maintenance of services that run on a gateway as well as the implementation of a custom Linux distribution for that gateway. Moreover we implement basic functionality for the firmware running on the edge devices.
I also ensure product quality with automated software and hardware tests, code analysis and continuous integration.
The used programming languages include C, Rust and Python. We use Yocto and Zephyr as our Operating Systems. And the communication protocols include CoAP, MQTT and LwM2M.
Profidata AG
At Profidata I was working as a senior software developer. My tasks there ware to ensure software quality of the highly scalable and parallelized server application Xentis. I implemented system tests to check our REST API’s as well as integration tests and unit tests. To test a big legacy application I found that characterization tests help to increase code quality and capture current behavior. With my experience in quality software design and testing techniques I support other developer ’s with testing and refactoring the huge legacy codebase.
Previous tasks included the extension of the Xentis server application with REST services. This enables other systems to use the functionality of Xentis outside of the core application. I also worked on the implementation of different functional modules such as investment performance and price services.
The development is done with modern and generic C++ on Linux and with Java. Part of the testing infrastructure is written in Python.
I am also learning a lot about financial markets, investment and FinTech.
Another responsibility of mine is the maintenance of our build environment and continuous integration infrastructure (CMake, Jenkins pipeline, Gerrit), integration of static and dynamic analysis tools (Sanitizers, Clang Static Analyzer), as well as regression- and unit-tests. I also became an expert in development on Linux.
Kaba:
Portable Programming Device
At first I was responsible for the development of the firmware for a programming device. The programmer consists of a lot of peripheral devices including a LCD display, a keypad, NFC, USB, RS-232 and SD card. It runs on an ARM controller. The firmware was developed in C.
Electronic Locks
Later I was involved in the embedded software development of electronic locks that were based on different micro controller architectures, such as ARM Cortex, ATmega and Coldfire. I extended and maintained the firmware that was written in C. Later it was decided to rewrite the embedded software using C++ for it.
Beside my role as a programmer, I acted as the main software architect on this project, driving the development of a modular, object oriented design. It was designed for usability, testability, extensibility and reuse. To enforce quality and security, system- and unit-tests were implemented with a Test Driven Development approach. I also mentored and supported my colleagues on how to use C++ in an embedded, battery driven environment with with low resources.
All these devices contained different peripherals, such as NFC readers, EEPROM, ZigBee, USB and motors, which were connected by common digital communication interfaces. My team also extended and maintained PC simulations for all devices (firmware and hardware) to simplify development, testing and bug fixing.
Other Tasks
Besides programming, I defined functional requirements, specifications and maintained documentation. Moreover, I was the project manager in charge of developing a customer specific device.
CodeCheck AG
As a small project at CodeCheck I developed a complete mobile app for Symbian with Qt and C++. Learned a lot about development for mobile platforms and REST services. Improved my C++ and Qt skills. In the process of developing the app I also ported a barcode scanner from Objective-C to C++.
Schiller AG
After my studies as electronic engineer I worked as an intern at Schiller. There I created an application for the configuration and combination of filters for electrocardiograph devices (ECG).
The software reads the configuration from a XML file and shows it graphically as connected boxes which represent the filters. The configuration can be stored again in a XML file. For creating and editing configurations the filters are placed on a workspace via drag and drop and they can be connected with mouse clicks.
The application was developed in C++ with Qt, Boost and Xerces for Windows and Linux. Beside improving my C++ skills I also learned a lot of general programming tools and techniques as Design Patterns, OOA/OOD, UML, XML (SAX/DOM), Doxygen. I not only learned a lot of technical stuff but also about medical engineering. As side projects I set up automated integration testing for the GUI of an ECG application and evaluated installer tools for Windows and Linux.
AIM Industrielle Montage
After my apprenticeship I worked at AIM as mechanical engineer. There I assembled mechanical devices and fabricated small series and individual mechanical parts. I also made some improvements on existing parts. An other task was to manage the warehouse of mechanical parts and devices (logistics).
Educational Projects
Bachelor Thesis
The task of my Bachelor thesis was to develop and build a quad copter in the shape of a film reel to entertain visitors at Disneyland.
The project was a cooperation between the Autonomous Systems Lab at the ETH and the ZHAW, where I obtained my degree in Electrical Engineering. We were an interdisciplinary team of electrical and mechanical engineers.
My task was to develop the firmware and create the controlling algorithm for the embedded hardware. The hardware, based on two micro controllers, had many different peripheral devices, such as gyroscopes, a compass, pressure-, ultrasonic- and acceleration-sensors, as well as the motors to drive the propellers. Different interfaces were used for communication with the peripheral devices, such as UART, SPI, I2C, ADC and ZigBee.
The bachelor thesis was rewarded with a grade of 5.5 (of 6).
More information on the project can be found on the homepage: www.reely.ethz.ch