Michael Engel

Software Engineer

About me

My name is Michael Engel and I am a software engineer and aspiring software craftsman from Munich with a passion for clean code, automation and machine learning (especially in the area of computer vision). Through projects in the automotive, media and e-commerce sectors, I have acquired a broad knowledge of the various technologies, concepts and processes for software development.

So far, my focus in my professional career has been on backend development of distributed systems, such as event-driven microservices. I also have experience in the areas of frontend development (including the micro frontend pattern), DevOps, test automation and machine learning. While working in various Scrum teams and larger projects facilitating the Nexus framework, I acquired an agile mindset and knowledge about best practices.

Projects

A simplistic library for Aspect Oriented Programming (AOP) in TypeScript

This is a library for defining and using aspect, which can be used to encapsulate so-called cross-cutting concerns, such as logging. This in turn enables developers to write code that is more maintainable and reusable.

One goal of this open source project is to provide an API for aspect-oriented programming in TypeScript that is as easy to use as well as flexible - without any additional dependencies. ts-aspect can also be used together with frameworks such as NestJS (see here).

TypeScript AOP Cross-Cutting Concern Separation of Concerns Clean Code

A simplistic library to listen for and produce messages to Amazons Simple Queuing Service (SQS)

go-sqs is based on the AWS SDK for Go and provides an easy-to-use listener and producer for SQS messages. An error-based routine is used to receive messages. It enables the definition of custom logic for processing SQS messages, takes care of any occuring panics and deletes the message from the queue on successfully processing it.

I am currently working on a sidecar implementation which provides the functionality of go-sqs as a REST-API. This enables the usage of go-sqs within applications written in different programming languages or frameworks.

GoLang AWS SQS Separation of Concerns Sidecar

Professional Experience

Red Hat

Software Engineer

Mai 2022 - heute

I am currently working at Red Hat as a Software Engineer.

Netlight Consulting

IT-Consultant

January 2019 - April 2022

Working at Netlight as an hands-on IT consultant allowed me to get to know a wide variety of industries and companies as well as their culture, structure and the technologies used there. Netlight also offered me the opportunity to try out new roles and to develop myself personally in different areas. This way I was able to accumulate wide-ranging knowledge - from the implementation of JavaFX Fat Clients in a small team using Kanban to developing complex event-driven microservices using GoLang and NestJS as well as micro frontends using React with up to 6 Scrum teams, which were organized according to Nexus framework.

Education

University of Applied Sciences Munich

Master of Science, Computer Science with a Major in Software-Engineering

2016 - 2019

After successfully completing my bachelor’s degree, I wanted to further specialize in software engineering. During my studies I gained deeper knowledge about distributed systems as well as initial experience working on open source projects (see PR320 at jenkinsci/acceptance-test-harness). I also discovered my passion for machine learning and deep learning during my master’s degree. In addition to my studies, I had a job as working student at an IT consulting company where I gained experience in agile project work and JavaEE.


Evaluation of Machine Learning methods regarding the applicability in a test automation framework for in-vehicle infotainment systems

For my master’s thesis, I examined various Object Detection methods regarding their applicability in a test automation framework. First, I developed a program to automate the generation of labeled training data, which later saved a lot of time as this step is very time-consuming. Then I implemented the Template Matching as a classic object detection method with* Python* and scikit, a machine learning model based on HOG features using scikit-learn and the Deep Learning model Faster R-CNN with TensorFlow. To evaluate the different approches, I used the so-called Intersection over Union as a metric. In a final proof of concept, I extended the existing framework by the newly developed object detection functionality and implemented a pipeline for the automated training of further models.

Machine Learning Computer Vision Object Detection Automation Model Evaluation Python scikit-learn Tensorflow

University of Applied Sciences Trier

Bachelor of Science, Computer Science

2013 - 2016

At the end of my apprenticeship as an IT specialist, I made the decision to study computer science. Here I learned a lot about topics such as data structures, algorithm design and algorithm analysis as well as methodologies for problem solving and project management.

For a project at university, two other students and I implemented a web-based review system using the Python-framework* Flask* ​​and MySQL. This system was then used to support a class at the university. In addition to my studies, I had a job as a working student at a manufacturer of cash register and cashless accounting systems where I implemented new features with Object Pascal.


A study for redesigning and improving the usability of the OpenDXM GlobalX User Interface

In my bachelor thesis I examined the Managed File Transfer application OpenDXM GlobalX in regards to its usability. I first carried out an eye tracking study to get data about usability problems of the application. I used the gained knowledge as well as the Android Design Principles when creating a new design proposal. For this I implemented an interactive prototype using HTML5,* JavaScript* and CSS.

User Experience Research Eyetracking Rapid Prototyping HTML5 JavaScript CSS

F.S. Fehrer Automotive GmbH

Apprenticeship as a Computer Science Expert in Software Development

2010 - 2013

During my apprenticeship, I worked on an in-house, multilingual Enterprise Resource Planning system in a small team of developers. The ERP system used MSSQL for persistence and was written in the programming language Object Pascal in a procedural style, using* Delphi* as IDE. I also learned C# as my first object-oriented language in vocational school and C++ in my free time. Using VBA to automate the various evaluations as well as generate respective visualizations for different departments were also part of my tasks.

In my thesis, I added a calculation module to the in-house ERP system. This included requirements analysis, planning, implementation and testing. The new module made it possible to recalculate the valuation price of various products.

ERP Object Pascal Delphi MSSQL Stored Procedure VBA C# C++