Jacek's Blog

Software Engineering Consultant

About Jacek Galowicz

I am a freelancer with professional interests in software development, software architecture, interface design, and continuous integration & deployment (CI/CD, DevOps). Over the years I got into bigger and bigger production projects and developed a lot of competence in how projects should be structurally built, integrated, and tested to enable and maximize the developer's ownership of the overall quality of the resulting product.

Teaching Publications

I give talks and trainings on the topics of C++, Nix & NixOS, Software Architecture, Build Systems, Automation of Builds, Integration, Tests, and Deployment of Software.

Every winter semester, I hold the university lecture on software quality for Master's students in Computer Science and Electrical Engineering at the FH Münster.

Author of the Book C++17 STL Cookbook and the editor of the Book C++17 in Detail.

Co-Author of the scientific paper Combining Mechanized Proofs and Model-Based Testing in the Formal Analysis of a Hypervisor, FM 2016: Formal Methods and Efficient Implementation of the bare-metal Hypervisor MetalSVM for the SCC), 6th Many-core Applications Research Community (MARC) Symposium.

Author/Co-Author of Cyberus Technology Blog posts about Intel CPU vulnerabilities: Meltdown, Spectre V4, Intel LazyFP Vulnerability, L1 Terminal Fault Vulnerability, Zombieload, TSX Asynchronous Abort.

Software Architecture Development

Nix(OS) Logo C++ Logo Haskell Logo Qt Framework Logo Purescript Logo Python Logo React.js Logo postgreSQL Logo

Most of my experience concentrates on embedded (x86-64 and ARM) and backend development on Linux operating systems with C++ and Haskell. I use the strong type systems of languages to define error states out of existence as much as possible.

In frontend development, I have the most experience with the Qt Framework on Linux and Windows, embedded and non-embedded systems. I have also built rich, complex web- and desktop applications against REST APIs with Electron.js and React, typically implemented with the type safety of Purescript.

I am the maintainer of the Python NixOS Integration Test Driver portion of the nixos/nixpkgs Project on GitHub

Work Background

Since 2018: Visiting Lecturer, FH Münster

I hold the lecture “Quality-Assuring Software Engineering Methods“ for master students every winter semester, which is about unit & integration testing, spec-driven testing, fuzzing, reproducibility, development processes in teams, bad established practices in the industry, etc.

Since 2017: Co-Founder, Cyberus Technology GmbH

  • Automation/Integration of software modules into system images (C++, CMake, Meson, Gitlab, Docker, Nix)
  • Design of Hardware-In-the-Loop (HIL) test infrastructure that enabled high-throughput and regression-free SW development processes of our hypervisor team (Haskell, Python, REST Interfaces, NixOS, Raspberry Pi, USB OTG)
  • Implementation of low-level libraries for embedded systems (C++, Template Metaprogramming)

2014 - 2016: Sr. Software Engineer, FireEye, Inc.

  • Design, implementation, and test of components of a secure, microkernel-based virtualization platform. (C++14, C, Assembler, ACPI, Microkernel OSes, Intel VT, PCI, Interrupt Routing, Suspend & Resume, C++ Template Metaprogramming, STL, Qt)
  • Design and implementation of automated hardware test infrastructure.

2012 - 2013: Student Intern/Master Thesis Worker, Intel Corporation

  • Implementing a live migration feature for a virtual machine monitor based on an innovative microkernel operating system. (NOVA Microhypervisor, Microkernel Operating Systems, lwIP TCP/IP Stack, Intel VT-Extensions, Live Migration)
  • Extension of the live migration feature for the master thesis (ACPI, PCI hot plugging, preserving TCP connections over migrations, Network trunking)

2009 - 2012: Student Assistant, RWTH Aachen University

  • Low-Level Kernel programming (Kernel Functionality, Hypervisor, Documentation)
  • Development of Benchmarks and GUI frontends (C/C++, OpenMP, MPI, Qt)
  • Giving tutorials in Basics of Computer Science 1 and 4 (C, General Algorithms and Data Structures, x86 Assembly, Virtual Memory, Processes/Threads, Shared Memory, Synchronization, etc.)
  • Supervising lab courses (C++, Object Oriented Programming)

2004 - 2009: Freelancer at Academy GmbH & Co. KG

Framework design for web-based medical decision support systems, GUI frontends (Qt, JavaScript), Applications for handhelds (Visual Basic)

Education

2008 - 2013: B.Sc. & M.Sc. Electrical Engineering, RWTH Aachen University

  • Master thesis: Live Migration of Virtual Machines between Heterogeneous Host Systems (PDF)
  • Bachelor thesis: Design and Implementation of a Virtualization Layer for the Operating System Kernel "MetalSVM" (PDF)