I am a software engineer with nearly 40 years of experience in software development. I have been worked in many different industries and with many different tools, technologies and programming languages. I can work with a soldering iron, oscilloscope and multimeter, and can develop software from the assembler level, through OOP and threading, up to database and web programming. I'm also a big fan of software modelling and Model Driven Development.
My special areas of expertise
- AUTOSAR
- AUTOSAR system architecture
- General SwC design and implementation
- BSW configuration
- MCAL configuration
- Configuration of Memory Stack, Persistency, Diagnostic Stack, Communication Stack, ...
- AUTOSAR functional safety features
- AUTOSAR Memory protection
- Memory assignment, memory space optimisation
- Sparx Enterprise Architect
- General modelling
- Model transformations
- Code generation
- Creating of stereotypes and EA Technologies
- Development of EA Addins
- Other areas
- Programming in many programming languages (C, C++, C#, Java, Perl, Python, assemblers, and many more)
- Embedded development in general
- QA measures such as code and architecture reviews, creating of coding patterns, ...
- Test automation
- Optimisation of memory space and execution time (also SQL query optimisation)
- Finding and fixing of memory leaks
- Creating/optimising toolchains
- and many, many more
My projects (excerpt)
MDD solution for AUTOSAR® (my own project)
Topic: An MDD solution for AUTOSAR®, based on Sparx Enterprise Architect.
Design:
- AUTOSAR® Metamodel transformation written in Java.
- AUTOSAR® Metamodel handling library written in C#.
- Addin for Sparx Enterprise Architect, written in C# using .NET and Windows Forms.
- Reading and writing EA models directly from and to databases, to speed up the really slow EA handling via COM interface. My handling is 50 times faster than the original.
For more details please look here.
The story behind: Thanks to my experience with MDD, I could see from my first contact with AUTOSAR® that it was designed for modelling. I looked for modelling tools for AUTOSAR® and found very few. One of them was IBM Rhapsody, but its AUTOSAR® support there was already outdated and barely described. I was able to find a way to generate working AUTOSAR® modules with it, but the process was time-consuming and not perfect. Later, an Austrian company released an AUTOSAR® add-in for Sparx Enterprise Architect, but it was very limited in scope. Since I already knew Enterprise Architect very well, I decided to write such an addin myself.
My first approach was quickly finished and my solution was already much better than the one I had seen before. But at the same time I realised that a proper solution would require a lot more work. My second attempt was successful.
Note: The only metamodel handling available before was a Java plugin for Eclipse called ARTop, provided by the AUTOSAR® consortium. Therefore, almost all AUTOSAR® tools on the market are Eclipse-based and limited to the functionality available in Eclipse. My library in C# is much faster and can be used in many other environments.
The goal: My goal is to provide a complete AUTOSAR® MDD solution, including the generation of SwC code from the model, especially the generation of AUTOSAR®-compatible state machines from modelled statecharts. I have already been able to save a project from cancellation by the customer using such a generation, so I know it can save a lot of effort. (See below)
Tools and technologies: AUTOSAR®, C#, .NET, Java, Windows Forms, OLE/COM, XML, SQL, MS JET, SQLite, Oracle, MySQL, MariaDB, Sparx Enterprise Architect.
BMW Gen5 IcBox
Topic: The box generating pictures for the driver display and the HUD, used by all BMW cars of Generation 5. More than two million units are currently in use.
Project duration: 09.2019 - 2025

Device design: Two processor system, the Renesas RH850 running AUTOSAR® system and R-CAR M3 running GreenHills Integrity.
The story behind: The project started and run one year long only with developers new to automotive and without any architect. Later architects were involved, I was the architect responsible for Functional Safety topics on the AUTOSAR® side. I provided also general support and problem solving by any kind of issues related to AUTOSAR®.
My tasks:
- Design of the safety architecture of the AUTOSAR® part, including monitoring of the Integrity part (Requirements, Model, Test specifications, FMEDA, DFA).
- Design of memory protection mechanisms for the AUTOSAR® part, including modifications of OS handling of MPU unit.
- Configuration of the AUTOSAR® Memory Stack.
- Design of handling of the concurrent access to Data Flash by AUTOSAR® Memory and Crypto Stacks (used microcontroller was not fully compatible with AUTOSAR® concepts).
- Design of the memory protection for the HUD component (it required serious modification of AUTOSAR® concepts for memory allocation).
- Modifications of the build scripts.
Tools and technologies: C, C++, Python, AUTOSAR®, Integrity, MPU, Doors, Jira, Confluence, Functional Safety, ISO26262, Security, Crypto, EEPROM, Flash, Sparx Enterprise Architect, CAN, CANoe, EB Tresos, Diagnostics, NvM.
Daimler MRA2 ICD and CID displays
Topic: Driver display and central display for Mercedes S-Class cars. There were also smaller variants of both devices for the E-Class.
Project duration: 09.2018 - 08.2019

Device design: ST SPC58xx running an AUTOSAR® system.
The story behind: It was the first project at the whole company using AUTOSAR® modules and tools delivered by the newly acquired company ElektroBit. It was a pure AUTOSAR® project running on a single-processor machine. I had to research the new tools, create a build procedure and write the build scripts. The build process I created was later adopted by the company's tools team and evolved into the toolchain currently used in all the company's projects.
My roles:
- Designed the build procedure and build chain scripts for the project (Perl).
- Integrated and configured the Daimler Security component in the system.
- Configured the MCAL (AUTOSAR® hardware abstraction layer) according to the Hardware-Software Interface document.
- Configured the Communication, Diagnostic and Memory Stacks.
- Integrated the updates of MCAL, Tresos modules, DiagExtract and EcuExtract.
- Provided the general troubleshooting and support.
Tools and technologies: C, AUTOSAR®, EB Tresos, Perl, CANoe, CAN, Security, Crypto, Diagnostics, NvM.
BMW Gen4/Gen3.1 cluster instruments
Topic: Cluster instruments for BMW Gen4 and BMW Gen3.1 cars.
Project duration: 03.2014 - 08.2018


Device design: Renesas MAC57D5xx processor with Cortex M4 core running an AUTOSAR® system and Cortex A5 core running GreenHills Integrity.
The story behind: The BMW Gen4 cluster was the company's first pure AUTOSAR® project, it was done using its own AUTOSAR® Authoring Tool (Cessar-CT), its own BSW modules and Vector's OS. The project started for the Gen4 cars, later a branch for Gen3.1 was created. Both projects struggled with many problems, the Gen3.1 was not far from being cancelled by the customer (what would cost several million Euros, due to the contact conditions). I had to apply many quality assurance measures, such as: reducing the number of warnings, creating coding patterns, optimising the build chain, providing code reviews, ... . I was also able to save the Gen3.1 project from cancellation by implementing and generating the most problematic modules from the IBM Rhapsody model.
My roles:
- Designed and implemented the build scripts for the AUTOSAR® part.
- Optimised the whole build process (was way too long).
- Reduced the number of warnings in the project (there were many thousands of them before).
- Created and implemented a memory protection concept (the company's own RTE module was missing some important functionality and it was incompatible with the Vector's OS, solution was to create scripts that generate code to replace the code generated by the RTE).
- Implemented the Safety Manager modules on the AUTOSAR® and Integrity parts.
- Implemented the DFE module.
- Implemented and executed module tests of the safety-related modules.
- Created a method to generate AUTOSAR® arxml files and AUTOSAR® code from IBM Rhapsody (Model Driven Development).
- Implemented the Safety Manager and DFE modules with the MDD.
- Provided general support and troubleshooting for all parts of the system.
Tools and technologies: C, C++, Perl, Ant, CMake, AUTOSAR®, Integrity, Cessar-CT, CAN, CANoe, IBM Rhapsody, MDD, code generation, Functional Safety.
VW MQB cluster instruments
Topic: Cluster instruments with variants for VW, Audi, Skoda and Seat brands, several variants for each brand (total: 11 variants).
Project duration: 08.2011 - 02.2014

The story behind: The project started with three integrators, due to high number of variants two additional integrators had to be engaged. One of them was me. I integrated two of these variants on regular basis, but supported integration of other variants if it was needed. To speed up the integration I automated the Short Integration Test and the Integration Test. Especially one of the tests included long, complicated and error-prone manual setup of a function generator device, it could be automated using serial interface of the device and a Perl script. I created also a GUI for the test scripts using Perl/Tk.
Device design: Non-AUTOSAR® system, common base for all variants, but specific parts for each one. Each variant had it's own, specific hardware. A team of 5 integrators was needed to integrate all the variants in short time.
My roles:
- Integrated two of the variants on regular basis, other occasionally.
- Automated short integration test and integration test (remote control of function generator, power supply and measurement devices).
- Designed and implemented Safety Manager component.
- Optimised and unified build scripts of each variant.
Tools and technologies: C, Perl, Perl/Tk, CANoe, OLE Automation, MKS, UnderstandC, Functional Safety.
BMW FJ16 cluster instrument
Topic: Porting the BMW FJ16 cluster instrument software to another microcontroller.
Project duration: 03.2011 - 07.2011
The story behind: Due to the Fukushima disaster, there was an acute shortage of the microcontroller chips used for these clusters. The customer wanted to ensure, that this shortage didn't affect the availability of the clusters. So a version of the cluster using a different microcontroller had to be developed quickly. I was new to the company at the time, but was able to port half of the whole system myself, more than any other developer already familiar with the project.
My roles:
- Port the code to a different microcontroller.
Tools and technologies: C, MS Visual Studio, Borland Together Architect.
Component-based CRM system in Java
Topic: Software components in Java and an application using these components.
Project duration: 01.2006 - 03.2011
The story behind: I was working for a company mainly involved in the tourism industry. The company created custom applications for big tourism companies and had the idea to create some standard software components, that could be used to quickly create the new custom software. We created a stable base for future development, and the development process we created was successfully used in many projects. The first one was a CRM system.
Design: Software modules written in Java, working as WebServices (EJB), developed using MDD, code generation, well-defined process, automatic tests and continuous integration.
My roles:
- Evaluated available modelling tools and selected of the one to use (Enterprise Architect).
- Defined the development process, wrote code generation scripts.
- Defined architecture of the components.
- Took part in the development of the modules.
- Took part in the development of the first application based on the components (the CRM system).
- Optimised the SQL/HQL queries to speed up the system.
Tools and technologies: Java, Enterprise Architect, EJB, JBoss, WebLogic, Eclipse, UML2, Subversion, jUnit, Hibernate, SQL, Oracle, CruiseControl, Hudson, CodeCoverage, XML, JiBX, Tapestry, WebServices, Ivy.
AUDI C6 Head Unit
Topic: Head Unit for AUDI C6 cars
Project duration: 08.2002 - 12.2004

Device design: Single processor system running VxWorks, containing and controlling radio, navi, cd and phone modules. The device was placed in the CD and CD changer boxes.
The story behind: This was my first automotive project. Large parts of the code were developed in an IBM Rhapsody model and then generated (full Model Driven Development).
My roles:
- Implemented diagnostics, EOL and interface modules.
- Designed and implemented a development tool to monitor data stored in the non-volatile memory of the device from a PC in real time. I had to implement the KWP2000 over TP2.0 and CAN communication protocol on the PC for this tool.
- Redesigned and implemented the module controlling the radio.
Tools and technologies: C++, IBM Rhapsody, MDD, UML2, Tornado, GNU-C++, CAN, MOST, KWP2000, TP2.0, VxWorks, Diagnostics, Windows 2000, MFC.
Maintenance of a ticket marketing system
Topic: Bug-fixing in a ticket marketing system for selling Expo 2000 tickets.
Project duration: 09.2000
Design: The software ran on a cluster of Unix machines and acted as an interface to a booking system on a cluster of mainframes.
The story behind: The customer was a large company that sold tickets for various events through its own network of terminals located in travel agencies. The company was contracted to sell tickets for Expo 2000 in Hannover, with a volume of over 100.000 transactions per day. Unfortunately the software that handled this had some bugs and memory leaks, so it had to be restarted every night to ensure, that it did not crash during the busy times of the day. My job was to fix the bugs and remove the memory leaks. I was able to fix all the error tickets and get rid of all the memory leaks, so that the software ran then smoothly without the need for a restart.
My roles:
- Created XML tracing for all memory allocation and freeing operations.
- Created scripts to pair alloc() and free() calls according to the written traces.
- Identified not deallocated memory chunks and fried them in the right places.
- Found and corrected all errors reducing number of open error tickets to 0.
Tools and technologies: Reliant Unix, C++, MKS, XML.
Teletype interface Pro-Tlx
Topic: An autonomous teletype interface for the PC.
Project duration: 1989-1999

The story behind: At the beginning of the 90s in Poland most companies used old-fashioned electromechanical teletypes, basically a clone of the Siemens design from the 30s, inherited from the previous period. Then in the nineties the telex communication became very important - it was the only reliable digital communication network available, but the old machines were not user-friendly at all. Therefore we developed our own interface, which was the best on the Polish market (and probably in the world - at that time no new teletype devices were developed in any other country). Over 1000 units were sold, among the customers were the Polish Ministry of Foreign Affairs (the devices were used to communicate with embassies via an encrypted channel), some Polish banks (it was used for cash transfers and requests to block accounts), shipping companies, a radiocommunication centre handling messages to and from ships (via radiotelex connections), ... Our devices were in use until the telex network in Poland was abandoned in 2007. Our equipment was awarded a regional prize for innovative products called "Gryf Pomorski".
Device design: A Z-80 based microprocessor system, capable of sending and receiving telex messages autonomously. No OS, firmware written in assembler. There was a dedicated application on the PC, first for MS-DOS (with semigraphics), later a Windows version and sharing of the device over LAN was developed.
My roles:
- Designed and implemented the device firmware.
- Designed and implemented the MS-DOS user interface on the PC.
- Designed and implemented the network versions of the PC software
- Designed the Windows user interface and managed the implementation.
- Designed and implemented the special version for communication with ships via radiotelex.
Tools and technologies: Assembler, C++, MFC, Novell Btrieve, Novell NETBIOS, NetBeui.