It's pronounced vanilla-gee | Author of Mediabunny and Marble Blast Web. Love working on technically challenging projects that bring the best out of the web.

Darmstadt, Deutschland
Pinned Tweet
Mediabunny 1.42.0 is now out, adding THE most requested feature: full read/write support for HLS! 🚀 It's truly a game changer for client-side media processing. Here, I'm creating 5 renditions from a 40-second video in ~10 seconds, fully client-side, without a transcode server:
13
18
312
69,952
Y'all are too damn sweet 🥺❤️
I've been a little sad the last couple of days. Mediabunny's first, longest and most loyal sponsor, Gling, stopped their gold sponsorship of Mediabunny this week. Their CTO @yonatanbd left the company, and they're now restructuring their efforts and cutting costs where they can. An understandable move from their part, and it's got nothing to do with me. I'm deeply grateful for the years of Yonatan's support; he alone was the basically the reason Mediabunny even got started and he supported me through its development for half a year before I released the version to the public. Thanks to his encouragement and financial support (as well as the support of @konstipaulus), I had the courage the quit my job back then and to focus on building cool media stuff for the web full time! On the financial side, I'd be lying if I said losing a gold sponsor doesn't hurt. It does, a little. I'm still alright though! GitHub Sponsorships are my main way of making a living at the moment. If you or your company have gotten considerable value from Mediabunny, consider a donation! I'm sure your logo would look beautiful on the Mediabunny home page ;) I'm working on super cool upcoming stuff that I haven't shared yet, and I'd love to keep working on it. People still haven't experienced the true power of web-based media processing!
2
1
89
2,061
I've been a little sad the last couple of days. Mediabunny's first, longest and most loyal sponsor, Gling, stopped their gold sponsorship of Mediabunny this week. Their CTO @yonatanbd left the company, and they're now restructuring their efforts and cutting costs where they can. An understandable move from their part, and it's got nothing to do with me. I'm deeply grateful for the years of Yonatan's support; he alone was the basically the reason Mediabunny even got started and he supported me through its development for half a year before I released the version to the public. Thanks to his encouragement and financial support (as well as the support of @konstipaulus), I had the courage the quit my job back then and to focus on building cool media stuff for the web full time! On the financial side, I'd be lying if I said losing a gold sponsor doesn't hurt. It does, a little. I'm still alright though! GitHub Sponsorships are my main way of making a living at the moment. If you or your company have gotten considerable value from Mediabunny, consider a donation! I'm sure your logo would look beautiful on the Mediabunny home page ;) I'm working on super cool upcoming stuff that I haven't shared yet, and I'd love to keep working on it. People still haven't experienced the true power of web-based media processing!
9
14
218
9,586
Trip Buck Bunny
4
479
Vanilagy retweeted
My HTML directly talks to my GPU
1
1
3
176
I might have some idea 🤫 (it's Mediabunny)
How is Mixture 1200% faster than CapCut?
5
2
72
4,554
I did the same mistake (overabstraction) twice in a row now. For a project of mine, I needed both shared-memory multithreading and SIMD operations in JavaScript, and these felt like gaps in the ecosystem so I built both of them as standalone libraries. I even announced them on X, how foolish of me! They both fell short when actually using them in a real project. The shared memory JavaScript was hard to reason about (classic), and the SIMD library worked well for standalone operations but didn't compose well. Or well, it did compose well, but the composition would underperform. I now dropped both efforts and added only what my project needed. Complexity is way down and any design is immediately reality-checked against the true constraints of the project. I still think libraries here are absolutely possible, and I have many ideas about how to make the SIMD library work well, but it's a lot of time I'd invest into something that isn't a priority for me right now.
9
80
3,363
I tested this out in a real project and noticed that it's too much of a pain to work with. True shared memory multithreading means you need to worry about data races everywhere, even in sync code, which is just a headache in JavaScript especially when you have uncontrolled user code running at the same time. I'm back to a simpler approach: shared memory, but changes are reconcilied via message passing instead (while making sure every thread eventually converges to the same thing). This guarantees that every thread sees a stable view of the world during any sync piece of logic, which is just so much easier to work in!
I'm working on a new library that enables real shared-memory multithreading for JavaScript, natively. After seeing what's possible with Zig in WASM, I was tired of not having the same possibilities in JavaScript! Here, the main thread and a worker cooperatively increment a counter. The state object is truly shared between the two threads; no messages are ever exchanged after the initial handshake.
10
2
75
19,362
The life of a media demuxer developer: needing to make your perfectly spec-compliant and correct parser less strict because lots of invalid inputs are being produced in the wild and still accepted by other (lesser) parsers 😫
7
1
41
1,858
In the screenshot, one variant stream refers to VIDEO="audio_only" but that media group does not exist (only one of type AUDIO does)
2
216
For some reason, every new AI video editor always happens to be "the first AI-native video editor" 🤔
Today We just killed video editing forever. Introducing Agent28, the first AI-native Video editor built from the ground-up for AI agents. It can save your editing style on one video and edits others in mins. You can also upload your favorite Editor's Videos, It then learns their style and edits for you. More examples below
17
2
75
3,665
Nothing teaches you about bell curves and normal distributions better than making a controversial post on X
2
1
40
1,583
If you want something a little more ergonomic than calling the FFmpeg API on the server, try Mediabunny with the @mediabunny/server extension! It integrates perfectly with other JavaScript APIs (like request/response streaming) and uses hardware acceleration whenever possible
Replying to @vanilagy
Thanks for always sharing about your experience... Wish there was media bunny for the server too, for bun maybe, why? It just has nicer dx.
2
46
2,364
There's this GitHub issue by Casey Muratori on how the Web Audio API has a design gap since it wants in planar format, and because many systems produce interleaved audio instead, converting between the two is costly and has "substantial performance penalties". I do not know why this post has 82 likes (maybe besides that it's Casey that posted it). With the canonical WASM SIMD deinterleave implementation that uses repeated shuffles, I'm able to convert an 8-channel 128-sample audio buffer from interleaved to planar in around 88 nanoseconds on my M4. NANOseconds!! That's without any of the "planar scatter hardware" Casey talks about here; it's just loads, some shuffles, and then stores; operations available on any modern CPU. Even if you did this operation using a naive scalar JavaScript algorithm, it would still take up less than 1% of the render time of a 128-sample audio quantum. You're literally just moving 4096 bytes around, it's nothing! So, I think this post is not substantiated, and it's strange that it comes from somebody with such a deep understanding of computer performance!
40
2
244
84,465
When I first released Mediabunny, I contemplated for a long time whether I should make it paid for commercial use or free for everybody. I did eventually opt for free for everybody because I wanted to maximize its reach and have it develop an ecosystem of libraries built on top of it that can also be free (didn't go for MIT license tho). I did not expect THIS kind of reach tho, still blows me away. Sometimes I do wonder how things would've gone had I slapped a paid commercial license on it! In my mind, it's not the right kind of thing to monetize. I wanted to ultimately be the better FFmpeg for the web and replace it, and it's harder to compete if the other tool is completely free
7
3
183
4,931
The fact that the website does the "Content fades in as you scroll" thing made me bounce in like 10 seconds. Literally why have that?
Replying to @rootxharsh
Interestingly, some of our RCE and infoleaks attempts landed only after thousands of image uploads. What's interesting is only one organization caught us in the middle of our exploitation attempts, kudos! We have published the full details here: heif-heist.com
5
1,405
I'm reaching speedups of 15x compared to pure JS for some operations. I hear excuses all the time that SIMD isn't worth it, that the conversion roundtrip nullifies the gain, etc. This is pure cope. SIMD reliably gives me a 4x speed boost MINIMUM every time I use it, it's so good
I'm back. Library is almost complete and it's fucking glorious. The API is dead simple, just TypedArrays with SIMD operations. The code in the screenshot runs 6x faster than the scalar JS version. It has over 700 SIMD operations; they typically run at 5x-10x JavaScript speed
6
141
6,217
I'm back. Library is almost complete and it's fucking glorious. The API is dead simple, just TypedArrays with SIMD operations. The code in the screenshot runs 6x faster than the scalar JS version. It has over 700 SIMD operations; they typically run at 5x-10x JavaScript speed
Can't believe there's still no SIMD library for JavaScript I'll be back
26
21
528
38,490
The way it works under the hood is super super cool and novel. Will share more when it's done ^^
1
38
1,818
Vanilagy retweeted
holy lerp 💀
1
1
6
292
Don't be a larper; be a lerper
3
14
734