Marino von Wattenwyl
Hi! I'm a software developer tinkering with some things here and there. I've worked on 3D renderers, compilers, VR apps, and websites.
Things I'm Interested In
- Computer Graphics: Graphics APIs, Shaders, Raytracing, Data Structures, ...
- Compilers: Parsers, IRs, Optimizers, Code Generators, Assemblers, Linkers, ...
- Processors: Instruction Sets, Caches, Pipelines, Branch Prediction, ...
- Drivers: Hardware Interaction, OS APIs, Reverse Engineering, ...
- Performance Optimization: Profiling, Vectorization, Garbage Collection, ...
- Virtual Reality: Devices, Tracking, Mixed Reality, ...
Things I've Made
The Banjo Programming Language
A statically typed programming language that compiles to a binary executable. It features short compile times, metaprogramming and "modern" constructs like sum types, optionals, closures, and tuples. The toolchain is written from scratch in C++ and provides an optimizing compiler, a language server, a formatter, a hot reloader, and a basic package manager. The compiler directly emits binary machine code for x86-64, AArch64, and WebAssembly. The generated binaries can run on Linux, macOS, Windows, and in the browser via Emscripten.
AetherVR
An OpenXR implementation that allows you to play VR games without a VR headset. AetherVR tracks your head and hand movements using a webcam and converts them into inputs for VR applications. It can be made to work sometimes with SteamVR games using OpenComposite.
Things I've Used
- C/C++, Java, C#, Python, JavaScript, Assembly (x86 and Arm)
- LLVM tools: Clang, clangd, clang-format, clang-tidy, libclang, LLD, LLDB
- Compiler Explorer
- Graphics APIs: primarily OpenGL, familiar with Vulkan, WebGPU, and SDL GPU
- RenderDoc
- OpenVR and OpenXR
- WebAssembly and Emscripten
- Windows, Linux, and macOS
- Platform-specific native APIs: WinAPI, POSIX
- OpenCV
- Docker
- The usual Web technologies: HTML, CSS, TypeScript, SQL, Angular