Vulkan engines, compilers, and everythingbelow the framework.
I'm Benjamin Rosseaux — BeRo in the demoscene. I build renderers,
game engines, physics engines, music software, JIT compilers, emulators, script engines, operating systems, network stacks and LLM inference from scratch.
My sampler engine ships inside a widely used DAW, my Vulkan engine runs
commercial games, and my rewrite of parts of the 1541 drive emulation is part of VICE.
Remote from Germany · English & German · Short engagements welcome
1,462
GitHub stars
24
Public projects
22
Years of public releases
2006
In the demoscene since
What you can hire me for
Eight ways to put me to work
Fixed scope or ongoing, remote, in English or German. If it is low-level,
performance-critical, or nobody else wants to touch it — that is my part of the stack.
Code review, debugging & rescue work
The fastest way to work with me. Send a repository, a crash nobody can reproduce,
a performance regression, or a codebase you inherited and do not trust. I read code
for a living and I find things: memory corruption, race conditions, undefined
behaviour, the pointer that happened to work for three years. You get written
findings and a fix path — fixed scope, no long-term commitment.
Vulkan renderers, GPU pipelines, shading and lighting, culling and draw submission,
frame-time optimisation, asset pipelines. I have written two engines from nothing — an
OpenGL one that shipped a released game, and the Vulkan one that commercial titles run on —
so I know where real projects lose their milliseconds.
VulkanGLSL / SPIR-VPBRglTFProfiling
Public proof: PasVulkan · Kraft · Supraleiter · two published talks on rendering
Low-level & systems engineering
Compilers, virtual machines, emulators, parsers, protocol implementations, lock-free
concurrency, SIMD optimisation — and, more recently, LLM inference written from the
matrix multiply upwards. I have written an operating system from the boot sector up,
scheduler and SMP included, and rewritten parts of the 1541 drive emulation in VICE down to the
level of individual magnetic flux transitions. There is not much below this that I have
not had my hands in.
Large legacy Delphi codebases, Free Pascal migration, cross-compiler compatibility,
and libraries that must behave identically on every target. It is a small world,
and a good part of its open-source infrastructure has my name on it.
DelphiFree PascalLegacy migrationCross-platform
Public proof: 20+ published Pascal libraries · CrossPascal · BESEN
C & C++ engineering
C where it has to link against anything and run everywhere, C++ where the codebase
already is one. This is the layer at which the compiler stops protecting you: lifetimes
by hand, alignment, strict aliasing, undefined behaviour that only surfaces under a
different optimiser or a different target. I have written a C11 compiler and a
source-to-source compiler that emits portable C — which means knowing the standard
rather than the folklore.
C11C++Undefined behaviourPortabilityInterop
Public proof: PACC (C11 compiler) · CrossPascal (emits portable C) · VICE (1541 emulation, in C)
x86-16 / x86-32 / x86-64 assembler engineering
Hand-written assembler across three generations of the architecture: 16-bit real mode for
boot sectors and the DOS era, 32-bit for size-coded intros where every byte is argued
over, 64-bit for the inner loops that decide whether a frame fits. I have also written
the assembler itself and a code generator that emits x86 directly, so I work on both
sides of the instruction stream — writing it, and generating it.
x86-16x86-32x86-64SIMDSize codingCodegen
Public proof: SASM (x86 assembler) · TINE boot loader · BeRoScript (JIT to native x86) · 64k intros with Farbrausch
Cross-platform applications — desktop and Android
Applications that are genuinely native on each system, rather than one toolkit painted
everywhere. I keep a digital audio workstation running on Windows, macOS and Linux — Win32,
Cocoa, GTK and Qt widget layers, GPU canvases on OpenGL, Direct2D and Metal, and audio through
ASIO, WASAPI, CoreAudio, ALSA, PipeWire and JACK, every backend written by hand. Android is
part of that too: apps of mine are published on Google Play, and my Vulkan engine carries its
own Android path rather than a portability shim. I know which cross-platform abstractions hold
and which leak, because I have had to replace the leaking ones.
Public proof: Klangknecht · BeRoTracker · micro64 · PasVulkan · Android apps on Google Play (SDrescan, Sleep Synthesizer and others)
Audio & DSP
Software synthesis, audio engines, DSP algorithms, mastering chains and real-time audio
paths. I have written a SoundFont engine good enough to be licensed into a widely used DAW, a full
DAW, a tracker that hosts VST and CLAP plugins, a browser-based mastering tool, a speech
synthesis engine, and synthesizers small enough to fit inside a 64k intro.
SynthesisDSPReal-time audioSequencing
Public proof: Sobanth (licensed into a commercial DAW) · BeRoTracker · Klangknecht · Masterknecht · four released singles
Selected work
Twenty years of building things from scratch
No screenshots of things you cannot check. Almost every project below is public — open source,
a released product, or a demoscene production with a date on it. Click through and look.
Commercial work
Code of mine that ships in other people's products
Licensed into a commercial DAW
My SoundFont 2 synthesis engine, Sobanth, powers the SoundFont player that a widely
used DAW has shipped since 2022. Somebody else's flagship product, running my
synthesis code, in front of a very large number of musicians.
Games on my own Vulkan engine
For the past few years my work has gone into commercial games built entirely on
PasVulkan, together with a small team. The first is heading to release, and a full case
study will appear here once it is announced.
My projects
Much of my work is free. Keeping it that way is not.
Engines, compilers, emulators, trackers, libraries — a large part of what you just
scrolled past costs nothing to use, some of it under open-source licences. There is no
company behind it and no funding: the maintenance, the bug reports, the port to every
new compiler version, the answer to every mail — that is unpaid time. If something of
mine saved you a few weeks, put something back.
Simplest for now: a short mail, and we sort out the channel together — direct links follow later.
About
Where the abstractions run out
I write code at the level where the abstractions stop helping. Not out of nostalgia —
that is simply where the interesting problems live: the garbage collector, the
register allocator, the memory barrier, the last two milliseconds of the frame.
Much of how I work comes from the demoscene. I am BeRo in Farbrausch, a group known
for fitting entire audiovisual productions into 64 kilobytes. No engine, no
libraries, every byte accounted for — it turned out to be very good training for
everything that came afterwards.
I released my first JIT-compiling scripting language in 2004 and my first tracker the
same year. Since then: an ECMAScript engine with a JIT, a C compiler with its own linker,
a 3D physics engine, a Vulkan renderer, a half-cycle-exact C64 emulator, a RISC-V emulator
that boots Linux, an operating system with its own boot loader and SMP scheduler, and an
LLM inference engine. Along the way I rewrote parts of the 1541 floppy emulation in VICE — the
reference Commodore emulator — to be exact down to the magnetic flux transitions, and
designed the P64 image format that stores them.
I work remotely from Germany, in English or German. I document what I find, I say
when something is harder than hoped rather than discovering it with you at the
deadline, and I am comfortable being handed a codebase with no documentation and
asked what is wrong with it.