<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">

<channel>
	<title>Thursday Night</title>
	
	<link>http://blog.paulbetts.org</link>
	<description>Paul Betts's personal website / blog / what-have-you</description>
	<lastBuildDate>Tue, 24 Apr 2012 04:37:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/paulbetts/entries" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="paulbetts/entries" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.990764</geo:lat><geo:long>-83.001179</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><item>
		<title>Announcing ReactiveUI 3.1</title>
		<link>http://blog.paulbetts.org/index.php/2012/04/23/announcing-reactiveui-3-1/</link>
		<comments>http://blog.paulbetts.org/index.php/2012/04/23/announcing-reactiveui-3-1/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 04:35:19 +0000</pubDate>
		<dc:creator>Paul Betts</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.paulbetts.org/?p=789</guid>
		<description><![CDATA[What does ReactiveUI do? ReactiveUI is a M-V-VM framework like MVVM Light or Caliburn.Micro, that is deeply integrated with the Reactive Extensions for .NET. This allows you to write code in your ViewModel that is far more elegant and terse when expressing complex stateful interactions, as well as much simpler handling of async operations. What&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<h2>What does ReactiveUI do?</h2>
<p>
<a href="http://www.reactiveui.net">ReactiveUI</a> is a M-V-VM framework like MVVM Light or Caliburn.Micro, that is deeply integrated with the Reactive Extensions for .NET. This allows you to write code in your ViewModel that is far more elegant and terse when expressing complex stateful interactions, as well as much simpler handling of async operations.
</p>
<h2 id="whatsnewin3.1">What&#8217;s New in 3.1</h2>
<p>Tons of stuff.</p>
<figure>
<img src="http://f.cl.ly/items/0O450X161f2D3G0i3V2o/Image%202012.04.23%208:48:37%20PM.png" alt="" /></figure>
<p>ReactiveUI has improved dramatically since the previous version. Over the next few weeks I&#8217;ll be posting blog articles on how to use new features in ReactiveUI, but here&#8217;s the short list:</p>
<ul>
<li>
<p><strong>User Errors:</strong> &#8211; A new API to separate the generation and presentation of errors that should be presented to the user in a friendly way. This is the Testable, Elegant, user-friendly way to make that <code>MessageBox.Show()</code> call.</p>
</li>
<li>
<p><strong>ReactiveUI.Routing</strong> &#8211; An entirely new component to ReactiveUI, designed for creating multi-page applications using Dependency Injection / IoC, while not being tied to any <em>specific</em> IoC container.</p>
</li>
<li>
<p><strong>First Class Async / Await Support</strong> &#8211; ReactiveUI now allows you to use <code>Task&lt;T&gt;</code> in many places in the framework where it makes sense.</p>
</li>
<li>
<p><strong>Ordering and Filtering of Models</strong> &#8211; using the new <code>CreateDerivedCollection</code> methods, ViewModel collections that &#8220;follow&#8221; Model collections and apply custom filtering / ordering are now easy to create.</p>
</li>
<li>
<p><strong>NLog Logging</strong> &#8211; A rewritten logging framework, based on <a href="http://nlog-project.org/">NLog</a></p>
</li>
<li>
<p>Preliminary support for <strong>WinRT</strong> (including async/await via <a href="http://linqtoawait.net">LinqToAwait</a>) and <strong>Gtk#</strong> on Mono 2.10.</p>
</li>
<li>
<p>An overhaul of how ReactiveUI handles binding errors that results in more reliable applications.</p>
</li>
<li>
<p>Many cleanups to APIs to make using ReactiveUI more straightforward and intuitive</p>
</li>
</ul>
<h2 id="anewsamplekindof:playforwindows">A new sample: Play for Windows</h2>
<figure>
<img src="https://a248.e.akamai.net/camo.github.com/52c8cfd754ea5ac0c9455eff32831582d16395e9/687474703a2f2f636c2e6c792f33443075334e3130324f3144306d3167334231592f496d616765253230323031322e30342e3139253230323a33353a3534253230414d2e706e67" alt="" /></figure>
<p>Many of the new features in ReactiveUI 3.1 were prototyped and refined in <a href="https://github.com/play/play-windows">Play for Windows</a>, a .NET 4.5 client for the <a href="https://github.com/play/play">Play Music Server</a>. This application is a production-quality application that demonstrates many of the new ReactiveUI features, especially Routing and RxUI.Testing.</p>
<h2 id="breakingchanges">Breaking Changes</h2>
<p>ReactiveUI is now following the <a href="http://semver.org/">SemVer</a> versioning scheme. This means, that v3 now has <strong>breaking changes</strong>. However, apart from one, these changes shouldn&#8217;t be overly difficult to fix.</p>
<ul>
<li>
<p><strong>Deprecated Platforms</strong> &#8211; ReactiveUI has <strong>dropped support</strong> for .NET 3.5, SL4, and WP7.0. You must upgrade to .NET 4.0/4.5, SL5, or WP7.1 (Mango) to use ReactiveUI 3.1. Rx has decided to deprecate these platforms soon as well.</p>
</li>
<li>
<p><strong>Logging Changes</strong> &#8211; The interface between RxUI 2.5&#8217;s <code>Log()</code> method and RxUI 3.1&#8217;s is slightly different (methods like &#8220;InfoFormat&#8221; are now just &#8220;Info&#8221;, etc.)</p>
</li>
<li>
<p><strong>Disabled Bindings now Crash</strong> &#8211; In ReactiveUI 2.5, if an <code>ObservableAsPropertyHelper</code> or the <code>CanExecute</code> of a <code>ReactiveCommand</code> terminates with OnError, the exception disappears into the ether and the binding stops working. In RxUI 3.1, this will result in an item being sent to the new <code>ThrownExceptions</code> Observable.</p>
<p>This Observable is <em>special</em>, in that if there are no Subscribers, items gets sent to the global <code>RxApp.DefaultExceptionHandler</code>, which by default,  crashes the application.</p>
</li>
<li><strong>Deprecated / Changed Methods</strong> &#8211; Some methods, particularly in <code>MessageBus</code> and <code>ReactiveUI.Testing</code>, have changed names to be more consistent with Rx (i.e. <code>AdvanceByMs</code> vs. 2.5&#8217;s <code>RunToMilliseconds</code>), or have been removed, such as <code>ObservableCollectionView</code> (use <code>CreateDerivedCollection()</code> instead).</li>
</ul>
<h2 id="thanks">Thanks!</h2>
<p>Thanks to the following people for contributing patches to ReactiveUI 3.1:</p>
<ul>
<li>Phil Haack</li>
<li>Johan Laanstra</li>
<li>Lowell Smith</li>
<li>Stanislaw Swierc</li>
<li>Tim Clem</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=oaINRqwalWU:uj_R3qonVTg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=oaINRqwalWU:uj_R3qonVTg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=oaINRqwalWU:uj_R3qonVTg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?i=oaINRqwalWU:uj_R3qonVTg:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.paulbetts.org/index.php/2012/04/23/announcing-reactiveui-3-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SassAndCoffee 1.1 issues with AppHarbor</title>
		<link>http://blog.paulbetts.org/index.php/2011/09/27/sassandcoffee-1-1-issues-with-appharbor/</link>
		<comments>http://blog.paulbetts.org/index.php/2011/09/27/sassandcoffee-1-1-issues-with-appharbor/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 21:17:59 +0000</pubDate>
		<dc:creator>Paul Betts</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.paulbetts.org/?p=787</guid>
		<description><![CDATA[SassAndCoffee 1.1 currently doesn&#8217;t work on AppHarbor, and returns a 502 Gateway Error on the site. I&#8217;m working with the AppHarbor folks to fix this as soon as I can. Sorry about this! The Details On startup, we write out the V8 DLL to a temporary directory and call Assembly.Load to load it. Unfortunately, even [...]]]></description>
			<content:encoded><![CDATA[<p>
SassAndCoffee 1.1 currently doesn&#8217;t work on AppHarbor, and returns a <b>502 Gateway Error</b> on the site. I&#8217;m working with the AppHarbor folks to fix this as soon as I can. Sorry about this!
</p>
<h2>The Details</h2>
<p>
On startup, <a href="https://github.com/xpaulbettsx/SassAndCoffee/blob/master/SassAndCoffee.Core/JavascriptInterop.cs#L170">we write out the V8 DLL to a temporary directory</a> and call Assembly.Load to load it. Unfortunately, even though the write succeeds, the Load fails for some reason. On AppHarbor, we would always fall back to Jurassic, but in 1.1 I disabled this fallback because of performance issues (and because it made it harder to debug the V8 load failures).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=tZrq_YEtxv8:UvIBHtS1mNo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=tZrq_YEtxv8:UvIBHtS1mNo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=tZrq_YEtxv8:UvIBHtS1mNo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?i=tZrq_YEtxv8:UvIBHtS1mNo:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.paulbetts.org/index.php/2011/09/27/sassandcoffee-1-1-issues-with-appharbor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing iTunes “Unknown Error -200″ on OS X</title>
		<link>http://blog.paulbetts.org/index.php/2011/09/26/fixing-itunes-unknown-error-200-on-os-x/</link>
		<comments>http://blog.paulbetts.org/index.php/2011/09/26/fixing-itunes-unknown-error-200-on-os-x/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 00:08:32 +0000</pubDate>
		<dc:creator>Paul Betts</dc:creator>
				<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://blog.paulbetts.org/?p=784</guid>
		<description><![CDATA[If you&#8217;re hitting this error on iTunes startup, possibly because you installed iLife &#8217;11, there&#8217;s an easy way to fix it. Open Terminal.app, and type the following commands: /* GeSHi (c) Nigel McNie 2004 (http://qbnz.com/highlighter) */.ch_code_container {font-family: monospace;font-size: 10pxheight:100%;}.ch_code_container .imp {font-weight: bold; color: red;}.ch_code_container .kw1 {color: #b1b100;}.ch_code_container .kw3 {color: #000066;}.ch_code_container .co1 {color: #808080; font-style: italic;}.ch_code_container [...]]]></description>
			<content:encoded><![CDATA[<p>
If you&#8217;re hitting this error on iTunes startup, possibly because you installed iLife &#8217;11, there&#8217;s an easy way to fix it. Open Terminal.app, and type the following commands:
</p>
<style type="text/css">/* GeSHi (c) Nigel McNie 2004 (http://qbnz.com/highlighter) */.ch_code_container  {font-family: monospace;font-size: 10pxheight:100%;}.ch_code_container .imp {font-weight: bold; color: red;}.ch_code_container .kw1 {color: #b1b100;}.ch_code_container .kw3 {color: #000066;}.ch_code_container .co1 {color: #808080; font-style: italic;}.ch_code_container .es0 {color: #000099; font-weight: bold;}.ch_code_container .br0 {color: #66cc66;}.ch_code_container .st0 {color: #ff0000;}.ch_code_container .nu0 {color: #cc66cc;}.ch_code_container .re0 {color: #0000ff;}.ch_code_container .re1 {color: #0000ff;}.ch_code_container .re2 {color: #0000ff;}</style>
<div class="ch_code_container" style="font-family: monospace;font-size: 10pxheight:100%;">sudo update_dyld_shared_cache -force<br />
sudo restart</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=FwXLqzVKjRg:ufyEn1z2oVo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=FwXLqzVKjRg:ufyEn1z2oVo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=FwXLqzVKjRg:ufyEn1z2oVo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?i=FwXLqzVKjRg:ufyEn1z2oVo:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.paulbetts.org/index.php/2011/09/26/fixing-itunes-unknown-error-200-on-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converting a Win8 Install Directory to an ISO</title>
		<link>http://blog.paulbetts.org/index.php/2011/09/17/converting-a-win8-install-directory-to-an-iso/</link>
		<comments>http://blog.paulbetts.org/index.php/2011/09/17/converting-a-win8-install-directory-to-an-iso/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 21:15:28 +0000</pubDate>
		<dc:creator>Paul Betts</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.paulbetts.org/?p=778</guid>
		<description><![CDATA[As part of the BUILD conference, attendees got a USB key packed with all of the latest preview software: copies of Win8 client and server, as well as an installer for Visual Studio 11. However, they distributed the Windows installers as folders instead of standalone ISOs to make it easier to upgrade. Can I make [...]]]></description>
			<content:encoded><![CDATA[<p>
As part of the BUILD conference, attendees got a USB key packed with all of the latest preview software: copies of Win8 client and server, as well as an installer for Visual Studio 11. However, they distributed the Windows installers as folders instead of standalone ISOs to make it easier to upgrade.
</p>
<h2>Can I make an ISO out of a Windows install directory? Definitely!</h2>
<p>
Here&#8217;s how to take any Windows Install directory from Vista onward and turn it into a DVD ISO:
</p>
<ol>
<li>Download oscdimg.exe from <a href="http://www.paulbetts.org/projects/oscdimg.exe">here</a>, which I&#8217;m certainly hosting illegally. Don&#8217;t tell anyone in Redmond. (This is a public tool, just normally wrapped in a huge download; I&#8217;m hosting it solely for convenience sake)</li>
<li>Open up cmd and copy oscdimg.exe to the *parent* directory of the Windows install (i.e. if it&#8217;s in E:\Windows8, copy it to E:\)</li>
<li>Cd to inside the Windows directory (i.e. the folders should be &#8220;Boot&#8221;, &#8220;Efi&#8221;, &#8220;Sources&#8221;, etc)</li>
<li>Run the following command:</li>
<style type="text/css">/* GeSHi (c) Nigel McNie 2004 (http://qbnz.com/highlighter) */.ch_code_container  {font-family: monospace;font-size: 10pxheight:100%;}.ch_code_container .imp {font-weight: bold; color: red;}.ch_code_container .kw1 {color: #b1b100;}.ch_code_container .kw3 {color: #000066;}.ch_code_container .co1 {color: #808080; font-style: italic;}.ch_code_container .es0 {color: #000099; font-weight: bold;}.ch_code_container .br0 {color: #66cc66;}.ch_code_container .st0 {color: #ff0000;}.ch_code_container .nu0 {color: #cc66cc;}.ch_code_container .re0 {color: #0000ff;}.ch_code_container .re1 {color: #0000ff;}.ch_code_container .re2 {color: #0000ff;}</style>
<div class="ch_code_container" style="font-family: monospace;font-size: 10pxheight:100%;">..\oscdimg.exe -u2 -h . -bboot\etfsboot.com ..\MyCoolNewImage.iso</div>
</ol>
<p>
That&#8217;s all there is to it! Now you&#8217;ve got a shiny new bootable ISO that you can load into a VM or burn to DVD.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=UXmxmzy0G2k:BYiMUzuws1s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=UXmxmzy0G2k:BYiMUzuws1s:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=UXmxmzy0G2k:BYiMUzuws1s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?i=UXmxmzy0G2k:BYiMUzuws1s:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.paulbetts.org/index.php/2011/09/17/converting-a-win8-install-directory-to-an-iso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SassAndCoffee 1.1 Released</title>
		<link>http://blog.paulbetts.org/index.php/2011/09/01/sassandcoffee-1-1-released/</link>
		<comments>http://blog.paulbetts.org/index.php/2011/09/01/sassandcoffee-1-1-released/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 04:32:39 +0000</pubDate>
		<dc:creator>Paul Betts</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mono / .NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.paulbetts.org/?p=774</guid>
		<description><![CDATA[What does SassAndCoffee do? SassAndCoffee is a library for ASP.NET (both MVC and old-school WebForms) that adds drop-in support for two new languages: Sass and SCSS, a language that allows you to write reusable, more structured CSS, as well as CoffeeScript, which is a JavaScript dialect that is much more syntactically elegant, but still preserving [...]]]></description>
			<content:encoded><![CDATA[<h2>What does SassAndCoffee do?</h2>
<p>
<a href="http://github.com/xpaulbettsx/sassandcoffee">SassAndCoffee is a library for ASP.NET</a> (both MVC and old-school WebForms) that adds drop-in support for two new languages: <a href="http://www.sass-lang.com/tutorial.html">Sass and SCSS</a>, a language that allows you to write reusable, more structured CSS, as well as <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>, which is a JavaScript dialect that is much more syntactically elegant, but still preserving 100% compatibility with regular JavaScript.
</p>
<h2>How to use SassAndCoffee</h2>
<ul>
<li>Add the package reference <a href="http://nuget.org/List/Packages/SassAndCoffee">via NuGet</a></li>
<li>Add a .coffee, .scss, or .sass file to your project (an easy test is to just rename a CSS file to .scss)</li>
<li>Reference the file as if it was a CSS or .JS file (i.e. to reference &#8220;scripts/test.coffee&#8221;, you should reference &#8220;scripts/test.js&#8221; in your SCRIPT tag)</li>
<li>To get the minified version of a file (either a coffee file or a standard js file), ask for the &#8220;.min.js&#8221; version (i.e. &#8220;scripts/test.min.js&#8221;)</li>
</ul>
<h2>What&#8217;s New in SassAndCoffee 1.1 &#8211; Update All The Things</h2>
<p>
SassAndCoffee updates its version of V8 to the latest released code that runs even faster, as well as the latest released version of CoffeeScript, version 1.1.2. In an attempt to catch some tricky-to-debug errors that folks are having on 64-Bit IIS, I&#8217;ve also disabled Jurassic on 64-bit AppPools, since it was unusably slow anyways. This means that if V8 fails, SassAndCoffee will crash and hopefully provide some debugging information to assist in telling me what&#8217;s going on.
</p>
<h2>What else is new?</h2>
<p>
SassAndCoffee now correctly handles JavaScript with non-ASCII characters, as long as the file is encoded in UTF-8. Thanks to <a href="https://github.com/radiy">Roman Kvasov</a> who taught me a thing or two about V8 that I didn&#8217;t know, as well as contributing the code to fix it!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=BOWLbhb1Scc:bIPCiy1w-R8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=BOWLbhb1Scc:bIPCiy1w-R8:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=BOWLbhb1Scc:bIPCiy1w-R8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?i=BOWLbhb1Scc:bIPCiy1w-R8:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.paulbetts.org/index.php/2011/09/01/sassandcoffee-1-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SassAndCoffee hits 1.0!</title>
		<link>http://blog.paulbetts.org/index.php/2011/07/12/sassandcoffee-hits-1-0/</link>
		<comments>http://blog.paulbetts.org/index.php/2011/07/12/sassandcoffee-hits-1-0/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 03:23:53 +0000</pubDate>
		<dc:creator>Paul Betts</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mono / .NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.paulbetts.org/?p=769</guid>
		<description><![CDATA[What does SassAndCoffee do? SassAndCoffee is a library for ASP.NET (both MVC and old-school WebForms) that adds drop-in support for two new languages: Sass and SCSS, a language that allows you to write reusable, more structured CSS, as well as CoffeeScript, which is a JavaScript dialect that is much more syntactically elegant, but still preserving [...]]]></description>
			<content:encoded><![CDATA[<h2>What does SassAndCoffee do?</h2>
<p>
<a href="http://github.com/xpaulbettsx/sassandcoffee">SassAndCoffee is a library for ASP.NET</a> (both MVC and old-school WebForms) that adds drop-in support for two new languages: <a href="http://www.sass-lang.com/tutorial.html">Sass and SCSS</a>, a language that allows you to write reusable, more structured CSS, as well as <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>, which is a JavaScript dialect that is much more syntactically elegant, but still preserving 100% compatibility with regular JavaScript.
</p>
<h2>How to use SassAndCoffee</h2>
<ul>
<li>Add the package reference <a href="http://nuget.org/List/Packages/SassAndCoffee">via NuGet</a></li>
<li>Add a .coffee, .scss, or .sass file to your project (an easy test is to just rename a CSS file to .scss)</li>
<li>Reference the file as if it was a CSS or .JS file (i.e. to reference &#8220;scripts/test.coffee&#8221;, you should reference &#8220;scripts/test.js&#8221; in your SCRIPT tag)</li>
<li>To get the minified version of a file (either a coffee file or a standard js file), ask for the &#8220;.min.js&#8221; version (i.e. &#8220;scripts/test.min.js&#8221;)</li>
</ul>
<h2>What&#8217;s New in SassAndCoffee 1.0 &#8211; Rigging VS2010 to be compatible</h2>
<p>
The most common issue that people experience with using SassAndCoffee wasn&#8217;t actually an issue with the code at all &#8211; the symptoms were that it would work fine on their development machine, but when they deployed to production, all the SCSS/CoffeeScript files would return 404 File Not Found.
</p>
<p>
Why? Since VS2010 doesn&#8217;t recognize these files, <b>it sets its build action to &#8216;None&#8217;</b>, which means the files won&#8217;t be deployed. However, since VS runs your app locally from the same directory, it would still find the files on your box. The ultimate case of &#8220;Works On My Machine&#8221;!
</p>
<p align="center">
<img src="http://blog.paulbetts.org/wp-photos/scssproperties.png" /><br />
<i>The Properties Dialog, where you can reset this property</i>
</p>
<h2>Well that&#8217;s annoying. How do you fix it?</h2>
<p>
Now, when you install SassAndCoffee, you will see a dialog offering to install a file onto your box &#8211; this &#8220;pkgdef&#8221; file will configure VS to consider Sass/SCSS/Coffee files as Content. <a href="http://blog.andreloker.de/post/2010/07/02/Visual-Studio-default-build-action-for-non-default-file-types.aspx">Here&#8217;s the details on how this works</a>.
</p>
<h2>Configurable Caching Support</h2>
<p>
SassAndCoffee now has three types of cache options, which can be configured by adding a setting to the <code>appSettings</code> block with a key of <code>SassAndCoffee.Cache</code>:
</p>
<ul>
<li><b>NoCache</b> &#8211; Compile every file when requested, don&#8217;t cache anything</li>
<li><b>InMemoryCache</b> &#8211; Cache a limited number of files in-memory, but don&#8217;t persist anything to disk</li>
<li><b>FileCache</b> &#8211; The default option (and previous behavior) &#8211; cache compiled files in App_Data</li>
</ul>
<h2>What else is new?</h2>
<ul>
<li>SassAndCoffee had its <b>first external contributions</b> by Steven Robbins and Ken Browning! You have no idea how excited I am about this.</li>
<li>The biggest change was <b>support for <a href="https://github.com/NancyFx/Nancy">NancyFx</a></b> by Steven&#8217;s Herculean effort to decouple the core compilation code from the ASP.NET pipeline. SassAndCoffee is now in a great place for other non-ASP.NET frameworks to use as well, such as Manos.</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=BOr82LqgTpY:4wVymJb9CWA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=BOr82LqgTpY:4wVymJb9CWA:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=BOr82LqgTpY:4wVymJb9CWA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?i=BOr82LqgTpY:4wVymJb9CWA:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.paulbetts.org/index.php/2011/07/12/sassandcoffee-hits-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Threading bugs in ReactiveUI in Silverlight</title>
		<link>http://blog.paulbetts.org/index.php/2011/06/23/threading-bugs-in-reactiveui-in-silverlight/</link>
		<comments>http://blog.paulbetts.org/index.php/2011/06/23/threading-bugs-in-reactiveui-in-silverlight/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 20:41:51 +0000</pubDate>
		<dc:creator>Paul Betts</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mono / .NET]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Reactive Extensions]]></category>
		<category><![CDATA[WPF / Silverlight]]></category>

		<guid isPermaLink="false">http://blog.paulbetts.org/?p=760</guid>
		<description><![CDATA[The symptoms of this bug If you use the Silverlight version of ReactiveUI, you will currently encounter a lot of issues that appear to be the classic InvalidOperationException, where a Silverlight object is being accessed by a background thread &#8211; it might look something like this: at System.Windows.Threading.Dispatcher.VerifyAccess() at System.Windows.DependencyObject.GetValue(DependencyProperty dp) at System.Windows.Controls.Primitives.ButtonBase.get_Command() at System.Windows.Controls.Primitives.ButtonBase.UpdateCanExecute() [...]]]></description>
			<content:encoded><![CDATA[<h2>The symptoms of this bug</h2>
<p>
If you use the Silverlight version of ReactiveUI, you will currently encounter a lot of issues that appear to be the classic InvalidOperationException, where a Silverlight object is being accessed by a background thread &#8211; it might look something like this:
</p>
<p><code><br />
 at System.Windows.Threading.Dispatcher.VerifyAccess()<br />
  at System.Windows.DependencyObject.GetValue(DependencyProperty dp)<br />
  at System.Windows.Controls.Primitives.ButtonBase.get_Command()<br />
  at System.Windows.Controls.Primitives.ButtonBase.UpdateCanExecute()<br />
  at<br />
System.Windows.Controls.Primitives.ButtonBase.OnCanExecuteChanged(Object<br />
sender, EventArgs e)<br />
  at ReactiveUI.Xaml.ReactiveCommand.<commonctor>b__0(Boolean b)<br />
  at<br />
ReactiveUI.ObservableAsPropertyHelper`1.<>c__DisplayClass4.< .ctor>b__0(T<br />
x)<br />
  at System.Reactive.AnonymousObserver`1.Next(T value)<br />
  at System.Reactive.AbstractObserver`1.OnNext(T value)<br />
  at System.Reactive.AnonymousObservable`1.AutoDetachObserver.Next(T<br />
value)<br />
  at System.Reactive.AbstractObserver`1.OnNext(T value)<br />
  at<br />
System.Reactive.ScheduledObserver`1.<>c__DisplayClass639.<next>b__637()<br />
  at System.Reactive.ScheduledObserver`1.<ensureactive>b__634(Action<br />
self)<br />
</ensureactive></next></commonctor></code></p>
<p>
You&#8217;ll also see the message in the Console output, <code>"WPF Rx.NET DLL reference not added - using Event Loop"</code>
</p>
<h2>How to fix it</h2>
<p>
The easiest way to fix this is by adding this block to your App.xaml.cs:
</p>
<style type="text/css"></style>
<div class="ch_code_container" style="font-family: monospace;font-size: 10pxheight:100%;">protected override void OnStartup(StartupEventArgs e)<br />
{<br />
&nbsp; &nbsp; RxApp.DeferredScheduler = DispatcherScheduler.Instance;<br />
&nbsp; &nbsp; base.OnStartup(e);<br />
}</div>
<h2>What&#8217;s the Deal??</h2>
<p>
One of the goals of RxUI was that the core library didn&#8217;t have a dependency on WPF/Silverlight: since an Observable Model object or an Observable collection is useful regardless of the domain!  However, to do this, we need to do some trickery to ensure the experience is correct.
</p>
<p>
In a Console app, we don&#8217;t have a message loop, so we use EventLoopScheduler; this has the result of creating a single thread where all of our &#8220;UI actions&#8221; happen &#8211; it&#8217;s a Dispatcher without the Dispatcher. In WPF/Silverlight, we <i>do</i> have a real message loop, so we want to use DispatcherScheduler as our &#8220;put it on the UI thread&#8221; scheduler &#8211; <i>but</i>, we can&#8217;t link to System.Reactive.Threading.dll without pulling in WPF, even if we don&#8217;t use it!
</p>
<p>
What I do is, in the RxApp startup routine, <a href="https://github.com/xpaulbettsx/ReactiveUI/blob/b9a2678e35f01b110d67538e1b98373ec5233c29/ReactiveUI/RxApp.cs#L264">I use Reflection to attempt to find the DispatcherScheduler</a> Type and instantiate it at runtime. In WPF, the code that is currently there works like gangbusters &#8211; in Silverlight though, you have to be <i>way more specific</i> &#8211; <a href="http://groups.google.com/group/reactivexaml/browse_thread/thread/62ff8b21f625ab44">Lukas Cenovsky does a great job tracking down the bug in this mail thread</a>: you have to specify not just the fully namespaced Type name, but the fully qualified assembly name! (i.e. not just &#8220;System.Reactive.Windows.Threading&#8221;, but all of the version details and the public key token.
</p>
<h2>How come this doesn&#8217;t happen in unit tests?</h2>
<p>
Because in Unit Tests, there <i>is no working Dispatcher</i> (you can queue items to it, but they will never run) &#8211; ReactiveUI knows this and <a href="https://github.com/xpaulbettsx/ReactiveUI/blob/b9a2678e35f01b110d67538e1b98373ec5233c29/ReactiveUI/RxApp.cs#L50">switches the Scheduler automatically in a unit test runner</a> to Immediate, which makes writing simple unit tests far easier. That has the side-effect for <i>me</i> though, that some of my code is never covered by a unit test. Oops!
</p>
<p>
<b>tl;dr; -</b> Reflection works a lot differently on Silverlight, and is generally way more of a pain.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=GVNnVnT9RDM:5vvgj1GuiqA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=GVNnVnT9RDM:5vvgj1GuiqA:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=GVNnVnT9RDM:5vvgj1GuiqA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?i=GVNnVnT9RDM:5vvgj1GuiqA:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.paulbetts.org/index.php/2011/06/23/threading-bugs-in-reactiveui-in-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Release: SassAndCoffee 0.9 – now not glacially slow!</title>
		<link>http://blog.paulbetts.org/index.php/2011/06/06/new-release-sassandcoffee-0-9-now-not-glacially-slow/</link>
		<comments>http://blog.paulbetts.org/index.php/2011/06/06/new-release-sassandcoffee-0-9-now-not-glacially-slow/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 08:02:06 +0000</pubDate>
		<dc:creator>Paul Betts</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mono / .NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.paulbetts.org/?p=758</guid>
		<description><![CDATA[What does SassAndCoffee do? SassAndCoffee is a library for ASP.NET (both MVC and old-school WebForms) that adds drop-in support for two new languages: Sass and SCSS, a language that allows you to write reusable, more structured CSS, as well as CoffeeScript, which is a JavaScript dialect that is much more syntactically elegant, but still preserving [...]]]></description>
			<content:encoded><![CDATA[<h2>What does SassAndCoffee do?</h2>
<p>
<a href="http://github.com/xpaulbettsx/sassandcoffee">SassAndCoffee is a library for ASP.NET</a> (both MVC and old-school WebForms) that adds drop-in support for two new languages: <a href="http://www.sass-lang.com/tutorial.html">Sass and SCSS</a>, a language that allows you to write reusable, more structured CSS, as well as <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>, which is a JavaScript dialect that is much more syntactically elegant, but still preserving 100% compatibility with regular JavaScript.
</p>
<h2>How to use SassAndCoffee</h2>
<ul>
<li>Add the package reference <a href="http://nuget.org/List/Packages/SassAndCoffee">via NuGet</a></li>
<li>Add a .coffee, .scss, or .sass file to your project (an easy test is to just rename a CSS file to .scss)</li>
<li>Reference the file as if it was a CSS or .JS file (i.e. to reference &#8220;scripts/test.coffee&#8221;, you should reference &#8220;scripts/test.js&#8221; in your SCRIPT tag)</li>
<li>To get the minified version of a file (either a coffee file or a standard js file), ask for the &#8220;.min.js&#8221; version (i.e. &#8220;scripts/test.min.js&#8221;)</li>
</ul>
<h2>What&#8217;s New in SassAndCoffee 0.9 &#8211; Speed, Speed, Speed!</h2>
<p>
SassAndCoffee now embeds the <a href="http://code.google.com/apis/v8/intro.html">V8 Javascript Engine</a> &#8211; this improves compilation speeds <b>dramatically</b> compared with previous releases. This feature only works on x86/amd64 on Windows, but if you&#8217;re on Mono or some other platform, SassAndCoffee will fall back to the old Jurassic-based engine. All of this is behind the scenes though, nothing changes from the perspective of a user (except for the NuGet package went from 400kb to 3.7MB!)  Compilation speeds for Sass are improved as well through better reuse of IronRuby engine instances.
</p>
<h2>What else is new?</h2>
<ul>
<li>The <a href="http://sass-lang.com/tutorial.html">Sass @import directive</a> now works &#8211; this is an awesome feature of Sass that really allows you to clean up your CSS files and write them more like code and keep it DRY!</li>
<li>Reliability improvements &#8211; less crashification and race conditions</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=FjYcQOwwRAA:Xj-Hamq5d7o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=FjYcQOwwRAA:Xj-Hamq5d7o:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=FjYcQOwwRAA:Xj-Hamq5d7o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?i=FjYcQOwwRAA:Xj-Hamq5d7o:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.paulbetts.org/index.php/2011/06/06/new-release-sassandcoffee-0-9-now-not-glacially-slow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Release: SassAndCoffee 0.8</title>
		<link>http://blog.paulbetts.org/index.php/2011/05/30/new-release-sassandcoffee-0-8/</link>
		<comments>http://blog.paulbetts.org/index.php/2011/05/30/new-release-sassandcoffee-0-8/#comments</comments>
		<pubDate>Tue, 31 May 2011 03:20:27 +0000</pubDate>
		<dc:creator>Paul Betts</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mono / .NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.paulbetts.org/?p=749</guid>
		<description><![CDATA[What does SassAndCoffee do? SassAndCoffee is a library for ASP.NET (both MVC and old-school WebForms) that adds drop-in support for two new languages: Sass and SCSS, a language that allows you to write reusable, more structured CSS, as well as CoffeeScript, which is a JavaScript dialect that is much more syntactically elegant, but still preserving [...]]]></description>
			<content:encoded><![CDATA[<h2>What does SassAndCoffee do?</h2>
<p>
SassAndCoffee is a library for ASP.NET (both MVC and old-school WebForms) that adds drop-in support for two new languages: <a href="http://www.sass-lang.com/tutorial.html">Sass and SCSS</a>, a language that allows you to write reusable, more structured CSS, as well as <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>, which is a JavaScript dialect that is much more syntactically elegant, but still preserving 100% compatibility with regular JavaScript.
</p>
<h2>How to use SassAndCoffee</h2>
<ul>
<li>Add the package reference <a href="http://nuget.org/List/Packages/SassAndCoffee">via NuGet</a></li>
<li>Add a .coffee, .scss, or .sass file to your project (an easy test is to just rename a CSS file to .scss)</li>
<li>Reference the file as if it was a CSS or .JS file (i.e. to reference &#8220;scripts/test.coffee&#8221;, you should reference &#8220;scripts/test.js&#8221; in your SCRIPT tag)</li>
<li>To get the minified version of a file (either a coffee file or a standard js file), ask for the &#8220;.min.js&#8221; version (i.e. &#8220;scripts/test.min.js&#8221;)</li>
</ul>
<h2>Some things you <b>don&#8217;t</b> have to do</h2>
<ul>
<li>Install any extra software, such as Ruby &#8211; everything is embedded in resources.</li>
<li>Do any special configuration or make manual changes to your config files &#8211; NuGet will handle that.</li>
<li>Run any commands to update the files &#8211; SassAndCoffee builds the files on the first request; if you make CSS / JavaScript changes, it&#8217;ll rebuild automatically.</li>
<li>Do any special setup whatsoever when deploying &#8211; if it works on your box, it&#8217;ll work on the remote box (*)</li>
</ul>
<p>
<i>* &#8211; a special note: VS2010 likes to mark CoffeeScript files as &#8216;do not deploy&#8217; &#8211; make sure to hit F4 and mark them as <b>content</b></i>
</p>
<h2>What&#8217;s New in SassAndCoffee 0.8 &#8211; Minification and Combination</h2>
<p>
SassAndCoffee now supports JavaScript minification thanks to <a href="http://marijnhaverbeke.nl/uglifyjs">Mihai Bazon&#8217;s UglifyJS project</a> &#8211; for <i>both</i> CoffeeScript files as well as your existing JavaScript files. It&#8217;s quite simple to use &#8211; anywhere you reference a JS file in your Views, rewrite the reference to &#8220;<b>.min</b>.js&#8221;.
</p>
<p>
It&#8217;s also a good idea to combine several Javascript files into one file to minimize requests &#8211; however trying to do this by-hand is a maintenance nightmare. To this end, SassAndCoffee will do this work for you. Here&#8217;s how to do it:
</p>
<ol>
<li>Open your View file, you probably have references to a bunch of scripts, whose source looks something like: <code>@Url.Content("~/Scripts/jquery-1.5.1.min.js")</code></li>
<li>Copy the actual references (i.e. starting from &#8216;~&#8217; on) to a file whose extension is &#8220;.combine&#8221; (i.e. &#8216;debug_all.combine&#8217;). These files don&#8217;t necessarily have to exist on-disk (i.e. they can be a CoffeeScript file). You can also just write a list of filenames, relative to the .combine file.</li>
<li>Reference the file as if it was a JavaScript file (i.e. &#8216;debug_all.js&#8217;)</li>
<li>If you change either the combine file <i>or any file that it references</i>, it will rebuilt &#8211; no need to rebuild anything by hand!</li>
</ol>
<p>
You can see an example of how this is used <a href="https://github.com/xpaulbettsx/SassAndCoffee/tree/master/WebTest/Scripts">in the WebTest project on GitHub</a>.
</p>
<h2>What else is new?</h2>
<ul>
<li>Scripts are compiled/minified in parallel, improving performance. Unfortunately, minifying a significant number of scripts still takes a <i>long</i> time &#8211; this will be dramatically improved in the next release.</li>
<li>Several bugs were fixed, such as fixing projects that didn&#8217;t have an App_Data folder, as well as a race condition where zero-length files could possibly be served up.</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=27pA6nh6vkk:dgKNFRg6TLg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=27pA6nh6vkk:dgKNFRg6TLg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=27pA6nh6vkk:dgKNFRg6TLg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?i=27pA6nh6vkk:dgKNFRg6TLg:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.paulbetts.org/index.php/2011/05/30/new-release-sassandcoffee-0-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Release: ReactiveUI 2.3.1</title>
		<link>http://blog.paulbetts.org/index.php/2011/05/29/new-release-reactiveui-2-3-1/</link>
		<comments>http://blog.paulbetts.org/index.php/2011/05/29/new-release-reactiveui-2-3-1/#comments</comments>
		<pubDate>Sun, 29 May 2011 21:27:16 +0000</pubDate>
		<dc:creator>Paul Betts</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mono / .NET]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Reactive Extensions]]></category>
		<category><![CDATA[WPF / Silverlight]]></category>

		<guid isPermaLink="false">http://blog.paulbetts.org/?p=744</guid>
		<description><![CDATA[What&#8217;s New ReactiveUI 2.3.1 is a maintenance release. The big difference is to fix the NuGet packages because they were targeted at the wrong branch of Rx.NET &#8211; I had built against the 1.0 branch, but only the 1.1 branch is published. Wrong Branch? With the latest release of the Reactive Extensions, the team has [...]]]></description>
			<content:encoded><![CDATA[<h2>What&#8217;s New</h2>
<p>
ReactiveUI 2.3.1 is a maintenance release. The big difference is to fix the <a href="http://nuget.org/List/Packages/reactiveui">NuGet packages</a> because they were targeted at the wrong branch of Rx.NET &#8211; I had built against the 1.0 branch, but only the 1.1 branch is published.
</p>
<h2>Wrong Branch?</h2>
<p>
With the latest release of the Reactive Extensions, the team has split the product into two branches &#8211; the <i>stable</i> release (having a version number of 1.<b>0</b>.10425), and the <i>experimental</i> release (which begins with 1.<b>1</b>). While the term &#8220;Experimental&#8221; sounds scary, it&#8217;s currently a bit of a misnomer &#8211; Experimental is just the Stable release with some extra methods added. Conveniently, they tagged all of the differences with an Attribute called &#8220;Experimental&#8221;, so you can use a disassembler such as ILSpy or JetBrains&#8217; dotPeek to find all of the new cool stuff if you find the &#8220;ExperimentalAttribute&#8221; class, then &#8220;Find Usages&#8221;.
</p>
<p>
Keep in mind, that the reason that the release is Experimental, is that these new APIs are <i>subject to change</i> &#8211; they might work differently in future releases, or be gone altogether.
</p>
<h2>One more thing</h2>
<p>
It&#8217;s not all boring changes &#8211; I added one small feature that folks were asking for: in your class definitions, if you have a custom property getter/setter and can&#8217;t use RaiseAndSetIfChanged, you can now use the Expression syntax with RaisePropertyChanging/RaisePropertyChanged. So, &#8220;RaisePropertyChanged(x => x.SomeProperty)&#8221;.
</p>
<h2>What is Rx-Xaml?</h2>
<p>
For the current Rx release, the DLL that contains &#8220;ObserveOnDispatcher&#8221; (and everything Dispatcher-related) is in a separate &#8220;System.Windows.Reactive.Threading.dll&#8221; assembly. This DLL is needed for any project that uses WPF/Silverlight/WP7. The Rx team decided to publish two <i>separate</i> packages for this DLL, &#8220;Rx-WPF&#8221; and &#8220;Rx-Silverlight&#8221;. While this is easier to grok, it also makes it difficult for projects like ReactiveUI that support both WPF and Silverlight, since I can&#8217;t write the dependency in my NuSpec file correctly. So, I created a new package, &#8220;Rx-Xaml&#8221;, that is a simple merge of &#8220;Rx-WPF&#8221; and &#8220;Rx-Silverlight&#8221; &#8211; based on the platform, it will do the right thing. I&#8217;ll keep this package up-to-date, so feel free to depend on it.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=maKDuyGEZmc:TcOJVUFZcSY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=maKDuyGEZmc:TcOJVUFZcSY:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/paulbetts/entries?a=maKDuyGEZmc:TcOJVUFZcSY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/paulbetts/entries?i=maKDuyGEZmc:TcOJVUFZcSY:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.paulbetts.org/index.php/2011/05/29/new-release-reactiveui-2-3-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

