Timo Nicolai

Timo Nicolai

Software Engineer

Biography

I’m a software engineer at Gapfruit where I work on the Genode-based Gapfruit microkernel operating system. I’m particularly interested in OS development, distributed systems and anything related to low-level and high performance C++. For an impression of the technologies I have worked with, take a look at some of the projects I have completed.

Download my resume.

Interests
  • Operating Systems
  • Distributed Systems
  • C++
Education
  • MSc Computer Engineering, final grade 1.0 (best possible), 2021

    TU Dresden

  • Erasmus+ Exchange Student, 2019

    KTH Royal Institute of Technology, School of Electrical Engineering and Computer Science

Skills

c
C
cpp
C++
python
Python
linux2
Linux
chip
Embedded
dl
Deep Learning

Experience

 
 
 
 
 
Gapfruit
Operating Systems Engineer
Sep 2022 – Present Zug, Switzerland
  • Working on the Genode-based gapfruit microkernel OS.
  • Leading development of the remote provisioning interface used to remotely control and monitor a large number of devices via Azure IoT Hub and the USP protocol.
  • Presenting the system to and partaking in technical discussions with partners/customers.
 
 
 
 
 
Leica Geosystems
Software Engineer
Sep 2021 – Aug 2022 Heerbrugg, Switzerland
  • Part of the firmware team for the BLK2GO mobile lidar scanner.
  • Responsible for feature development and maintenance in a number of different domains such as low level Android programming, hardware/GPU accelerated image processing, data collection and analysis as well as automated testing.
  • Worked with state of the art C++ (17/20).
 
 
 
 
 
cfaed Chair for Compiler Construction
Student Assistant
Sep 2020 – Dec 2020 Dresden, Germany
  • Wrote MPsym, a fast C++/Python library which uses algorithms from computational group theory to find and represent symmetries in multicore system-on-chips.
  • Can be used to significantly speed up mapping of computational tasks to complex architectures.
 
 
 
 
 
Kernkonzept
Software Engineering Intern
Jun 2019 – Oct 2019 Dresden, Germany
  • Designed and implemented an extension to the L4Re microkernel’s hypervisor using C++ that:
    • Allows inspection of guest state (e.g. cpu state, page tables) and basic debugging at runtime.
    • Works on several different architectures (x86/x86-64, ARM/ARM64).
 
 
 
 
 
Zeiss Group
R & D Intern
Aug 2018 – Dec 2018 Jena, Germany
  • Worked with agile team on manufacturing defect detection machine learning project.
  • Developed software for data acquisition, processing and analysis and for training of deep neural networks.
  • Used Python libraries such as PyQt, OpenCV, NumPy, and Matplotlib.
 
 
 
 
 
Kernkonzept
Student Employee
Sep 2017 – Jul 2018 Dresden, Germany
  • Wrote tests for several L4Re components using C++.
  • Extended existing infrastructure for complex test scenarios.
  • Worked on code coverage data on embedded platforms.
  • Implemented a Lua tool for verification and visualization of L4Re startup scripts.
  • Created a Python visualization library for benchmark data based on Jupyter.
 
 
 
 
 
cfaed Vodafone Chair for Mobile Communication Systems
Student Assistant
Feb 2017 – Sep 2017 Dresden, Germany
  • Developed a Linux backend for a distributed computing framework.
  • Worked with C and many aspects of the Linux system programming interface.
 
 
 
 
 
SONOTEC
R & D Intern
Feb 2016 – Sep 2016 Halle (Saale), Germany
  • Used MATLAB to develop and evaluate algorithms for position estimation of an ultrasonic sensor.
  • Built and debugged hardware prototype boards using Atmel and ARM microcontrollers programmed in C/C++.

Projects

*
fire-llvm
A Clang plugin that can be used to turn ordinary C++ functions and objects into command line interfaces (CLIs) similarly to python-fire. It works by adding an extra compiler pass that rewrites source code on the fly in order to inject argument parsing code.
mpsym
Improving mapping of computational tasks to manycore architectures using computational group theory, published in IEEE TCAD. MPsym can determine whether different mappings are equivalent due to symmetries of an architecture’s topology. Works efficiently with large, hierarchical architectures and can be used to improve existing mapping discovery algorithms by making them “symmetry aware”. Implemented in C++ for performance with easy to use Python bindings.
Colorful Image Colorization in PyTorch
A from-scratch PyTorch implementation of the convolutional neural network described by Zhang et al. in Colorful Image Colorization. Can be used with pretrained weights or trained from scratch. Also includes an implementation of Google’s DeepLab-V3+ network that can be substituted for the default VGG network.
Pong for L4Re
The classic “Pong” game on the L4Re microkernel. Includes custom implementations of malloc, free etc. for L4Re and several server programs implementing keyboard and framebuffer handling as well as paddle control and logging.
Diceprob
A parser and interpreter for the scripting language used by AnyDice. Makes it possible to run AnyDice scripts that compute probability distributions of complex dice rolls locally. Written in Haskell using the megaparsec parser library.

Awards

Enno-Heidebroek Certificate for Academic Achievement
Hermann-Willkomm Prize for Best Final Thesis
Awarded for my thesis “A Compiler-Based IDL Framework for L4Re”.