Rx presentation template available
-
Freitag, 6. August 2010 22:36Besitzer
Hi folks,
To assist the community in spreading the word on Rx, we've just uploaded a PowerPoint slide template for talks about Rx. It mostly follows the Hands-on Labs flow of introducing Rx and explaining various concepts, but also covers some theoretical notions like duality, hot and cold observables, etc. Speaker notes are included, hinting at possible ways to illustrate and explain the aspects covered in the slides. For demos, the speaker notes suggest a possible demo flow, and the HOLs will provide you the code snippets needed. With regards to timing for session deliveries, we've delivered this talk quite a few times already, fitting nicely in a 75' talk (obviously depending on interaction levels with the audience).
Feel free to take the slides, reuse and adapt them to evangelize the Rx technology. Obviously we value a reference to our sites, including the forums. If you want to contribute and share slides with the rest of the community, feel free to post them here (Windows Live SkyDrive is a nice offering to share out files). Help us, help you! :-)
Cheers,
-Bart
using (Microsoft.Sql.Cloud.DataProgrammability.Rx) { Signature.Emit("Bart De Smet"); }
Alle Antworten
-
Freitag, 6. August 2010 22:44WOW! Fantastic slides. Thank you very much for preparing and sharing...
-
Samstag, 7. August 2010 04:27
Just finished reading the deck - I like it. Except when it ended with just the mention of IQbservable, because I was kind of hoping for more about it (I am sure you're working on that). It's a great introduction.
-
Sonntag, 8. August 2010 12:56
*g* some of the slide annotations are quite funny, for example: "IQbservable (yes, we know about the name, move on!) ... " phonetic spelling could help here :). I guess it is best to speak of of it as IQueryableObservable rathern than ICubeservable, isn't it?
I think the main problem of presentations about Rx is the depth of the content: It is of course impossible to "teach" Rx inside-out in 75 minutes. I personally think it is best to motivate and encourage people to go through the reactive functional-programming brain-inversion procress and start experimenting with Rx - this can in places be quite painful and challenging but if you mastered it it gives you the ultimate power-tool to orchestrate potentially an arbitrary number concurrently running workflows made up of composable monad chains.
-
Sonntag, 8. August 2010 20:57
I think the name is here to stay despite the moans. IRxQueryable would have been ok, but "ICubeServable" is actually more pronouncable, but I bet there will endless "how do you pronounce ..." questions for quite a while. Well, I don't want to get into a color of the bikeshed thing so I just erased my list of potential names (none were that great anyways) from this post. ;)
-
Sonntag, 8. August 2010 20:59
"...the reactive functional-programming brain-inversion procress ..."
Can you describe it?
-
Montag, 9. August 2010 01:58
Hi Richard,
>> "...the reactive functional-programming brain-inversion process ..."
> Can you describe it?Haha :) How would you?
I'd like to give it a shot:
- Start very open-minded.
- Install Rx.
- Play with the hands-on-lab.
- Search for keywords in this forum to find interesting and challenging questions posed by the community.
- Try to answer forum questions yourself through experimentation, by actually writing code; however, don't cheat and look at existing answers until you feel that you've exhausted all obvious possibilities :)
- Ask your own questions in the forum.
- Realize that your brain has just been inverted.
- Rejoice.
- Dave
http://davesexton.com/blog -
Dienstag, 10. August 2010 00:59I'm still working on this brain inversion process. ;) It's taking a while. I definitely need to write more Rx code.
-
Dienstag, 10. August 2010 09:13
"...the reactive functional-programming brain-inversion procress ..."
Can you describe it?
Rx (and Linq in general) confronts you with a whole bunch of functional programming concepts. For example:
- Lambda Expressions (Anonymous functions ) & Higher-order-functions (c.f. Where(Func<>), Select(), Zip() ..)
- Continuation (used everywhere, e.g. Subscribe(Action<T>, Action<Exception>, Action))
- Continuation passing style (cf. Observable.Create())
- Tail recursion vs. looping (cf Scheduler.Schedule(Action<Action<>>))
- Coroutines (cf. Observable.Iterate())
- Monads (c.f. IEnumerable & IObservable return is EnumerableEx.Return() & bind is SelectMany())
*g* check out who is listed here under "M": http://en.wikipedia.org/wiki/Category:Functional_programming
Although these concepts are also part of C# Rx is for me THE .net library which makes most out of these functional aspects. One of the hard points is that nobody tells you about these functional conecpts .. and just by using Rx you informally learn them (which gives you the possibility to discover their potential on you own .. which takes some time but triggers of course a very strong learning effect).
My focus in asynchronous programming since Rx has completely changed from Threads to IObservable sequences. Most of the time I can completely skip thinking about threads .. actually there are times in which I execute more parallel operations than would be possible with threads (e.g. my machine denies creating more than 3,000 threads but I can run 10,000 observables...). Most of my programms consist of quite complex forks and joins (e.g. with SelectMany() or ForkJoin()), very elegant Retry & Back-Off logic and nearly 100% asynchronous IO operations. Most of the time I convert APM Begin/End pairs with Defer() into observables that run the method with a specific set of parameters everytime somebody subscribes...
So if you aks the essence of the "mind-inversion": It is completed when you can fluently read and fully understand most Rx code. The subtle (hidden) concepts like Hot & Cold observables make Rx quite challenging.
-
Dienstag, 10. August 2010 12:54
Thank you for putting these together. There are a couple areas where I would recommend modifying the focus slightly.
As was previously mentioned, it is impossible to teach the ins and outs of Rx in 75 minutes. Instead of focusing on the abstract theoretical (ie. Mathmatical dualities), I tend to focus on demonstrating the various core use cases - Async, Event combinators, Continuous Events, etc. That way, the attendee has an idea of when Rx makes sense so that they can go out and explore it more when they have the need.
Second, I would like to see at least one demo in VB.Net. Of course, with the language parity focus in the language teams, more would be better.
If anyone is interested, I have slides and samples for my recent Rx presentations available at http://www.thinqlinq.com/Downloads/RX_Wpf.zip and http://www.thinqlinq.com/Downloads/RX_Silverlight.zip. The slides aren't annotated at this point, but you are welcome to take what works for you. I've even included some animated marble diagrams in the slides. Please let me know if you like them or recommend modifications.
Jim
http://www.LinqInAction.net - "LINQ In Action", The book is now available. Don't wait for the movie

