Portfolio
My résumé is available here.
Below is a trimmed portfolio of public work mostly done during my master's in computer science before 2022. Most of it is available via Github.
Personal projects are hosted on sourcehut, but none are currently public.
CERN: detector simulation and data acquisition
During 2018 I partook in Google Summer of Code, where I added multi-threading support for CERN's allpix² and investigated why performance did not scale linearly.
The next year I was a CERN Summer Student and helped with NA62 upgrades and development in DAQling; internal and external publications resulted. Notable for NA62 was a 20x performance increase in auxiliary software.
Embedded engineering
My master's thesis was the development of RTIC Scope, a convenient debugging tool for RTIC which leverages the hardware logging subsystem of the Cortex-M platform for cheapest-possible run-time insight. A main feature of the tool was post-mortem analysis via replays.
I am the main developer and co-maintainer of the ATSAMx7x HAL and PAC, a Rust-support project for Microchip's SAM S70/E70/V70/V71 microcontrollers. Among other features, the project
- leverages the type system of Rust to catch invalid hardware configurations at compile-time;
- exposes an ergonomic API for fundamental, but non-trivial peripherals; and
- offers hardware-tested examples on API usage for inspiration purposes.
I have also written drivers for hardware-accelerated crypto for the automotive-grade S32K MCUs.
During university I led some project courses in embedded developments, mainly:
- ED7039E: Miniature industrial robot implementation leveraging ultra-wideband positioning, tasking via Arrowhead, and reproducibly built via Nix.
- Project Daredevil: Concept implementation of a distributed automotive system following the EVITA standards.
I also have some upstream contributions to probe-rs and rust-embedded/cortex-m.
NixOS contributions
I have been using NixOS since 2017 and contributed various components and packages upstream to nixpkgs. Most notable are
- the packaging efforts of Google Deepmind's MuJoCo 3, and its Python bindings; and
- an update for CERN's Geant4.
I declare all of my computer systems, and the entirety of my development environments, with Nix.
Application programming
When I began my studies I played around with C++, program extendibility with Python, and terminal user interfaces. This resulted in bookwyrm, a program for finding and downloading ebooks publicly available on the Internet.