<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>//InterKnowlogy/ Blogs &#187; Reactive</title>
	<atom:link href="http://blogs.interknowlogy.com/tag/reactive/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.interknowlogy.com</link>
	<description>Blogging the Art of Software</description>
	<lastBuildDate>Fri, 17 May 2013 18:10:54 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>Presentation Materials for Boston Code Camp 19</title>
		<link>http://blogs.interknowlogy.com/2013/03/10/presentation-materials-for-boston-code-camp-19/</link>
		<comments>http://blogs.interknowlogy.com/2013/03/10/presentation-materials-for-boston-code-camp-19/#comments</comments>
		<pubDate>Sun, 10 Mar 2013 13:36:00 +0000</pubDate>
		<dc:creator>John Bowen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Async]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Reactive]]></category>
		<category><![CDATA[TPL Dataflow]]></category>

		<guid isPermaLink="false">http://blogs.interknowlogy.com/?p=3779</guid>
		<description><![CDATA[Thanks to everyone for coming! A Survey of Multi-threading in .NET 4.5: Slides &#124; Sample Code for all 6 libraries &#124; More Samples for Async/Await Reactive Extensions: http://msdn.microsoft.com/en-us/data/gg577609TPL Dataflow: http://msdn.microsoft.com/en-us/devlabs/gg585582Async Targeting Pack: http://www.microsoft.com/en-us/download/details.aspx?id=29576]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone for coming!</p>
<p>A Survey of Multi-threading in .NET 4.5: <a href="http://blogs.interknowlogy.com/wp-content/uploads/2013/03/Threading.zip">Slides</a> | <a href="http://blogs.interknowlogy.com/wp-content/uploads/2013/03/ThreadingFeatures.zip">Sample Code for all 6 libraries</a> | <a href="http://blogs.interknowlogy.com/wp-content/uploads/2013/03/AsyncDemos.zip">More Samples for Async/Await</a></p>
<p>Reactive Extensions: <a title="http://msdn.microsoft.com/en-us/data/gg577609" href="http://msdn.microsoft.com/en-us/data/gg577609">http://msdn.microsoft.com/en-us/data/gg577609</a><br />TPL Dataflow: <a title="http://msdn.microsoft.com/en-us/devlabs/gg585582" href="http://msdn.microsoft.com/en-us/devlabs/gg585582">http://msdn.microsoft.com/en-us/devlabs/gg585582</a><br />Async Targeting Pack: <a title="http://www.microsoft.com/en-us/download/details.aspx?id=29576" href="http://www.microsoft.com/en-us/download/details.aspx?id=29576">http://www.microsoft.com/en-us/download/details.aspx?id=29576</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.interknowlogy.com/2013/03/10/presentation-materials-for-boston-code-camp-19/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mixing TPL Dataflow with Reactive Extensions</title>
		<link>http://blogs.interknowlogy.com/2013/01/31/mixing-tpl-dataflow-with-reactive-extensions/</link>
		<comments>http://blogs.interknowlogy.com/2013/01/31/mixing-tpl-dataflow-with-reactive-extensions/#comments</comments>
		<pubDate>Fri, 01 Feb 2013 04:39:05 +0000</pubDate>
		<dc:creator>John Bowen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Reactive]]></category>
		<category><![CDATA[TPL Dataflow]]></category>

		<guid isPermaLink="false">http://blogs.interknowlogy.com/?p=3683</guid>
		<description><![CDATA[The TPL Dataflow Library (TDF) from Microsoft DevLabs provides an additional method of managing asynchronous execution in .NET. Fortunately, like many of the other choices, it&#8217;s built on the same underlying constructs (primarily the Task object), allowing integration with existing solutions. One of the points of integration is provided by the IObservable and IObserver interfaces [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://msdn.microsoft.com/en-us/devlabs/gg585582.aspx" target="_blank">TPL Dataflow Library (TDF) from Microsoft DevLabs</a> provides an additional method of managing asynchronous execution in .NET. Fortunately, like many of the other choices, it&#8217;s built on the same underlying constructs (primarily the Task object), allowing integration with existing solutions. One of the points of integration is provided by the IObservable and IObserver interfaces which form the basis for the <a href="https://rx.codeplex.com/" target="_blank">Reactive Extensions</a>.</p>
<p>The basic concept of TDF involves chaining together blocks that do some processing on each data item as it flows through the chain. Blocks can be sources (ISourceBlock) or targets (ITargetBlock) or a combination of both (IPropagatorBlock).</p>
<p>The most straightforward combination of Rx and TDF involves transforming the output of a source block into an observable sequence<span id="more-3683"></span> by using the AsObservable extension method available on ISourceBlock. This allows construction of an arbitrary Dataflow chain that just needs to have some propagating output at the end. This output can then flow smoothly into an arbitrary set of Reactive fluent extension methods to further process the output. This generally terminates with a Subscribe call to executes some action on the resulting data.</p>
<pre class="brush: csharp; gutter: false; title: ; notranslate">
    IPropagatorBlock&lt;int,string&gt; source = new TransformBlock&lt;int, string&gt;(i =&gt; i.ToString());
    IObservable&lt;int&gt; observable = source.AsObservable().Select(Int32.Parse);
    IDisposable subscription = observable.Subscribe(i =&gt; Debug.WriteLine(i));
    // send some data into TDF
    source.Post(138);
</pre>
<p>A transformation in the opposite direction is also possible but it&#8217;s a little more roundabout. The AsObserver extension method on ITargetBlock allows a TDF chain to make itself available for input as an IObserver instance. Since IObserver can be used directly as an IObservable Subscribe target, any Rx sequence can set up a subscription to flow its data into the target block. The integration doesn&#8217;t feel quite as smooth in this direction due to the need for setup of the target block ahead of the subscription but it&#8217;s still a pretty clean switch.</p>
<pre class="brush: csharp; gutter: false; title: ; notranslate">
    IPropagatorBlock&lt;string, int&gt; target = new TransformBlock&lt;string, int&gt;(s =&gt; Int32.Parse(s));
    IDisposable link = target.LinkTo(new ActionBlock&lt;int&gt;(i =&gt; Debug.WriteLine(i)));
    IObserver&lt;string&gt; observer = target.AsObserver();
 
    IObservable&lt;string&gt; observable = Observable.Range(1, 10).Select(i =&gt; i.ToString());
 
    observable.Subscribe(observer);
</pre>
<p>Now that the transition can be made in either direction the possibilities are wide open. Any data can start out in either the Rx or TDF world and jump back and forth as needed to leverage features of both.</p>
<pre class="brush: csharp; gutter: false; title: ; notranslate">
    IObservable&lt;int&gt; originalInts = Observable.Range(1, 10);
 
    IPropagatorBlock&lt;int, int[]&gt; batch = new BatchBlock&lt;int&gt;(2);
    IObservable&lt;int[]&gt; batched = batch.AsObservable();
    originalInts.Subscribe(batch.AsObserver());
 
    IObservable&lt;int&gt; added = batched.Timeout(TimeSpan.FromMilliseconds(50)).Select(a =&gt; a.Sum());
 
    IPropagatorBlock&lt;int, string&gt; toString = new TransformBlock&lt;int, string&gt;(i =&gt; i.ToString());
    added.Subscribe(toString.AsObserver());
 
    JoinBlock&lt;string, int&gt; join = new JoinBlock&lt;string, int&gt;();
    toString.LinkTo(join.Target1);
 
    IObserver&lt;int&gt; joinIn2 = join.Target2.AsObserver();
    originalInts.Subscribe(joinIn2);
            
    IObservable&lt;Tuple&lt;string, int&gt;&gt; joined = join.AsObservable();
 
    joined.Subscribe(t =&gt; Debug.WriteLine(&quot;{0};{1}&quot;, t.Item1, t.Item2));
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blogs.interknowlogy.com/2013/01/31/mixing-tpl-dataflow-with-reactive-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation Materials for Boston Code Camp 18</title>
		<link>http://blogs.interknowlogy.com/2012/10/21/presentation-materials-for-boston-code-camp-18/</link>
		<comments>http://blogs.interknowlogy.com/2012/10/21/presentation-materials-for-boston-code-camp-18/#comments</comments>
		<pubDate>Sun, 21 Oct 2012 21:18:00 +0000</pubDate>
		<dc:creator>John Bowen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Async]]></category>
		<category><![CDATA[Portable Libraries]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Reactive]]></category>
		<category><![CDATA[TPL Dataflow]]></category>

		<guid isPermaLink="false">http://blogs.interknowlogy.com/?p=3500</guid>
		<description><![CDATA[Great event at a new location! I hope everyone enjoyed it. A Survey of Multi-threading in .NET 4.5: Slides &#124; Code Future-proofing your XAML Applications with Portable Libraries: Slides &#124; Code Portable Libraries Hands-On-Lab: http://tinyurl.com/plibholReactive Extensions: http://msdn.microsoft.com/en-us/data/gg577609TPL Dataflow: http://msdn.microsoft.com/en-us/devlabs/gg585582Async Targeting Pack: http://www.microsoft.com/en-us/download/details.aspx?id=29576]]></description>
			<content:encoded><![CDATA[<p>Great event at a new location! I hope everyone enjoyed it.</p>
<p>A Survey of Multi-threading in .NET 4.5: <a href="http://blogs.interknowlogy.com/wp-content/uploads/2012/10/Threading.zip">Slides</a> | <a href="http://blogs.interknowlogy.com/wp-content/uploads/2012/10/ThreadingFeaturesSample.zip">Code</a></p>
<p>Future-proofing your XAML Applications with Portable Libraries: <a href="http://blogs.interknowlogy.com/wp-content/uploads/2012/10/PortableLibraries.zip">Slides</a> | <a href="http://blogs.interknowlogy.com/wp-content/uploads/2012/10/PortableLibrariesSample.zip">Code</a></p>
<p>Portable Libraries Hands-On-Lab: <a href="http://tinyurl.com/plibhol">http://tinyurl.com/plibhol</a><br />Reactive Extensions: <a title="http://msdn.microsoft.com/en-us/data/gg577609" href="http://msdn.microsoft.com/en-us/data/gg577609">http://msdn.microsoft.com/en-us/data/gg577609</a><br />TPL Dataflow: <a title="http://msdn.microsoft.com/en-us/devlabs/gg585582" href="http://msdn.microsoft.com/en-us/devlabs/gg585582">http://msdn.microsoft.com/en-us/devlabs/gg585582</a><br />Async Targeting Pack: <a title="http://www.microsoft.com/en-us/download/details.aspx?id=29576" href="http://www.microsoft.com/en-us/download/details.aspx?id=29576">http://www.microsoft.com/en-us/download/details.aspx?id=29576</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.interknowlogy.com/2012/10/21/presentation-materials-for-boston-code-camp-18/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation Materials for San Diego Code Camp</title>
		<link>http://blogs.interknowlogy.com/2012/06/24/presentation-materials-for-san-diego-code-camp-2/</link>
		<comments>http://blogs.interknowlogy.com/2012/06/24/presentation-materials-for-san-diego-code-camp-2/#comments</comments>
		<pubDate>Mon, 25 Jun 2012 05:00:00 +0000</pubDate>
		<dc:creator>John Bowen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Async]]></category>
		<category><![CDATA[Portable Libraries]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Reactive]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://blogs.interknowlogy.com/?p=3342</guid>
		<description><![CDATA[Thanks to everyone for another great Code Camp! Future-proofing your XAML Applications with Portable Libraries: Slides &#124; Code A Survey of Multi-threading in .NET 4.5: Slides &#124; Code Visual Studio 11: http://www.microsoft.com/visualstudio/11/en-us/downloads Portable Libraries Hands-On-Lab: http://tinyurl.com/plibhol Reactive Extensions: http://msdn.microsoft.com/en-us/data/gg577610]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone for another great Code Camp!</p>
<p>Future-proofing your XAML Applications with Portable Libraries: <a href="http://blogs.interknowlogy.com/wp-content/uploads/2012/06/PortableLibraries.zip">Slides</a> | <a href="http://blogs.interknowlogy.com/wp-content/uploads/2012/06/PortableLibrarySample.zip">Code</a></p>
<p>A Survey of Multi-threading in .NET 4.5: <a href="http://blogs.interknowlogy.com/wp-content/uploads/2012/06/Threading.zip">Slides</a> | <a href="http://blogs.interknowlogy.com/wp-content/uploads/2012/06/ThreadingFeaturesSamples.zip">Code</a></p>
<p>Visual Studio 11: <a title="http://www.microsoft.com/visualstudio/11/en-us/downloads" href="http://www.microsoft.com/visualstudio/11/en-us/downloads">http://www.microsoft.com/visualstudio/11/en-us/downloads</a></p>
<p>Portable Libraries Hands-On-Lab: <a href="http://tinyurl.com/plibhol">http://tinyurl.com/plibhol</a>
<p>Reactive Extensions: <a title="http://msdn.microsoft.com/en-us/data/gg577610" href="http://msdn.microsoft.com/en-us/data/gg577610">http://msdn.microsoft.com/en-us/data/gg577610</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.interknowlogy.com/2012/06/24/presentation-materials-for-san-diego-code-camp-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reactive Extensions Released!</title>
		<link>http://blogs.interknowlogy.com/2011/06/29/reactive-extensions-released/</link>
		<comments>http://blogs.interknowlogy.com/2011/06/29/reactive-extensions-released/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 21:06:14 +0000</pubDate>
		<dc:creator>John Bowen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Reactive]]></category>

		<guid isPermaLink="false">http://blogs.interknowlogy.com/2011/06/29/reactive-extensions-released/</guid>
		<description><![CDATA[The Rx project is now officially official with the V1 release: http://blogs.msdn.com/b/rxteam/archive/2011/06/29/first-official-release.aspx The existing NuGet packages are now the official 1.0 version and there are separate packages for the Experimental 1.1 release that should get some new features for releases.]]></description>
			<content:encoded><![CDATA[<p>The Rx project is now officially official with the V1 release: <a title="http://blogs.msdn.com/b/rxteam/archive/2011/06/29/first-official-release.aspx" href="http://blogs.msdn.com/b/rxteam/archive/2011/06/29/first-official-release.aspx">http://blogs.msdn.com/b/rxteam/archive/2011/06/29/first-official-release.aspx</a></p>
<p>The existing NuGet packages are now the official 1.0 version and there are separate packages for the Experimental 1.1 release that should get some new features for releases.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.interknowlogy.com/2011/06/29/reactive-extensions-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation Materials for New Hampshire Code Camp 2011</title>
		<link>http://blogs.interknowlogy.com/2011/06/04/presentation-materials-for-new-hampshire-code-camp-2011/</link>
		<comments>http://blogs.interknowlogy.com/2011/06/04/presentation-materials-for-new-hampshire-code-camp-2011/#comments</comments>
		<pubDate>Sun, 05 Jun 2011 01:19:17 +0000</pubDate>
		<dc:creator>John Bowen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Reactive]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://blogs.interknowlogy.com/?p=1561</guid>
		<description><![CDATA[Thanks to the organizers and to everyone for coming inside on a beautiful day! Real World Reactive Extensions: Slides &#124; Code Rx Home: http://msdn.microsoft.com/en-us/data/gg577609 Reactive UI: http://www.reactiveui.net/ Harnessing XAML Templates to Power Your UI: Slides &#124; Code (WPF, SL4, SL5 Beta)]]></description>
			<content:encoded><![CDATA[<p>Thanks to the organizers and to everyone for coming inside on a beautiful day!</p>
<p>Real World Reactive Extensions: <a href="http://blogs.interknowlogy.com/BlogFiles/JohnBowen/NH2011/RealWorldReactive.zip" target="_blank">Slides</a> | <a href="http://blogs.interknowlogy.com/BlogFiles/JohnBowen/NH2011/Reacting.zip" target="_blank">Code</a></p>
<blockquote><p>Rx Home: <a href="http://msdn.microsoft.com/en-us/data/gg577609">http</a><a href="http://msdn.microsoft.com/en-us/data/gg577609">://</a><a href="http://msdn.microsoft.com/en-us/data/gg577609">msdn.microsoft.com/en-us/data/gg577609</a></p>
<p>Reactive UI: <a href="http://www.reactiveui.net/">http</a><a href="http://www.reactiveui.net/">://www.reactiveui.net</a>/</p></blockquote>
<p>Harnessing XAML Templates to Power Your UI: <a href="http://blogs.interknowlogy.com/BlogFiles/JohnBowen/NH2011/HarnessingXamlTemplates.zip" target="_blank">Slides</a> | <a href="http://blogs.interknowlogy.com/BlogFiles/JohnBowen/NH2011/Templating.zip" target="_blank">Code (WPF, SL4, SL5 Beta)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.interknowlogy.com/2011/06/04/presentation-materials-for-new-hampshire-code-camp-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation Materials for Fullerton Code Camp 2011</title>
		<link>http://blogs.interknowlogy.com/2011/01/30/presentation-materials-for-fullerton-code-camp-2011/</link>
		<comments>http://blogs.interknowlogy.com/2011/01/30/presentation-materials-for-fullerton-code-camp-2011/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 16:33:00 +0000</pubDate>
		<dc:creator>John Bowen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Reactive]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://blogs.interknowlogy.com/2011/01/30/presentation-materials-for-fullerton-code-camp-2011/</guid>
		<description><![CDATA[Thanks to everyone who attended! &#160; Real World Reactive: Slides&#160; &#124;&#160; Before and After Code &#160; Seeing in XAML: Slides]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone who attended!</p>
<p>&#160;</p>
<p>Real World Reactive: <a href="http://blogs.interknowlogy.com/BlogFiles/JohnBowen/Fullerton11/RealWorldReactive.zip">Slides</a>&#160; |&#160; <a href="http://blogs.interknowlogy.com/BlogFiles/JohnBowen/Fullerton11/RxBeforeAfterCode.zip">Before and After Code</a></p>
<p>&#160;</p>
<p>Seeing in XAML: <a href="http://blogs.interknowlogy.com/BlogFiles/JohnBowen/Fullerton11/SeeingInXaml.zip">Slides</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.interknowlogy.com/2011/01/30/presentation-materials-for-fullerton-code-camp-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation Materials for Boston Code Camp 14</title>
		<link>http://blogs.interknowlogy.com/2010/10/03/presentation-materials-for-boston-code-camp-14/</link>
		<comments>http://blogs.interknowlogy.com/2010/10/03/presentation-materials-for-boston-code-camp-14/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 21:51:00 +0000</pubDate>
		<dc:creator>John Bowen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Reactive]]></category>

		<guid isPermaLink="false">http://blogs.interknowlogy.com/2010/10/03/presentation-materials-for-boston-code-camp-14/</guid>
		<description><![CDATA[Thanks to everyone who attended! Sorry we didn’t get through everything but we got lots of great questions! Reactive Extensions Quickstart: Slides &#124; Code The code includes both before and after copies of the demo application. Rx Project home (downloads on the lower right): http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx Hands on lab: http://blogs.msdn.com/b/rxteam/archive/2010/07/15/rx-hands-on-labs-published.aspx Rx Wiki: http://rxwiki.wikidot.com/]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone who attended! Sorry we didn’t get through everything but we got lots of great questions!</p>
<p>Reactive Extensions Quickstart: <a href="http://blogs.interknowlogy.com/blogfiles/johnbowen/Boston10/ReactiveQuickstart.zip">Slides</a> | <a href="http://blogs.interknowlogy.com/blogfiles/johnbowen/Boston10/RxBeforeAfterCode.zip">Code</a></p>
<p>The code includes both before and after copies of the demo application.</p>
<p>Rx Project home (downloads on the lower right): <a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx">http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx</a></p>
<p>Hands on lab: <a href="http://blogs.msdn.com/b/rxteam/archive/2010/07/15/rx-hands-on-labs-published.aspx">http://blogs.msdn.com/b/rxteam/archive/2010/07/15/rx-hands-on-labs-published.aspx</a></p>
<p>Rx Wiki: <a href="http://rxwiki.wikidot.com/">http://rxwiki.wikidot.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.interknowlogy.com/2010/10/03/presentation-materials-for-boston-code-camp-14/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
