Projects

Open source I have built, maintain or contributed to

ADiJaC

Open-sourcing, infrastructure, branding and occasional maintenance · Ongoing

Automatic Differentiation of Java Classfiles: it transforms compiled Java classes so they also compute derivatives, in forward (scalar and vector) and reverse modes, building on the Soot framework.

ADiJaC was originally designed and implemented by Emil I. Slușanschi and Vlad Dumitrel, who wrote its source transformer (credits). It had been developed inside a closed research group. For my master’s thesis I took it open source:

  • A licence, a Gradle build, and a Nix flake that pins the toolchain for reproducible builds.
  • GitLab CI/CD that publishes every tagged version to a public Maven registry.
  • A Gradle plugin shipped inside ADiJaC’s own jar, plus example projects for it and for calling ADiJaC at runtime.
  • Documentation written from scratch as a book, published per branch.
  • Fixes to the transformer.
  • The logos and the organization’s website.

Documentation · Source

Java Soot Gradle Nix Automatic differentiation

BLE to USB HID Bridge

Fork maintainer · 2026

Firmware that turns a Raspberry Pi Pico W or Pico 2 W into a wired adapter for a Bluetooth keyboard or mouse, so it works on machines without Bluetooth and in UEFI setup screens.

It’s a fork of shiomachisoft’s bridge. I added Pico 2 W support and a reproducible build, with a Nix flake and CMake presets. I also fixed keyboards stalling in GATT discovery, truncated HID descriptors, a hang at boot, and input lag from power-saving connection intervals.

C CMake Nix Raspberry Pi Pico Bluetooth LE

TRNG Methods

Author · 2023

The testbench behind my bachelor’s thesis and the RoEduNet 2025 paper: it records very low frequency (VLF) radio noise from the live receivers streamed on abelian.org, and FM radio through an RTL-SDR dongle. It processes the noise into uniform random numbers and runs FIPS 140-2 tests on the result, next to the OS and random.org as baselines.

It’s no longer maintained, since abelian.org has gone offline.

Python Docker RTL-SDR Signal processing

Tock

Contributor · 2022

A secure embedded operating system for microcontrollers, written in Rust. In 2022 I opened six pull requests across the kernel and its bootloader, all since merged:

  • Ported the BBC HiFive Inventor board (#3225).
  • Added UART receive (#3240) and abort (#3253) to the SiFive driver, shared by every board built on those chips. Debugging it meant reading the chip’s Chisel sources.
  • Added the E310x’s missing base frequency configuration (#3215), behind a run of hard to explain clock errors.
  • Fixed the micro:bit v2’s OpenOCD flashing script, in both the kernel (#3226) and the bootloader (tock-bootloader#26).
Rust Embedded RISC-V OpenOCD

Digital Computers 1 & 2

Author · 2021–2022

Open-source versions of the Digital Computers 1 and 2 labs at University POLITEHNICA of Bucharest, taught by Dan-Ștefan Tudose. The course recommends Xilinx ISE or Vivado, which are closed-source and take tens of gigabytes; these labs run on Icarus Verilog and Make instead, with Yosys for synthesis.

Along the way I cleaned up Verilator’s lint warnings, fixed the use of blocking and nonblocking assignments, removed unsynthesizable initial blocks, and improved the checkers. I also wrote up how the two kinds of assignment differ.

I am forever grateful to our teaching assistant, Ștefan-Dan Ciocîrlan, who supported me far beyond what the job required of him.

Digital Computers 1 · Digital Computers 2

Verilog Icarus Verilog Verilator Yosys Make