Learn ReactiveUI

When I first looked at ReactiveUI (RxUI), I found that there is not much documentation out there about this awesome framework. Apart form the blogpost-style ebook, made by Paul Betts back in 2011 and the actual paper book from APress (this one), there were nearly no other comprehensive sources of information. And the release cycle of RxUI was so dynamic that these 2011 books looked badly outdated, compared with current development of the framework.

Now, I realize that conceptually the information is still very much valid. Reading the Rx book is recommended no matter what since it explains the basics of the Rx itself. Understanding of Rx is a key to get more clear vision of the RxUI, for sure.

However, I managed to find at least two recent talks made by active contributors of the framework - Brendan Forster (@shiftkey) and James Nugent (@jen20). By the way, James was sitting in our class in SkillsMatter when I was trying to learn something from Gregg Young during his advanced CQRS class back in June this year, and I have no idea this guy is deeply involved in RxUI, otherwise he wouldn't so easily escape :)

Here are the talks:

Building Reactive User Interfaces at SkillsMatter Progressive .NET 2014, you need to register/login to view it. Nearly three hours, from whose at least 2,5 hours is coding, really cool. All labs from this talk can be found on GitHub. I took some effort to migrate these labs to RxUI 6 and James kindly accepted my pull request.

ReactiveUI - Turning MVVM up to 11 at NDC Oslo 2014. As you can see at the end of this talk, the only person, who was able to formulate a question for Brendan was James :) However, having some baggage of getting into RxUI from before and armed by some extra knowledge from James' talk, it all makes perfect sense. Some new sides of the framework opened up and I am really looking forward to start hacking with it. The repository for this talk is also on GitHub.

What's the buzz?

Paul and Brendan point out that RxUI makes possible to have MVVM without XAML, also on Windows platform. With broad platform support, lost of code that really makes sense, i.e. ViewModels, can be reused across platforms, leaving only UI-specific things to be bound to platforms. Also, even this factor can be mitigated, since RxUI 6 supports Xamarin Forms.

In addition, and this is my personal interest, I really see lots of potential in refactoring brownfield Winforms and WPF applications that are usually nothing else than big balls of mud (although WPF applications tend to be better designed at times) to something clearly separated and testable. Adding decent DDD and CQRS goodness to the backend can turn some old crap to a much better thing - to work with, to test, and surely to develop.

See also