<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Comment Feed for Justin Bailey</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Niners/Justin Bailey/Comments/RSS"></atom:link>
	<image>
		<url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
		<title>Justin Bailey</title>
		<link></link>
	</image>
	<description></description>
	<link></link>
	<language>en</language>
	<pubDate>Sun, 26 May 2013 05:27:40 GMT</pubDate>
	<lastBuildDate>Sun, 26 May 2013 05:27:40 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<item>
		<title>Re: LINQ - Composability Guaranteed</title>
		<description>
			<![CDATA[<p>Topics for the next episode - TeX! I'd bet money Brian and Erik are TeX freaks from way back ...</p><p>&nbsp;</p><p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/Beckman-Meijer-Overdrive/Beckman-Meijer-Overdrive-LINQ-Composability-Guaranteed#c634677752343719547</link>
		<pubDate>Mon, 19 Mar 2012 17:33:54 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/Beckman-Meijer-Overdrive/Beckman-Meijer-Overdrive-LINQ-Composability-Guaranteed#c634677752343719547</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: Checking In: Larry Osterman - 26 Years of Programming at Microsoft and Counting</title>
		<description>
			<![CDATA[<p>Great interview! I went to my local library and checked out &quot;Writing Efficient Programs&quot; - can't wait to see how it still applies.</p><p>I was SO glad EriK asked about the TeXBook. It was disappointing that Larry only worked with it for a summer though - TeX is a mind blow.</p><p>I suspect Erik is a TeX freak - am I right? Maybe he'd do a deep dive on it <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p><p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Checking-In-with-Erik-Meijer/Checking-In-Larry-Osterman-26-Years-of-Programming-at-Microsoft#c634614024194981283</link>
		<pubDate>Thu, 05 Jan 2012 23:20:19 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Checking-In-with-Erik-Meijer/Checking-In-Larry-Osterman-26-Years-of-Programming-at-Microsoft#c634614024194981283</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: Writing modern C++ code: how C++ has evolved over the years</title>
		<description>
			<![CDATA[ <p>Memory safe??? I'm very intrigued. C&#43;&#43; burned me years ago. I would love to see that times have changed.</p><p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Events/Build/BUILD2011/TOOL-835T#c634517908609295473</link>
		<pubDate>Fri, 16 Sep 2011 17:27:40 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Events/Build/BUILD2011/TOOL-835T#c634517908609295473</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: Future directions for C# and Visual Basic</title>
		<description>
			<![CDATA[<p>I am so excited to see the Rosyln CTP. The demo Anders gives really impresses.</p><p>Caller Info attributes: pretty neat. Immediately I want to know why &quot;CallerType&quot; is missing. &quot;CallerMemberName&quot; just begs for it?</p><p>Another question: Will the attributes be available anywhere but optional parameters? Why not allow them on any assignment? Then I can write:</p><p><pre class="brush: csharp">
var line = -1;
Console.WriteLine(&quot;Printing at line {0}!&quot;, [CallerLine] line = 0);
</pre></p><p>I know I can create wrapper method but it seems like ceremony.</p><p>Don't get me wrong tho, I am thrilled to see these features. Maybe I'm just bikeshedding <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' />.</p><p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Events/Build/BUILD2011/TOOL-816T#c634517900610931212</link>
		<pubDate>Fri, 16 Sep 2011 17:14:21 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Events/Build/BUILD2011/TOOL-816T#c634517900610931212</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: Future directions for C# and Visual Basic</title>
		<description>
			<![CDATA[ <p>@<a href="/Events/BUILD/BUILD2011/TOOL-816T#c634517773401641060">where</a>:Seems to be available now <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p><p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Events/Build/BUILD2011/TOOL-816T#c634517841681563024</link>
		<pubDate>Fri, 16 Sep 2011 15:36:08 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Events/Build/BUILD2011/TOOL-816T#c634517841681563024</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: Chris Hawblitzel and Juan Chen: Introduction to Typed Assembly Language (TAL)</title>
		<description>
			<![CDATA[ <p>Great video! Juan Chen has done some really impressive work. In particular, she formalized a big chunk of the Sparc instruction set. Yes, typed machine language <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p><p>Greg Morrisett's papers are worth reading. I found &quot;TALx86: A Realistic Typed Assembly Language&quot; to be the most accessible (<a href="http://www.cs.cornell.edu/talc/papers.html">http&#58;&#47;&#47;www.cs.cornell.edu&#47;talc&#47;papers.html</a>).</p><p>Atsushi Ohori wrote a paper that treats typed machine languages as proof systems. Very abstract but impressive too: &quot;A Proof Theory for Machine Code&quot; (<a href="http://www.pllab.riec.tohoku.ac.jp/~ohori/research/LogicalMachineRevOct2005.pdf">http&#58;&#47;&#47;www.pllab.riec.tohoku.ac.jp&#47;&#126;ohori&#47;research&#47;LogicalMachineRevOct2005.pdf</a>)<strong>.</strong></p><p>Unfortunately none of the research compilers or languages (including Cyclone) evolved into something 'real'. Maybe Microsoft will release &quot;Verified C#&quot; with Visual Studio 2011??? <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p><p><a name="tic00_scale_tal"></a></p><p><a name="tic00_scale_tal"></a>Thanks for putting these two on, really cool to see!</p><p><a name="tic00_scale_tal"></a></p><p><a name="tic00_scale_tal"></a><strong><br></strong></p><p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Chris-Hawblitzel-and-Juan-Chen-Introduction-to-Typed-Assembly-Language-TAL#c634407469920000000</link>
		<pubDate>Wed, 11 May 2011 21:43:12 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Chris-Hawblitzel-and-Juan-Chen-Introduction-to-Typed-Assembly-Language-TAL#c634407469920000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Greg Meredith - Monadic Design Patterns for the Web - Introduction to Monads</title>
		<description>
			<![CDATA[ <p>This is good stuff. On future slides can you use green or yellow instead of red? It doesn't show up very well ...</p><p>Thanks for posting this!</p><p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/C9-Lectures-Greg-Meredith-Monadic-Design-Patterns-for-the-Web/C9-Lectures-Greg-Meredith-Monadic-Design-Patterns-for-the-Web-Introduction-to-Monads#c634221498640000000</link>
		<pubDate>Fri, 08 Oct 2010 15:51:04 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/C9-Lectures-Greg-Meredith-Monadic-Design-Patterns-for-the-Web/C9-Lectures-Greg-Meredith-Monadic-Design-Patterns-for-the-Web-Introduction-to-Monads#c634221498640000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Ralf L&#228;mmel - Advanced Functional Programming - Evolution of an Interpreter</title>
		<description>
			<![CDATA[
<p>Have you looked at that paper? The notation used makes it almost impenetrable. I appreciate the ideas but I couldn't make sense of it when I was learning Haskell ... Maybe after Erik's category theory lectures it will make sense to me. <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /></p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Evolution-of-an-Interpreter#c634189659210000000</link>
		<pubDate>Wed, 01 Sep 2010 19:25:21 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Evolution-of-an-Interpreter#c634189659210000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: E2E: Whiteboard Jam Session with Brian Beckman and Greg Meredith - Monads and Coordinate Systems</title>
		<description>
			<![CDATA[
<p>Greg mentions Conor McBride and his work on derivatives of data types. Conor has a page giving the papers and history here:</p>
<p>&nbsp;</p>
<p>&nbsp; <a href="http://strictlypositive.org/calculus/">http://strictlypositive.org/calculus/</a></p>
<p>&nbsp;</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/E2E-Whiteboard-Jam-Session-with-Brian-Beckman-Greg-Meredith-Monads-and-Coordinate-Systems#c634148055760000000</link>
		<pubDate>Thu, 15 Jul 2010 15:46:16 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/E2E-Whiteboard-Jam-Session-with-Brian-Beckman-Greg-Meredith-Monads-and-Coordinate-Systems#c634148055760000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: E2E: Whiteboard Jam Session with Brian Beckman and Greg Meredith - Monads and Coordinate Systems</title>
		<description>
			<![CDATA[
<p>Great video - thanks for posting. I would really like to see more detailing the relationship between derivatives and the lambda-calculus. Greg even mentioned he has some code that illustrates the concept - could you post a link?</p>
<p>&nbsp;</p>
<p>Good stuff as always!</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/E2E-Whiteboard-Jam-Session-with-Brian-Beckman-Greg-Meredith-Monads-and-Coordinate-Systems#c634148041130000000</link>
		<pubDate>Thu, 15 Jul 2010 15:21:53 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/E2E-Whiteboard-Jam-Session-with-Brian-Beckman-Greg-Meredith-Monads-and-Coordinate-Systems#c634148041130000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Yuri Gurevich - Introduction to Algorithms and Computational Complexity, 1 of n</title>
		<description>
			<![CDATA[
<p>Even for people with a CS background, this is a great lecture. I didn't realize there were other kinds of computing models (Pointer machines, Kolmogarov machines). He also gave some great algorithm examples that you can't computer (buckets-of-rain) or that
 are too slow (real arithmetic).</p>
<p>&nbsp;</p>
<p>Great start to a very promising series, thank you!&nbsp;</p>
<p>&nbsp;</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/C9-Lectures-Yuri-Gurevich-Introduction-to-Algorithms-and-Computational-Complexity/C9-Lectures-Algorithms-with-Yuri-Gurevich-Introduction-and-Some-History#c634137084780000000</link>
		<pubDate>Fri, 02 Jul 2010 23:01:18 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/C9-Lectures-Yuri-Gurevich-Introduction-to-Algorithms-and-Computational-Complexity/C9-Lectures-Algorithms-with-Yuri-Gurevich-Introduction-and-Some-History#c634137084780000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Brian Beckman - Covariance and Contravariance in Physics 1 of 1</title>
		<description>
			<![CDATA[
<p>Brian,</p>
<p>&nbsp;</p>
<p>Have you seen Conal Elliot's paper &quot;Beautiful Differnetation&quot;? It doesn't talk about co- or contra-variance, but he does go over a lot of the same differentation you &amp; Erik covered in your paper:</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; <a href="http://conal.net/blog/posts/paper-beautiful-differentiation/">http&#58;&#47;&#47;conal.net&#47;blog&#47;posts&#47;paper-beautiful-differentiation&#47;</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Brian-Beckman-Covariance-and-Contravariance-in-Physics-1-of-1#c633964237930000000</link>
		<pubDate>Mon, 14 Dec 2009 21:43:13 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Brian-Beckman-Covariance-and-Contravariance-in-Physics-1-of-1#c633964237930000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Brian Beckman - Covariance and Contravariance in Physics 1 of 1</title>
		<description>
			<![CDATA[
<p>That does help a lot - thank you!</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Brian-Beckman-Covariance-and-Contravariance-in-Physics-1-of-1#c633955380850000000</link>
		<pubDate>Fri, 04 Dec 2009 15:41:25 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Brian-Beckman-Covariance-and-Contravariance-in-Physics-1-of-1#c633955380850000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Brian Beckman - Covariance and Contravariance in Physics 1 of 1</title>
		<description>
			<![CDATA[
<p>Brian,</p>
<p>&nbsp;</p>
<p>Hope this post isn't too late. I'm reading through the attached paper and having trouble in the &quot;Transformations, Jacobians&quot; section (and in the example that follows). your definitions of &quot;bold x&quot; and &quot;bold y&quot; look infinitely recursive to me:</p>
<p>&nbsp;</p>
<p>&nbsp; x = X . y</p>
<p>&nbsp; y = Y . x</p>
<p>&nbsp;</p>
<p>In the example, I find the same thing when defining x1 (squiggle) and x2 (eta). They are defined in terms of y1 (rho) and y2 (theta). y1 and y2 are then defined in terms of x1 and x2!</p>
<p>&nbsp;</p>
<p>I am sure I am thinking too operationally here but any enlightment would be appreciated!</p>
<p>&nbsp;</p>
<p>Justin</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Brian-Beckman-Covariance-and-Contravariance-in-Physics-1-of-1#c633954698550000000</link>
		<pubDate>Thu, 03 Dec 2009 20:44:15 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Brian-Beckman-Covariance-and-Contravariance-in-Physics-1-of-1#c633954698550000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals Chapter 5 of 13</title>
		<description>
			<![CDATA[
<p>You seem to be a troll so it's hard to answer in a cooperative spirit. Moving on ...</p>
<p>&nbsp;</p>
<p>I'd say these lectures are geared towards people who know&nbsp; C#, VB.Net, Java,etc. Mapping back to C# helps ground the concepts. Haskell is like alien technology. It can make things a lot clearer (and more relevant) to correlate it with something you already
 understand. That's kind of true when learning anything new in fact ...</p>
<p>&nbsp;</p>
<p>In any case you can always buy the book at a discount and learn Haskell from the ground up. That's what it was written for.
</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-5-of-13#c633925212880000000</link>
		<pubDate>Fri, 30 Oct 2009 17:41:28 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-5-of-13#c633925212880000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 3 of 13</title>
		<description>
			<![CDATA[
<p>Some might like my Haskell Cheatsheet at <a href="http://cheatsheet.codeslower.com">
http://cheatsheet.codeslower.com</a>. It's a short reference &amp; mini-tutorial. </p>
<p>&nbsp;</p>
<p>OK - done pimping now <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /></p>
<p>&nbsp;</p>
<p>Justin</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13#c633912243290000000</link>
		<pubDate>Thu, 15 Oct 2009 17:25:29 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-3-of-13#c633912243290000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 2 of 13</title>
		<description>
			<![CDATA[
<p>Let me pimp my Haskell&nbsp; Cheatsheet, a short syntax reference and minitutorial:</p>
<p>&nbsp;</p>
<p>&nbsp; <a href="http://cheatsheet.codeslower.com/">http://cheatsheet.codeslower.com/</a></p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2#c633909846820000000</link>
		<pubDate>Mon, 12 Oct 2009 22:51:22 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2#c633909846820000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 2 of 13</title>
		<description>
			<![CDATA[
<p>There is Visual Haskell, but it's very out of date. It targest VS 2005, does not use the Managed Package Framework (i.e., it extends VS using C&#43;&#43; rather than .NET), and its married to a really old version of GHC:</p>
<p>&nbsp;</p>
<p>&nbsp; <a href="http://www.haskell.org/visualhaskell/">http&#58;&#47;&#47;www.haskell.org&#47;visualhaskell&#47;</a></p>
<p>&nbsp;</p>
<p>BUT the sources are available and I wish someone would update it ...</p>
<p>&nbsp;</p>
<p>&nbsp; <a href="http://darcs.haskell.org/vshaskell/">http&#58;&#47;&#47;darcs.haskell.org&#47;vshaskell&#47;</a></p>
<p>&nbsp;</p>
<p>Justin</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2#c633909833020000000</link>
		<pubDate>Mon, 12 Oct 2009 22:28:22 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2#c633909833020000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 2 of 13</title>
		<description>
			<![CDATA[
<p>I would love to see more of this stuff! Please work it in wherever you can.</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2#c633909820230000000</link>
		<pubDate>Mon, 12 Oct 2009 22:07:03 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2#c633909820230000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 2 of 13</title>
		<description>
			<![CDATA[
<p>I agree regarding obscure code, or anything written in C (** duck **), but of course I don't think that is the case here.
</p>
<p>&nbsp;</p>
<p>When I started learning Haskell a lot of the &quot;elegant&quot; solutions really bothered me - I couldn't understand them and they seemed obscure. They used many nested function definitions or class instances which tied my brain in knots. I slowly realized, though,
 that once you knew the definition of a function, you could forget it. The details didn't matter - you just needed to be reminded of its basic operation and type. I think that Haskell's purity (in the technical sense) allows this much more than languages w/
 side-effects. Its very easy to extract a chunk of code and wrap it up in a small definition w/o changing the behavior of your program.</p>
<p>&nbsp;</p>
<p>Let me illustrate with calculus.&nbsp; These two things say the same thing, but one is more suitable for a beginner while the other is obvious to anyone familiar with the notation:</p>
<p>&nbsp;</p>
<p>&nbsp; &quot;Consider a parabola. Look at the slope between two points on the curve. Now move the points closer together. Consider how the slope changes. As the points get closer and closer together, the slope of the line between them will converge on 2 * x, no matter
 where&nbsp; you are on the curve&quot; </p>
<p>&nbsp;</p>
<p>Or</p>
<p>&nbsp;</p>
<p>&nbsp; &quot;d (x ^ 2) / dx = 2 * x&quot;</p>
<p>&nbsp;</p>
<p>I would expect the &quot;tricks&quot; that Erik promised to show would be along these lines - &quot;tricks&quot; that make our programs more flexible while at the same time &quot;easier&quot; to understand (once you know the basics).</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2#c633909818740000000</link>
		<pubDate>Mon, 12 Oct 2009 22:04:34 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-2#c633909818740000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 1 of 13</title>
		<description>
			<![CDATA[
<p>Very nice solution! How does it deal with empty sequences? I assume Take and Skip don't throw exceptions on empty sequences?</p>
<p>&nbsp;</p>
<p>I think my only suggestion would be to check if s is empty first, then you can rewrite:</p>
<p>&nbsp;</p>
<p>public static IEnumerable&lt;T&gt; Qsort1&lt;T&gt;(this IEnumerable&lt;T&gt; s) where T : IComparable&lt;T&gt;<br />{</p>
<p>&nbsp;&nbsp;&nbsp; return ! s.Any() ? Enumerable.Empty&lt;T&gt;() :<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from x in s.Take(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let xs = s.Skip(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let a = xs.Where(y =&gt; y.CompareTo(x) &lt;= 0).Qsort1()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let b = xs.Where(y =&gt; y.CompareTo(x) &gt; 0).Qsort1()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select a.Concat(s.Take(1)).Concat(b);<br />}</p>
<p>&nbsp;</p>
<p>But I don't know if that is allowed syntax.</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1#c633901015040000000</link>
		<pubDate>Fri, 02 Oct 2009 17:31:44 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1#c633901015040000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 1 of 13</title>
		<description>
			<![CDATA[
<p>I love it! Glad to see this happening. I can't wait for the hard stuff.</p>
<p>&nbsp;</p>
<p>One comment - though you are focusing on Haskell, please keep it tied to C# (e.g., &quot;here's how to do it in C#&quot;) and keep it practical. By comign back to C#, unfamiliar concepts look familiar. By keeping it practical, we'll see how this stuff can really be
 used. Haskell - not just for Fibonacci anymore! OK that's a bit facetious.</p>
<p>&nbsp;</p>
<p>As for the homework, here is my solution. I basically transcribed the Haskell version shown. I am sure it can be prettier:</p>
<p>&nbsp;</p>
<p>public static IEnumerable&lt;A&gt; QuickSort&lt;A&gt;(IEnumerable&lt;A&gt; vals)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where A : IComparable&lt;A&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (vals.Skip(1).IsEmpty())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return vals;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A pivot = vals.First();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var rest = vals.Skip(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var left = from x in rest<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where x.CompareTo(pivot) &lt;= 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select x;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var right = from x in rest<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where x.CompareTo(pivot) &gt; 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select x;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return QuickSort(left).Concat(vals.Take(1)).Concat(right);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>Note : IsEmpty is an extension method which tests if a sequence is empty. I can't believ that is not already defiend in the framework so I am sure i missed it.
</p>
<p>&nbsp;</p>
<p>I particularly like the end part, where I concatenate the single pivot value into the sequence:</p>
<p>&nbsp;</p>
<p>&nbsp; return QuickSort(left).Concat(vals.Take(1)).Concat(right);</p>
<p>&nbsp;</p>
<p>Since the list is not empty, I know I can take the first value and stick in the right place. My base case also takes advantage here:</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (vals.Skip(1).IsEmpty())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return vals;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</p>
<p>&nbsp;</p>
<p>If the sequence given only has one element, I just return it unchanged and it automatically goes in the right spot. Thank you recursion!</p>
<p>&nbsp;</p>
<p>Full source code &amp; VS2008 project available on <a href="http://github.com/m4dc4p/C9lectures/tree/master/Lecture1/QuickSort/">
github</a>. </p>
<p>&nbsp;</p>
<p>Justin</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1#c633900360100000000</link>
		<pubDate>Thu, 01 Oct 2009 23:20:10 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1#c633900360100000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: E2E: Erik Meijer and Wes Dyer - Reactive Framework (Rx) Under the Hood 2 of 2</title>
		<description>
			<![CDATA[
<p>You guys never got to Until (mentioned in part 1). Any follow up details? </p>
<p>&nbsp;</p>
<p>I also wish you'd talk more about Let. How is that implemented? Does it give you lazy computation? E.g. Haskell lets your write:</p>
<p>&nbsp;</p>
<p>&nbsp; zero = let x = x in 0</p>
<p>&nbsp;</p>
<p>And you won't get an infinite loop. Does Let allow somethign similar?</p>
<p>&nbsp;</p>
<p>Good stuff!</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/E2E-Erik-Meijer-and-Wes-Dyer-Reactive-Framework-Rx-Under-the-Hood-2-of-2#c633898601840000000</link>
		<pubDate>Tue, 29 Sep 2009 22:29:44 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/E2E-Erik-Meijer-and-Wes-Dyer-Reactive-Framework-Rx-Under-the-Hood-2-of-2#c633898601840000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx)</title>
		<description>
			<![CDATA[
<p>Pretty cool work. I think your implementation points out a few issues that this approach has to deal with.</p>
<p>&nbsp;</p>
<p>1) SpotAgent allows many subscribers; RiskAgent only one -- That says the Subscribe method isn't giving enough information (and the IObservable interface isn't rich enough). I wonder how you could indicate that a given Observable allows many observers vs.
 one?</p>
<p>&nbsp;</p>
<p>2) One problem that Erik points out with IEnumerable is the &quot;subscriber&quot; which calls GetNext() has no control over how long the &quot;publisher&quot; take to return the next value. I think IObservable reverses this problem. That is, the &quot;publisher&quot; (IObservable object)
 has no control over how long given &quot;subscriber's&quot; (IObserver) OnNext method will take to complete. You can see this issue in the Tick() methods for SpotAgent and RiskAgent.
</p>
<p>&nbsp;</p>
<p>Does the composobility of IObservable/IObserve help solve this problem? </p>
<p>&nbsp;</p>
<p>Looking at your code definitely exposes some issues that I'm sure Erik's team has faced when developing their library.</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Brian-Beckman-and-Erik-Meijer-Inside-the-NET-Reactive-Framework-Rx#c633832826170000000</link>
		<pubDate>Wed, 15 Jul 2009 19:23:37 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Brian-Beckman-and-Erik-Meijer-Inside-the-NET-Reactive-Framework-Rx#c633832826170000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
	<item>
		<title>Re: Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx)</title>
		<description>
			<![CDATA[
<p>Great video! Really fascinating. I can't wait to see the code - just push it to me <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /></p>
<p>A question: The scope of the&nbsp; <strong>IDisposable</strong> object returned by <strong>
Subscribe() </strong>was unclear to me. Erik implies you can put it in a <strong>
using</strong> statement, like a normal <strong>IDisposable</strong>. But the lexical scope of the
<strong>IDisposable</strong> returned seems much different than the lifetime (&quot;runtime scope&quot;?) of the
<strong>IObserver</strong> you pass in. For example, the using statemetn with <strong>
IDisposable</strong> for files is pretty obvious:</p>
<pre>  using(fs = new Stream(&quot;somefile.txt&quot;))   
  {     
    // ... do work on fs ...   
  } // fs is closed and disposed. </pre>
<p>But in the <strong>IObserver</strong> case, I don't think the using statement's scope is appropriate for indicating you don't care about events anymore. Using the autocomplete example above:</p>
<pre>using(q.Subscribe(suggestions =&gt; ... ))<br>{<br>  // ???<br>} <br><br></pre>
<p>What happens in the body of the <strong>using</strong> statement? All the work seems to occur in the lambda passed to
<strong>Subscribe</strong>. If I understood correctly, as soon as we leave the scope of the using statement, my lambda stops receiving events. Hmm, I bet the object implementing
<strong>IDisposable</strong> has the secret sauce for the reactive framework. Maybe it has a method for testing for conditions and will &quot;yield&quot; until the condition is met? For example if I had another observer which looked for ENTER or TAB on the textbox and
 indicated that a selection was made, maybe it would let me write this code:</p>
<pre>class KeyObserver :  IObserver&lt;...&gt;<br> {<br>    publi c bool SelectionMade()<br> }<br><br>KeyObserver key = ...;<br><br>using(cntrl = q.Subscribe(suggestions =&gt; ... ))<br>{<br>   if(! key.SelectionMade())<br>     sleep;<br>} <br>// selection has been made and we stop listening to suggest events<br></pre>
<p>Hopefully that makes some sense. It looks like the beginnings of a way to do reasonable event based programming. Apologies for answering my own question but glad to hear if I'm on track ...</p>
<p>Two other notes:</p>
<ul>
<li>Check out the <strong>AsyncEnumerator</strong> library from Jeffrey Richter. He leveraged enumerators and iterators to do something similar, but I think his solution still has an &quot;inversion of control&quot; problem where you need to write the code to drive the
 enumerator. A recent article can be found at <a href="http://msdn.microsoft.com/en-us/magazine/cc721613.aspx">
http://msdn.microsoft.com/en-us/magazine/cc721613.aspx</a> </li><li>Erik mentioned a paper by Phillip Wadler called &quot;The essence of monads&quot; or similar. I think he meant &quot;The essence of functional programming&quot; (<a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.9516">http&#58;&#47;&#47;citeseerx.ist.psu.edu&#47;viewdoc&#47;summary&#63;doi&#61;10.1.1.38.9516</a>).
</li></ul>
<p>&nbsp;</p>
<p>Great stuff, get me this code! <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /></p>
<p>Justin</p>
<p>posted by Justin Bailey</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Brian-Beckman-and-Erik-Meijer-Inside-the-NET-Reactive-Framework-Rx#c633827783070000000</link>
		<pubDate>Thu, 09 Jul 2009 23:18:27 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Brian-Beckman-and-Erik-Meijer-Inside-the-NET-Reactive-Framework-Rx#c633827783070000000</guid>
		<dc:creator>Justin Bailey</dc:creator>
	</item>
</channel>
</rss>