Projects and experience

12urenloop

Currently project manager of the hardware and software stack made for the yearly 12urenloop event.

Also helped deploy (parts of) the system at other *urenloop events.

Past: Gentse 12urenloop 2024, 10urenloop Antwerpen 2024, Gentse 12urenloop 2025.

Upcoming: Pelicano Loop tegen Kinderarmoede 2026, Gentse 12urenloop 2026.

Status: nvt

Technologies: Java, Python, Go, Vue/TS, Godot (simulation), Car batteries, 1km of UTP, DietPI, nRF52832, BLE

Contributions to the D language server (LSP)

Added support for symbols imported from C headers/“modules”.

Issue: serve-d#328

Pull request: DCD#789

Status: Not yet merged, needs one more feature

Technologies: D, LSP

(Zeus WPI) Plant growth time-lapses with EPSON photo scanners

Blog post (dutch): zeus.gent/blog/25-26/hortiroot-intro

Source code: git.zeus.gent/ZeusWPI/hortiroot-scanners

Status: Ready to deploy when we have time™

Technologies: D, Go, Protobuf, C++/Boost/CMake, React/TS, rpi-image-gen, Podman

Guix dlang packaging

Reworked the packaging of the GDC, LDC and DMD D compilers and related tools, fixing various packaging-related bugs.

Pull request: guix#3250

Status: Under review

Technologies: Guix, Guile Scheme, CMake

WHY2025 Badge

Worked on the firmware of the WHY2025 camp badge. Ported MicroPython.

Featuring:

(Image from @Flummer under CC-BY-SA-4.0)

Homepage: wiki.why2025.org/Badge

Status: Shipped thousands

Technologies: C, picolibc, FreeRTOS, ESP-IDF, CMake, BuildRoot/QEMU (RISC-V), esp32p4, esp32c6, SDL3, MicroPython

MC

Minecraft tcp server implementation, for interacting with/monitoring real-world systems in 3D.

Might be running locally at the Zeus WPI hackerspace at koin:25565 for interacting with various hackerspace infra.

Unmaintainable as Mojang frequently makes fundamental protocol changes on “patch” versions.

Source code: codeberg.org/jnms/mc

Status: Alpha

Technologies: D, mc-data

Cyber Security Challenge Belgium (CSCBE) 2025

Team: Zeus daemons

Qualifiers: 3rd place

Finals: 3rd place

Technologies: Radare2, GDB, pwntools, Burp Suite, Ghidra, Frida

Dlang nobetterC and upstream patches to the dmd compiler

TODO write-up

Pull requests: github.com/dlang/dmd/pulls?q=author:jnms-me

Status Patches: Merged

Status nobetterC: Prototype

Technologies: D, esp32

Programming in D for the ESP32 & VGA “video card” implementation

TODO write-up

Toolchain (only needed for Xtensa) and examples: github.com/jnms-me/esp-dlang

Video card source code: github.com/ZeusWPI/tscherm

Status: Beta

Technologies: D, ESP-IDF, esp32

Advent of code

I've participated in Advent of Code in 2018, 2019, 2020, 2021, 2022, 2023, 2024.

Solutions: codeberg.org/jnms/aoc

Status: nvt

Technologies: D

FPGA video signal generator

Monochrome+hsync+vsync signal generator that can emit some mathematical patterns. Written in VHDL.

Source code: github.com/jnms-me/Cyclone-II-EP2C5T144-vga

Status: Prototype, abandoned as impractical for text

Technologies: VHDL, FPGA, Altera

Dlang etc.linux.memoryerror

I helped rework D's etc.linux.memoryerror module for “catching” segfaults. It now re-throws them as Error objects with details: the bad address that was accessed, whether the cause was a stack overflow or null pointer. All 3 D compilers and many more architectures are now supported.

PR: dmd#20643

Status: Merged

Technologies: D, ucontext, QEMU user mode, x86, x86_64, arm, aarch64, ppc64

OWASP BeNeLux Days 2024

Invited as part of the CSCBE prize for 3rd place.

Took part in a 1-day training from Dr. Philippe De Ryck on hands-on API security.

Technologies: iframes, JWT, CSRF, SSRF

Attempted VSCode D grammar improvements

TODO write-up. TLDW TextMate grammars are horrible context-wise, need semantic highlighting.

Microsoft does it like this: github.com/microsoft/vscode/blob/6ac83c7c7d/extensions/cpp/syntaxes/cpp.tmLanguage.json#L4033

Status: Abandoned

Technologies: VSCode extension development, TextMate grammars

Courses INDI master

(Zeus WPI) Ledstrip scripting sandbox

Lets users write scripts that use a section of the hackerspace's ledstrip in Lua, Python or brain███.

(The ledstrip features 690 leds and spans the entire space. Scripts could receive messages via HTTP only.)

After rewriting the server, it is now possible to dynamically assign sections to scripts without needing to edit a remote json file and restart the thing. I also added support for states, so that scripts can temporarily take over the entire thing.

I replaced the html form+textarea script editor with an embedded Monaco (the VSCode editor) that connects to a remote Lua language server.

A homegrown bf interpreter and python support via pyd were also added.

Messages can now also be received through the local MQTT broker.

Hosted locally at http://ledstrip in the Zeus WPI hackerspace.

Source code: git.zeus.gent/Kelder/ledstrip_sandbox

Status: Released

Technologies: D, LuaJIT, CPython, Monaco, LSP, Podman multi-arch build, DietPI, rpi_ws281x

Cyber Security Challenge Belgium (CSCBE) 2024

Team: Red goblins

Qualifiers: 2nd place

Finals: 3rd place

Technologies: Radare2, GDB, pwntools, Burp Suite, Ghidra, Frida

Started master programme “Information Engineering Technology”

Univesity: UGent

Remaining courses: Masterproef.

Courses INDI bachelor

Summer job

Developed a Java component for automated installation of resource packets using custom manifests.

Company: Amaron - 8755 Ruiselede

Technologies: Java, Kotlin, XML

Courses INDI bachelor

Network simulator

A network simulator inspired by GNS3.

Features a custom graph-based query protocol, implemented using a PEG grammar. Starting with a reference or collection, all server-side objects can be queried by calling methods. Methods returning other GraphNodes can be chained using object-oriented dot call syntax. Query handlers are implemented at compile-time using D's metaprogramming.

Nodes are based on templates, and can be:

Source code: github.com/jnms-me/netsim-prototype

Status: Prototype

Technologies: D, PEG grammars, QEMU, Docker internals, Linux low-level networking

Started academic bachelor programme “Engineering Technology (Information Engineering Technology)”

Univesity: UGent

Remaining courses: Signalen en systemen, Statistiek en wiskundige dataverwerking.

Summer job

Set up the monitoring of customer installations.

Incoming data was already being stored in an Elasticsearch instance. My task was to build an alerting system and accompanying Grafana dashboards to drill down on issues (python + grafana-lib).

Company: amaron.be - 8755 Ruiselede

Technologies: Elastic stack, Grafana, Python, json-via-email, Mirth Connect

Graduated from professional bachelor programme “Elektronica-ICT”

College: Vives Brugge

Courses Elektronica-ICT

D community sites status

Hosted at d-status.jnms.be

Source code github.com/jnms-me/d-status

Status: Released

Technologies: Take a guess

Bachelor's dissertation: “Implementatie van een NIDS binnen een ISP omgeving”

Company: Fluvius, 8820 Torhout

Thesis: github.com/jnms-me/so-poc-thesis

Source code: github.com/jnms-me/so-poc

Technologies: Security Onion, Logstash/Elasticsearch/Kibana, TheHive, ntopng, React/JS

Summer job

Order picking

Company: Febelco, 8000 Brugge (again)

Courses Elektronica−ICT

E-ink weather display

Source code: github.com/jnms-me/eink

Status: Released

Technologies: D, REST

Summer job

Order picking at Febelco, 8000 Brugge

Courses Elektronica−ICT

Started professional bachelor programme “Elektronica-ICT”

College: Vives Brugge

Graduated high school with programme “Techniek wetenschappen”

School: Immaculata−instituut 8200 Sint−Michiels, Brugge

Projects and experience