embedded systems design & software solutions
The first and uttermost important aspect of any collaboration is a shared understanding of the project goals. Working on a common goal I can happily contribute quality engineering services in the fields of experience. Something you might want is missing? Don't hesitate to contact me!
Your new business idea involves a smart device, connected to the cloud? Great! But why build that stuff yourself? Trust me, it's not as easy as to pay €30 for a raspberry and fold it until it fits into the housing! Topics like interfaces, adequate CPU, power supply, reliability, an update concept, production and many other things need to be considered. Feel free to contact me and discuss your needs!
For the better part of my industrial work I have designed and implemented software for embedded devices. I have worked with MIPS, ARM, PowerPC and many more embedded platforms, often in the early board bring-up phases doing Board Support Packages (BSP) and porting the Linux kernel. Things always get interesting when JTAG is your only friend and it's not even sure that DRAM is working stable.
Software architecture is all about selecting the right bricks and putting them together forming a software solution. A software architect has not to be a great programmer, but an intimate knowledge of the bricks is essential.
I have been doing software architecture work in many projects, often in an embedded context, but have also designed large software systems.
This is where the magic happens. It's all about knowing what to do and to implement the chosen architecture. A software developer has to know its tools.
An embedded Linux system for though industrial requirements.
Kapsch TrafficCom AG is a leading provider of intelligent transportation system (ITS) solutions. Especially their tolling products are operated in a very though environment. Hanging some meters above or housed directly next to the highway these devices are exposed to rain, cold, heat, oil, exhaust fumes and vibrations. To add to existing woes high-reliability is an absolute requirement for tolling systems as they are operated 24/7.
The goal was to develop a new linux-based platform which can be used in a number of road-side products. An additional requirement for developing multi-lane free-flow tolling applications are near-hard realtime capabilities to interface a proprietary field-bus.
My primary responsibilities in this projects were to provide the realtime-capable linux kernel and to implement a high-reliable, fail-safe and upgradeable operating system (and boot-loader). I also contributed to the software deployment concepts, kernel drivers and implemented large parts of the build-infrastructure. Finally I supported the development of tools and concepts for the production and functional testing of the product.
Technologies: Linux, C, C++, make, cmake, python, jenkins
A techdemo showing the power of HTML5 for complex user interfaces.
HTML5 is a core technology for today embedded devices, because it's the first choice for implementing user interfaces for IoT devices. As a testbed I decided to implement an interactive C interpreter (complete parsing, syntax analysis, and virtual machine in the browser). (As a nice side-effect I use this tool for my part-time teaching on a higher education center for electronic engineering in Vienna.)
Turns out using modern languages like Google's dart that is completely do-able. Using this technique on embedded devices enables a whole class of cheap (saving on the CPU side), cloud-connected devices with high-quality user interfaces.
A business critical application for which I have designed the software architecture.
In a position as technical project lead I was responsible for designing and implementing the production process for a highly configurable product at s::can. s::can is a technology leader for online water measurement and monitoring systems. Due to the high quality constraints and complex factory calibration demands the product is assembled directly b s::can. The process involves adaption of analog electronic measurement circuits and calibration of the measurement software.
In this project the whole business process: customer specific order, assembling, factory calibration and creation of shipping documents was identified and fully digitalized. The architecture is a database with a number of distributed special purpose client applications accompanied by web forms. An important aspect of the whole design is robustness (don't stop the production line), which is achieved by client side caching (i.e. client can operate without server) and strict input data validation on the server.
As the result a formerly mostly paper based work-flow is now fully digitalized and a high number of process parameters can be monitored in real-time which helps to further improve the quality of the process. The system is currently enhanced to support other s::can products as well.
Technologies: SQL, PHP, Linux/Windows MATLAB client applications, LabView clients, server-side Python
Some tricky to implement software components I have written.
In my thesis Scalable Translation Validation I researched an industrial strength framework for compiler verification (i.e. mathematical proofs that a compilation is error free). Because of the focus to industrial application (scalability) large input programs are used to evaluate the framework and thus I was forced to implement efficient tools, out-performing similar tools by orders of magnitude.
CASM is modeling language I developed to semantically describe program languages and micro-processors. To achieve adequate performance it is compiled and together with a student of mine we implemented novel optimizations to further enhance the performance. Our implementation is about a factor 30 faster than a similar tool developed at Microsoft Research and about a factor of 2500 faster than an academic tool.
Technologies: C, C++, assembly, CASM, Ruby, Make, Git
vanHelsing is a specialized proof checking tool, which operates on a subset of first-order logic formulas. After the algorithmic idea manifested in my brain I finally had an excuse for doing some C++11 development. 2 weeks later things started to work and 2 additional weeks of optimizations doubled the proofing-throughput of my framework.
Technologies: C++, Make, Shell, Git
GPG: 993C 38AE CD18 4179 D445 EBF6 ADFA 6017 BDCC 30AF