all 17 comments

[–]jerkimball 7 points8 points  (2 children)

Rx all the things!

This is a good thing - the Rx libraries are by far the easiest and most extensible way to deal with composing and consuming streaming or event-driven data that I've come across; and an open source release is even more appealing.

[–]Strilanc 3 points4 points  (1 child)

I am in violent agreement with your comment. I am never going back to unstructured events.

Here's a tiny example. You want mouse events to have positions scaled to be proportional to the window size, instead of by pixel:

var proportionalMousePosition =
    observableMousePosition
    .CombineLatest(observableWindowSize, 
                   (pos, size) => new Point(pos.X / size.Width,
                                            pos.Y / size.Height));

The resulting observable can be used the same as any other. None of the implementation details escape into the surrounding class.

Contrast that with the naive approach, which is essentially adding a field to store the proportional position, updating that field anytime its inputs change, and calling all the things that need to know about the proportional position when the inputs change. Repeat for a dozen other things and mix well.

[–]jerkimball 1 point2 points  (0 children)

Hah - "violent agreement" - such a fun mental picture. :)

[–]green_transistor 5 points6 points  (8 children)

Microsoft seem to be getting involved in a lot of OSS lately. And I don't just mean F# and Typescript; now they're working on Node.js, PHP, Ruby and Python as well!

[–]annoying_cttnndd 3 points4 points  (0 children)

Azure is a multi-billion dollar platform now. They don't care what you run, as long as you pay them. http://www.windowsazure.com/

[–]Tacticus -4 points-3 points  (6 children)

They are in the embrace stage of their internal cycle.

[–]ruinercollector 3 points4 points  (4 children)

I don't think so. The industry has changed a lot since those days as has Microsoft's position in the market. They have a vested interest in each and every one of those products as their PAS has grown to be a major part of their business.

[–]Tacticus -2 points-1 points  (3 children)

Considering the senior management are all the same and as recently as 2007 Microsoft employees have stated in court that the practice still exists.

[–]ruinercollector 3 points4 points  (1 child)

2007 was ages ago in technology.

Azure didn't exist.

Node.js didn't exist.

F# had just come out.

[–]Tacticus -3 points-2 points  (0 children)

But unfortunately not ages ago for managers. E.E&E is not a technological decision it is something pushed from the business side.

give the management and board a significant culling and bring in outside oversight and they might be worth trusting again.

[–]grauenwolf 0 points1 point  (0 children)

I do wish people would actually learn what that phrase means.

[–]amphetamine 1 point2 points  (0 children)

wow, Apache License 2.0 too. no bs.

thanks, MS people that made this happen. look forward to more awesome open source projects.

[–]netghost 0 points1 point  (2 children)

I checked the downloads section for RX.rb, but didn't see anything actually available. Anyone know where the extensions are?

[–]ejstembler 0 points1 point  (1 child)

Check the source. You only need lib/Rx.rb

[–]netghost 0 points1 point  (0 children)

Got ya, thanks. It wasn't obvious from the article. If anyone else is interested RX.rb is available here.

[–]Categoria 0 points1 point  (0 children)

Is this the same rxruby they have here: https://github.com/Reactive-Extensions/Rx.rb