
Pourover and Tamper – Client-side superfast collection management from the NYT - danso
https://source.opennews.org/en-US/articles/introducing-tamper-and-pourover/
======
cmpb
Looks pretty feature-full, and I really like the idea of compression /
decompression of data for the browser. I don't like how complicated the
PourOver API seems to be, but maybe that's just a side-effect of it being so
feature-rich.

We open-sourced our client-side datatable, Knockout Datatable. [0] While it
definitely doesn't come shipped with as many of the niceties of Pourover, the
built-in ':'-delimeted filtering is really handy for quickly providing both
searching and a dropdown of pre-built filter choices. Additionally, it uses
Knockout.js which, in my opinion, is much easier to extend and use than many
other client-side MV* frameworks.

[0] [https://github.com/immense/knockout-
datatable](https://github.com/immense/knockout-datatable)

------
NathanKP
This looks really useful. I may take a stab at creating a Node.js encoder
later today. If it can integrate nicely with Express and/or Restify and use
content negotiation to allow the client to specify when it has support for
Tamper then that would be a very useful piece of middleware.

~~~
albertoleal
I'd be looking forward to that.

------
saraid216
Because confusing, there's a parallel discussion over here:

[https://news.ycombinator.com/item?id=7603647](https://news.ycombinator.com/item?id=7603647)

------
iamdanfox
Loving reading through the source! I stumbled across some ingenious perf
optimisations too... looks like duplicated code, but I guess they think it's
worth it!
[https://github.com/NYTimes/pourover/blob/master/pourover.js#...](https://github.com/NYTimes/pourover/blob/master/pourover.js#L319)

------
vjeux
If your model is a list of enums where you know all the possible values, you
can use SmallHash which encodes to the smallest possible string.

[http://blog.vjeux.com/2009/javascript/smallhash-
information-...](http://blog.vjeux.com/2009/javascript/smallhash-information-
compression.html)

