Grunge.js is what I can call my first major Open Source project. It launched without much fanfare. And it’s been stagnant ever since. It has seen little activity on Github, and almost no one has actually used it on a real project. Hell, even I’ve never actually used it on a project.

Grunge.js was my way to put generators to use and make something interesting. Turns out, Lazy.js does most of the things it does, and the few things that it does that other libraries don’t are edge-cases that people usually don’t care about.

Grunge.js, I thought, was going to turn into just a library for academic interest, but then I saw transducers and js-channels. At first, I didn’t really get it, but then I saw how amazing transducers could be.

They are fast, and extremely flexible. They make it possible to treat channels and observables as just another collection you can map over.

However amazing transducers are, they are not designed to be like other javascript based utility libraries. It’s almost a one-to-one conversion of ideas from clojure.

This where I want to take Grunge. Grunge.js 2.0 should do what transducers do for you, but in a syntax that is more familiar to javascript developers. And, I’ll also have lazy evaluation, so that should be pretty awesome. I can’t wait to see how it performs.