I am a freelance software developer and architect the field of real-time, distributed and embedded systems. I have 18+ years of experience with embedded Linux both in user- and kernel space.
Prior engagements include leading a team of experienced embedded software developers and Platform Management Kistler Instrumente AG in Switzerland, a Post-doc at KU Leuven, and several years of freelancing as an U-Boot and Linux Kernel developer and trainer (often in cooperation with DENX Software Engineering).
I hold a PhD in Robotics from the KU Leuven, Belgium and a Dipl.-Inf (FH) degree from the University of Applied Sciences in Konstanz, Germany. My PhD thesis was on the topic of domain specific languages for constructing complex and reusable robot systems that can operate under hard real-time constraints. If anyone is interested, my thesis can be found here.
Working with me
I am a down to earth developer who has experience in working with local and internationally distributed teams. I can blend in as a developer or take over a leadership role. When in the lead, I firmly believe that critical but constructive reviews and discussions among developers are crucial to consistently produce high quality technological decisions, code and architecture, so I try to get the relevant people involved.
While I enjoy working in a team I have also successfully completed many projects working solo.
Languages skills are German and English (natively) and Portuguese (professional proficiency).
Development
Typical engagements usually involve some of the following topics.
- Embedded Software design and development with C/C++ at times complemented with scripting languages such as Python or Lua
- Preparing concepts, carrying out feasibility studies and advising with technology selection. I have a lot of experience bringing about decisions while getting co-developers on board.
- Architecture and implementation of distributed and real-time systems using Xenomai, rt-preempt or RTOS.
- Cleaning up and upstreaming patches to FOSS projects
- Training or supporting teams using microblx real-time function blocks.
- Development of Linux device drivers or optimizing existing code
- BSP development: porting Firmware such as U-Boot to new hardware
- Embedded system architecture: boot time optimization, implementing robust update strategies (e.g. using SWUdate), filesystem selection, yocto usage.
- Preparation and realization of test concepts
- Development of yocto layers
Training
Most of the above topics are introduced and discussed in a very hands-on 3 day training for ramping up developers to the topic of embedded Linux. Get in touch if you are interested.
Platform Management
I have experience in building up and leading international development teams as a Platform and Project Manager, including practical experience in building “corporate development communities” and setting up the associated processes. Though currently not my primary focus, I can provide consulting in this area.
Software
I have written and contributed to various Open Source projects. I firmly believe that upstreaming patches also in time constrained projects pays off due to the maintenance effort saved in the long run and the quality assurance gained by reviews. The following are a few examples:
Developer and maintainer of microblx, a lightweight, yet powerful framework for building control or signal processing applications.
rFSM statecharts: a minimal and extensible Statecharts formalism developed as part of my PhD.
Contributions to SWUpdate: upstreamed ubi volume rename support, hwid regexp matching.
Various contribution to Das U-Boot (maintainer of the USB subsystem until 2009).
Several years ago I developed the mini_fo overlay filesystem, which was one of (or perhaps even the) first Linux overlay filesystem(s) for my thesis at DENX Software Engineering. Mini_fo was used in a number of products and projects (e.g. OpenWRT), but has meanwhile been superseded by overlayfs.