SwiftDeck — Why I Rewrote the Stream Deck App From Scratch
The official Elgato app used almost a gigabyte of RAM across eight processes and got stuck whenever my monitor went to sleep. So I wrote a native macOS replacement.
Notes on engineering, tooling, sound, and making things.
The official Elgato app used almost a gigabyte of RAM across eight processes and got stuck whenever my monitor went to sleep. So I wrote a native macOS replacement.
How a sentence I kept typing to my AI agents turned into a skill system, and why it ended up shaped like a neural network: depth, width and a council of specialists.
I run my Mac with a pen tablet instead of a mouse. The vendor driver kept getting in the way, so I wrote my own. Here's the input path from tablet to screen, and what keeping a realtime driver alive taught me.
v5.1.0 finished the patch editor. Since then I've worked on everything around it: the shared data, the public side, multi-panel modules, and a lot of small fixes.
A new apartment, a square room, and €310 of polyester panels. The biggest improvement came from moving the desk, which cost nothing.
I wanted to know which pump nearby was cheapest without a login, an ad or a location prompt. It turned out the government already publishes the data.
One bad night building a live WebGPU visual engine: how a freeze in the entity pool happened, why it was so hard to find, and the boring fix that solved it.
A dedicated server, a UPS, cheap AliExpress switches and a lot of YAML. How I rebuilt my home automation from scratch so I could actually rely on it.
mini-tagger, mini-renamer and lms-guard: three small macOS utilities I built because running models locally is great, except for everything around the model.
A modular set looks improvised from the audience. Here's the weeks of patching, documenting, soundchecking and editing that go into one.
I perform audiovisual sets. TouchDesigner taught me how visual engines work, and its interface convinced me to build my own.
My AI assistant could read my code but not my canvas. MCP servers for Figma and Blender changed that. Here's what it was like to use them on real work.
I moved into a new place and did the obvious thing for a UX engineer: opened Figma. Treating the rooms like an interface problem gave me a set of rules I still use.
I stopped putting up with the default keyboard and built my own input setup out of a Stream Deck XL and some Karabiner rules. It isn't really about speed.
My wrists were getting tired, so I started coding by voice. A year later, here's what works, what doesn't, and how my Talon setup works with JetBrains and the terminal.
I kept losing my modular patches, so I built somewhere to keep them. Then other people started using it.
My visuals code got tangled once audio, OSC and UI controls all tried to drive it at once. Treating every input as a stream untangled it.
My eyes were tired after a couple of hours with every theme I tried. Here's how I fixed it by designing the colors around brightness first.