Top all-time · #3452
Jordan Eldredge
Personal blog · jordaneldredge.com/blogprogrammingweb
Jordan Eldredge's personal blog at jordaneldredge.com covers programming and web. Since 2014, 22 different Hacker News readers have linked it 73 times, most often “Winamp2-Js: A Reimplementation of Winamp 2.9 in HTML5 and JavaScript”. It is still writing: the last post was on 2026-10-24, and you can follow it by feed.
Too few sampled comments (13) to say how often HN recommends it.?
Why HN links it
HN readers link Jordan Eldredge's posts on Webamp, his HTML5/JavaScript reimplementation of Winamp, and on WebAssembly speedups for music visualisers. Others cite his posts against piping curl into sh.
Summarised by Claude from a sample of 13 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
About Jordan Eldredge
Most-linked posts?
- /blog/one-way-curl-pipe-sh-install-scripts-can-be-dangerous/5 people · 5 mentions · first linked 2015-07-20
- Winamp2-Js: A Reimplementation of Winamp 2.9 in HTML5 and JavaScript4 people · 5 mentions · first linked 2017-02-06
- We made our music visualizer 73% faster by compiling to WASM in the browser2 people · 12 mentions · first linked 2021-04-02
- From Opera to Tech2 people · 2 mentions · first linked 2024-10-21
- Rendering Animated .ani Cursors in the Browser2 people · 2 mentions · first linked 2021-05-03
What Hacker News says?
For those who don't want to navigate Twitter for whatever reason (tracking, slows down your browser, bad UI, etc.), here's the content from the thread (the images and videos are still Twitter-hosted, by the way): ----------------------------------- It's done! Winamp2-js ( https://jordaneldredge.com/projects/winamp2-js/ ) finally supports all three windows! To celebrate, here's a list of some of the cool things it ca…
Comment linking /projects/winamp2-js/
on “A Reimplementation of Winamp 2.9 in HTML5 and JavaScript”Submitted Investigating corrupt Winamp skins as a story · 615 points
HN discussionI'm using Chrome by the way. #1 - TypeError: Object.entries is not a function(…) e.(anonymous function) @ winamp.js:38 #2 - winamp.js:49 Uncaught (in promise) TypeError: Object.entries is not a function at _ ( https://jordaneldredge.com/projects/winamp2-js/built/winamp.... ) at Ct.beginWork ( https://jordaneldredge.com/projects/winamp2-js/built/winamp.... ) at i ( https://jordaneldredge.com/projects/winamp2-js/built…
Comment linking /projects/winamp2-js/built/winamp.js:38:167566
on “A Reimplementation of Winamp 2.9 in HTML5 and JavaScript”Submitted Winamp 2 in HTML5 as a story · 299 points
HN discussionTry it out here: https://jordaneldredge.com/projects/winamp2-js/
Comment linking /projects/winamp2-js/
on “A Reimplementation of Winamp 2.9 in HTML5 and JavaScript”Submitted Winamp2-Js: A Reimplementation of Winamp 2.9 in HTML5 and JavaScript as a story · 232 points
HN discussionDid you visit the app ( https://jordaneldredge.com/projects/winamp2-js/ ) and press play?
Comment linking /projects/winamp2-js/
on “A Reimplementation of Winamp 2.9 in HTML5 and JavaScript”Submitted Rendering "modern" Winamp skins in the browser as a story · 119 points
HN discussionJordan Eldredge, the author, has done some amazing WinAmp-related projects over the years, including WebAmp (a web-based, from-scratch reimplementation of much of WinAmp) and a WASM engine for WinAmp-style music visualisation. His project page: https://jordaneldredge.com/projects/
Comment linking /projects/
on “Investigating corrupt Winamp skins”Submitted Grats: A More Pleasant Way to Build TypeScript GraphQL Servers as a story · 75 points
HN discussionOpening it in a text editor is not sufficient. With clever use of 'sleep' you can even have the server return a malicious payload only if it thinks its getting immediately piped to sh[0]. If you're opening it in a browser to check, you've also got to worry that the server may be looking at curl's user agent to decide whether to serve up a malicious payload[1]. [0] https://www.idontplaydarts.com/2016/04/detecting-cur…
Comment linking /blog/one-way-curl-pipe-sh-install-scripts-can-be-dangerous/
on “The Line of Death”Submitted In React {Transitions} = F(state) as a story · 39 points
HN discussion> You still need to access the DOM, which can't be done directly from WASM. Maybe someday it will happen? You can access the DOM through JavaScript glue. These Rust WASM frameworks do that: - Leptos: https://www.leptos.dev/ - Sycamore: https://sycamore.dev/ - Yew: https://yew.rs/ - Dioxus: https://dioxuslabs.com/ Eventually you won't need the glue. > Okay, so use canvas instead and do all UI inside WASM? You can do…
Comment linking /blog/speeding-up-winamps-music-visualizer-with-webassembly/
on “If not React, then what?”Submitted We made our music visualizer 73% faster by compiling to WASM in the browser as a story · 30 points
HN discussionThat looks very cool, but I'd appreciate a bit of context. Maybe it's a work in progress? Edit: Maybe it's a WIP, it's not linked from the author's project page http://jordaneldredge.com/projects/ I found a Github link deep at the bottom of the page: https://github.com/captbaritone/winamp2-js
Comment linking /projects/
on “Winamp 2 in HTML5”Submitted A nice way to render Markdown in React apps as a story · 19 points
HN discussionSpeaking specifically about Webamp, it is a manual reimplementation in JavaScript. But we did use Wasm as a tool for the music visualizer: https://jordaneldredge.com/blog/speeding-up-winamps-music-vi...
Comment linking /blog/speeding-up-winamps-music-visualizer-with-webassembly/
on “The Winamp Skin Museum is powered by a SQLite3 database with 1.2GB of metadata”Submitted Gzip hates your DRY code as a story · 4 points
HN discussionThanks! The list is ordered by the most number of likes/retweets from the @winampskins twitter bot I run. 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
Comment linking /blog/winamp-skin-musuem/
on “Webamp: Winamp 2 in the browser”Submitted Rendering Animated .ani Cursors in the Browser as a story · 3 points
HN discussionWe recently took on a project to use Wasm to speed it up a bit. Blog post here: https://jordaneldredge.com/blog/speeding-up-winamps-music-vi...
Comment linking /blog/speeding-up-winamps-music-visualizer-with-webassembly/
on “Webamp: Winamp 2 in the browser”Submitted React's useTransition and state update reordering as a story · 2 points
HN discussionHey! Project author here! Happy to answer any questions. 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/…
Comment linking /blog/speeding-up-winamps-music-visualizer-with-webassembly/
on “Webamp: Winamp 2 in the browser”Submitted A VSCode Extension to Clarify Operator Precedence in JavaScript as a story · 2 points
HN discussionThe difference lately is the number of tools that are now in place for WebAssembly development and the new extensions to WebAssembly (WasmGC, Memory64, etc.). Despite 28 years of effort at optimization, JavaScript is outperformed by WebAssembly. There's not much coming back from that: https://jordaneldredge.com/blog/speeding-up-winamps-music-vi... https://www.amazon.science/blog/how-prime-video-updates-its-... https…
Comment linking /blog/speeding-up-winamps-music-visualizer-with-webassembly/
on “The tragedy of running an old Node project”Submitted Rendering Animated .ani Cursors in the Browser as a story · 2 points
HN discussionA URL and an IP are not equal. Building a script that acts differently for a web browser, a normal download, and curl, is trivial, and I've seen it happen. Here's a proof-of-concept[0] someone else wrote. Manually downloading is safer, at least you can review, curling straight into a shell is inherently unsafe. The better option is still a package manager, but curling straight to a shell is very unsafe. [0] https://…
Comment linking /blog/one-way-curl-pipe-sh-install-scripts-can-be-dangerous/
on “Microsoft cURLs too”Submitted Mainlining Nostalgia: Making the Winamp Skin Museum as a story · 2 points
HN discussionNo. https://jordaneldredge.com/blog/one-way-curl-pipe-sh-install...
Comment linking /blog/one-way-curl-pipe-sh-install-scripts-can-be-dangerous/
on “SpaceVim – Like Spacemacs, but for Vim”Submitted You're underusing Underscore as a story · 2 points
HN discussion