Hi, I’m Chris.
I build Windows software that opens instantly and stays smooth. By day I’m a senior engineer at ISOPlanner. After hours I make Wavee, a Spotify client for Windows 11, and FluentGpu, the UI engine it runs on.






Spotify on Windows has always been a website in a box. Wavee speaks Spotify’s protocols itself and draws its own interface, so it opens in under a second and holds full refresh rate through a 10,000-song library.
New in 0.3 “Crest”: a rebuilt Home, a real full-screen view with eight visualizers driven by the audio you hear, lossless FLAC, pages for podcast episodes and people, and playback that no longer stutters when your PC is busy.
- Spotify Connect in both directions
- Lyrics synced to the syllable, beside the player or full screen
- Tempo, key and listening stats across your library
- YouTube, Twitch and radio as out-of-process modules
- Version
- 0.3.0 “Crest”
- Released
- 2 Oct 2026
- Requires
- Windows 11, Spotify Premium
- Get it from
- Microsoft Store
- Built with
- FluentGpu
- Source
- GitHub · release notes
Independent project. Not affiliated with Spotify.
FluentGpu
A from-scratch UI engine for .NET 10. You write UI in plain C#; state lives in signals, so a change re-runs only the component that read it. It paints with Direct3D 12 and DirectWrite and ships as one NativeAOT binary.
sealed class Counter : Component { public override Element Render() { var (count, setCount) = UseState(0); return VStack(12, Heading($"Count: {count}"), Button.Accent("+", () => setCount(count + 1))); } } // a click re-renders Counter, nothing else
<PackageReference Include="FluentGpu" Version="0.1.0" />
var vol = UseFloatSignal(0.5f); Slider.Create(vol); // drag: thumb transform only. No render, // no reconcile, no layout.
Against WinUI 3 on the same ARM64 machine. NativeAOT both sides, pixel-identical pages, 620 of 620 runs.
Median unless noted. The losses are listed too.
| Measured | WinUI 3 | FluentGpu |
|---|---|---|
| Worst navigation frame | 64 ms | 10.9 ms |
| CPU per navigation | 6.3 ms | 1.1 ms |
| Memory, 1,000 navigations | 2.5 GiB | 104 MiB |
| Scroll 10k rows, CPU/frame | 0.98 ms | 0.31 ms |
| Cold start, 225 buttons | 201 ms | 110 ms |
| Where WinUI 3 wins | ||
| Empty-window memory | 37 MiB | 88 MiB |
| One-node updates, p90/p99 | ~1 ms tighter | |
Every frame your browser has drawn since you opened this page, checked against your display. The list keeps growing, but only the rows you can see exist.
- Frames drawn
- 0
- Rows that exist
- 0 of 0
- Your display
- –
- Median frame
- –
Timeline
Fifteen years from a Visual Basic form to a GPU UI engine.
- 2011Age 9
First program, in Visual Basic
Drag a button onto Form1, double-click it, write some code, press F5. I made small apps for myself and nobody else.
- 2014Age 12
Minecraft plugins in Java
Plugins for Minecraft servers, written in Eclipse. The first code of mine that other people ran, and my first stack traces from strangers.
public class MyPlugin extends JavaPlugin { @Override public void onEnable() { getLogger().info("Enabled!"); } }
Moved to C# and WPF
Bigger apps, real data binding, and the start of a long relationship with XAML. Years later, FluentGpu has no XAML at all.
<Window x:Class="WpfApp1.MainWindow" Title="MainWindow" Height="350" Width="525"> <Grid/> </Window>
An MW3 modding tool for the PS3
A real-time modding tool for Modern Warfare 3 on modded PS3s, CEX and DEX: god-mode classes, a stat editor, name changes. The replies said it had the same mods as every other tool. They weren’t wrong.
The original thread[MW3/PS3/Preview] Upcoming Tool [CEX/DEX] MW3 RTM Tool PitaGyors 1.24PitaGyors3 Aug 2014“… fix it when i got back from holiday …”
Twelve-year-old me, on mobile broadband, explaining why the fix had to wait. - 2016Age 14

Somtoday for Windows Phone
My school used Somtoday for grades and schedules, and there was no app for Windows Phone. I had a Nokia Lumia, so I wrote one and published it in the Store. A few thousand people downloaded it.
Windows PhoneC#Thousands of downloads - 2018Age 16

First job: FilmFetch and Medialoc at Marteco
We built and designed FilmFetch and Medialoc: software that moves festival films around the world, checks and test-ingests the DCPs, and makes previews and screeners, so nobody has to courier hard drives. The festivals below still run on it.
Used bymedialoc.eu




- 2021Age 19
Applied Physics at TU Delft
- 2024Two years in Korea천안
Lived in Cheonan, South Korea
Two years in Korea, including the LCK 2024 Spring Finals live: Gen.G vs T1. That’s the photo at the top of this page.

Master, 100 LPHecarim main · peaked in 2024 · retired sinceMostly ganking at full gallop. I’ve stopped playing, but the hobby also gave me LOL Review.
- 2026Age 24


Joined ISOPlanner, shipped Wavee
Switched jobs to ISOPlanner as a senior software engineer. Released Wavee 0.2.1 in August, put it in the Microsoft Store, and shipped 0.3 “Crest” on 2 October.
Other work
A SaaS platform for ISO compliance: audits, risks, documents, tasks and the workflows that tie them together. I work across the .NET backend, the React front end and the integrations between them.
Players sent a game ID and got a written, timestamped review from a Challenger or Grandmaster coach within two days. It took real orders. It’s offline while Wavee has my evenings, and I’d like to bring it back.
Writing
All posts
Now
You just used FluentGpu.
Scrolling this window, you passed seven things the engine does in Wavee. This page is HTML, so your browser did the work here. In FluentGpu they run natively on Direct3D 12.