1,038 karma · joined December 12, 2012
Happy to answer any questions.
My GtiHub repo for Webamp (the interactive, in-browser Winamp clone) can be found here: https://github.com/captbaritone/webamp
I wrote a post about the design of the site here: https://jordaneldredge.com/blog/winamp-skin-musuem/
And then gave a meetup talk based on that post which can be found here: https://www.youtube.com/watch?v=jEUr_NzP6xg&t=2s
Is it one of these? https://skins.webamp.org/?query=Yaxay3
https://github.com/jberg/butterchurn
If you want to visualize audio coming from the browser (Spotify etc) check out his browser extension: https://chrome.google.com/webstore/detail/butterchurn-music-...
It's not yet mentioned in the Butterchrun readme, but we recently built compiler that compiles the visualizer preset code to Webassembly in your browser and got a 73% improvement in rendering performance. Blog post here: https://jordaneldredge.com/blog/speeding-up-winamps-music-vi...
I'm not sure how it would scale. In general, if you employ windowing all UI rendering issues are bounded by the number of items visible at a time which can let you get away with a lot of craziness, but if the number of items on the screen is as much as the number of characters on the screen... that could end up being a bit much.
I know a lot of things like that end up using shaders to render text, but that is a lot of added complexity.
Note: Nobody thinks this is actually a good idea, but it's kidna fun.
This project is open source and the code, and instructions to use it on your site, can be found here: https://github.com/captbaritone/webamp
Webamp's ability to render classic Winamp skins led to a collaboration with the Internet Archive where we preserved ~70k (and counting) classic Winamp skins.
I also built the Winamp Skin Museum (https://skins.webamp.org/) where you can infinite scroll through those 70k skins and try them out in your browser with one click.
Most recently I've been experimenting with improving the visualizer's performance with an in-browser Eel-Wasm compiler. Blog post here: https://jordaneldredge.com/blog/speeding-up-winamps-music-vi...
The project has given me lots of enjoyment over the years, and I'm glad to see that others are enjoying it as well.
1. Rendering performance (how efficient is rendering) 2. Startup speed (how large is our compiler) 3. Preset transition speed (if our compiler is slow, we might drop frames when switching between presets)
I would love to explore compiler optimizations (after all, this project was motivated by an interest in learning about compilers!) but I don't think it's the right thing to pursue yet. Moving Eel evaluation into Wasm was such a large win, that the actual Eel evaluation (the part which we could optimize in our compiler) is now a very very tiny slice of rendering. Most of the remaining time is still spent in WebGL and JavaScript.
Adding optimization passes would slightly increase our bundle size leading to slower startup. If the bundle size increase is minimal, that's probably fine, but trying to pull `wasm-opt` into the browser would probably be a significant increase.
Finally, as you watch the visualizer, it transitions from preset to preset every several seconds. This means that we are running the compiler at the same time as rendering. If optimization passes significantly increase cost of compilation, compiling could cause us to drop frames.
We could avoid this risk by trying to chop compilation up into smaller async tasks, or moving compilation to a web-worker, but that would involve adding some extra complexity to the system.
In summary, if we can speed up the other aspects of rendering to the point where executing the compiled Wasm is the bottleneck optimizations would be an interesting next step, but we would have to weigh them against the potential costs of slower startup and slower compilation.
Twitter follows/unfollows for me, my wife, and my Twitter bot
Stock movements for the few stocks (RSUs) I have
Confirmation that several daily backups (db dumps etc) were successful
Upcoming SSL cert and domain expirations
New GitHub stars
Disk space left on my personal server (running out tends to make it crash)
I know that looks like a lot of stuff, but the goal is for the script to programmatically determine which ones cross the threshold into being actionable/important and to hide/de-prioritize the unimportant ones for me so I can confidently ignore them and focus on any important ones.
If anyone is interested Webamp is open source and can be found here: https://github.com/captbaritone/webamp