These are chat archives for pozadi/kefir

Feb 2015
Roman Pominov
Feb 16 2015 00:00
@pqr looks good. there is no silver bullet for that kind of problems, just use what works for you
@pqr also check out this tutorial written by @raimohanska
Juha Paananen
Feb 16 2015 07:59

Good morning! Regarding the library choice between Kefir/Bacon, I think it would make sense for me+@pozadi to work together on some kind of objective comparison between the libs, maybe including RxJs too. Not as a pissing contest but to make it easier for users to pick the right tool based on actual data. My current understanding is

1) Kefir has demonstratably better performance
2) API's are pretty equal, but I haven't compared thoroughly
3) More plugins/integrations available for Bacon, I guess.
4) Only Bacon has glitch prevention (see
5) Bacon is more used in the community/industry and is thus more "field-tested".

I'm not saying that points 3,5 imply that Bacon is any better, just that to some users this is an important criterion when choosing libs. What do you think?

Just occurred to me that it might be a cool idea to try to merge the libs into one and make some of Bacon's features (like glitch prevention) optional not to sacrifice performance if certain feature isn't needed. This way we could better concentrate our efforts and prevent duplication. Not sure if this approach is actually feasible. Just thinking. Now back to work. Have a great week guys!
Oh, one more thought :) Would be awesome if someone tried to run Kefir implementation against Bacon.js tests to see how far Kefir is from passing the same tests. My Bacon.js development is driven purely based on the test set without any manual testing, so if a new impl passes the tests and performs better, I'll merge it in :)
Roman Pominov
Feb 16 2015 10:54
Hi! I think I can create method per method comparison table of Bacon and Kefir public API.
I once curated something like this, but there was a lot of changes in Kefir back then, and I gave up to keep it up to date.
It will pretty much cover differences in API but not in implementation details.
Roman Pominov
Feb 16 2015 11:03
Then it'll be more clear if a merge is possible, and how much work to de done if we decide to do it.
Hope I'll be able to work on this table at this weekend.
Totally agree on all 5 points, btw.
Juha Paananen
Feb 16 2015 12:18
Sounds great!
Rodolfo Hansen
Feb 16 2015 15:29
Ulric Wilfred
Feb 16 2015 23:33
I’m trying to use repeat(), but I got confused a bit. It is said that synchronous streams with repeat and take should end, and they do if I return some inline falsey value. but if I use some code like:
uncommenting last runTill call actually hangs the process: repeat is performed once, but takeWhile never ends. Is there my fault in the code or I got something wrong or…?
Ulric Wilfred
Feb 16 2015 23:39
This way it works, of course:
I need object with flags to zip several streams and check if the longest stream finished, so I tried to master the technique with a single one at first :)
Ulric Wilfred
Feb 16 2015 23:47
though this variant also hangs (if last line is uncommented):
...may be I know why, first stream being synchronous, waits forever and blocks the second-stream check.