Projects
-
Noise Translator for PipeWire
Comparing Realtek's Windows audio driver to PipeWire reveals a clear trade-off between user-friendliness and full control. Although I prefer having full control over my hardware, I ran into a lot of trouble connecting different audio devices to my Linux machine.
On Linux, the stack is deliberately transparent: the kernel's HD Audio driver (snd_hda_intel together with the snd_hda_codec_realtek codec driver) exposes the codec's pins and mixer controls more or less as they are, ALSA presents them as PCM devices, and PipeWire sits on top as a userspace graph, routing streams and handling format conversion and resampling. Nothing in that chain tries to guess what you meant. Realtek's Windows driver, by contrast, arrogantly presumes how the user intends to use the device: it ships vendor-supplied pin-configuration defaults, performs jack detection and automatic retasking, and pushes the signal through a chain of Audio Processing Objects (APOs) that apply equalization, gain staging, and noise suppression before it ever reaches the codec.
As much as I want full control over my hardware, that presumption is pretty damn convenient for regular audio device user like myself. Since I don't know/care about specifics of audio, I want to be able to just plug in my headset and have it work. So I decided to write my own low-level "noise" translator as a PipeWire filter node. Because Realtek's processing chain is proprietary, getting close to a unified translation algorithm took a lot of tinkering and measurement — essentially reverse-engineering the frequency response and dynamics behaviour by comparing captured output against a reference. The problem is that newer audio devices do far more work themselves. Instead of a plain codec with analog pins, they arrive as USB Audio Class 2 interfaces, DSP-offloaded stacks, or smart amplifiers with I2C-controlled speaker protection and vendor-specific calibration blobs – blah, blah, blah... Each of those needs a tailored approach rather than one generic filter. As a result, my translator works almost flawlessly with older devices but struggles to adapt to newer ones.
I'm planning to realease a in-depth blog post soon
-
OrgRoam UI (desktop app & Neovim plugin)
Node visualizer for Nvim OrgRoam Plugin. Works on both GNU Emacs and Nvim Orgmode.
React frontend and python backend
Full realease to be annouced...
-
OnTrack firefox extension
Friction tool for firefox. Fully customizeable block list to acces websites. Custom solutions when extension is triggered (password, full block, countdown timer, etc.)
-
TUI builder
Python module for building TUI's
Has built-in easy to configure panels, keyboard support and more
-
Industrial CNC laser communicator
GUI program that connects to CNC laser cutting machine making it able to be controlled remotely and recive information about the machine.
Unfortunately I can't share any technical details about this project.
-
TUI note taking app
Productivity app, that comminucates with applications like iCalendar, Google Calendar, Notes app, etc. With vim like keybinds, multiple databases and connection to other applications makes it extremely frictionless way to manage productivity related stuff.