<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0IBRn06fyp7ImA9WhVbEkg.&quot;"><id>tag:blogger.com,1999:blog-6894552</id><updated>2012-05-28T17:32:37.317-07:00</updated><category term="Reviews" /><category term="Immutability" /><category term="Far sighted" /><category term="OAuth" /><category term="WCF" /><category term="Ruby" /><category term="Javascript" /><category term="Linux" /><category term="Async" /><category term="NHibernate" /><category term="Smart devices" /><category term="Hardware" /><category term="Mono" /><category term="Windows" /><category term="MSBuild" /><category term="WPF" /><category term="DotNetOpenAuth" /><category term="InfoCard" /><category term="Silverlight" /><category term=".NET" /><category term="OpenID" /><category term="ASP.NET" /><category term="Windows.Forms" /><title>JMPInline</title><subtitle type="html">Read up on .NET news, tips, cautions... and other areas of technological interest.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.nerdbank.net/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>149</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Jmpinline" /><feedburner:info uri="jmpinline" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>47.71828</geo:lat><geo:long>-122.197026</geo:long><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><entry gd:etag="W/&quot;DU4GRHY_eip7ImA9WhVbEk8.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-4567955313025830829</id><published>2012-05-28T10:58:00.001-07:00</published><updated>2012-05-28T10:58:45.842-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-28T10:58:45.842-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>A brief survey of the various .NET unit test frameworks</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4567955313025830829/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2012/05/brief-survey-of-various-net-unit-test.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4567955313025830829?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4567955313025830829?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/h9Q97tnSdKk/brief-survey-of-various-net-unit-test.html" title="A brief survey of the various .NET unit test frameworks" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">In summary, someone please fix NUnit to support async task methods. MSTest Pros: Best IDE experience for VS2010 and earlier (VS 2012 supports MSTest and other frameworks equally). Cons: It requires an expensive product to develop and run.  ExpectedExceptionAttribute considered harmful. NUnit Pros: Supports Fluent syntax.  Attributes can specify that tests require STA, MTA, etc. Cons: No support &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h9Q97tnSdKk:M-mcAmMywkg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=h9Q97tnSdKk:M-mcAmMywkg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h9Q97tnSdKk:M-mcAmMywkg:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h9Q97tnSdKk:M-mcAmMywkg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=h9Q97tnSdKk:M-mcAmMywkg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h9Q97tnSdKk:M-mcAmMywkg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=h9Q97tnSdKk:M-mcAmMywkg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h9Q97tnSdKk:M-mcAmMywkg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/h9Q97tnSdKk" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2012/05/brief-survey-of-various-net-unit-test.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkABRHc5eSp7ImA9WhVWGEU.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-5102660196131774609</id><published>2011-10-02T15:24:00.001-07:00</published><updated>2012-05-01T06:59:15.921-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-01T06:59:15.921-07:00</app:edited><title>How to get meld working with git on Windows</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/5102660196131774609/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2011/10/how-to-get-meld-working-with-git-on.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5102660196131774609?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5102660196131774609?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/f2R8vcxGoxs/how-to-get-meld-working-with-git-on.html" title="How to get meld working with git on Windows" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>1</thr:total><content type="html">Inspired by these instructions, I followed these steps:Install Python 2.6
Install PyGTK All-in-one installer
Install meld
Then you need to configure git to be able to find and invoke meld.  If you’re using the git bash shell, this can be done with these commands:PATH=$PATH:/c/python26
git config --global merge.tool meld
git config --global mergetool.meld.path /c/Users/andarno/Downloads/meld-1.5.2&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=f2R8vcxGoxs:hdSZXM3gPyA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=f2R8vcxGoxs:hdSZXM3gPyA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=f2R8vcxGoxs:hdSZXM3gPyA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=f2R8vcxGoxs:hdSZXM3gPyA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=f2R8vcxGoxs:hdSZXM3gPyA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=f2R8vcxGoxs:hdSZXM3gPyA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=f2R8vcxGoxs:hdSZXM3gPyA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=f2R8vcxGoxs:hdSZXM3gPyA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/f2R8vcxGoxs" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2011/10/how-to-get-meld-working-with-git-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYCRHs7fCp7ImA9WhdXFko.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-2391546129462032299</id><published>2011-08-29T20:49:00.001-07:00</published><updated>2011-08-29T20:49:25.504-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T20:49:25.504-07:00</app:edited><title>Immutable collections with mutable performance</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/2391546129462032299/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2011/08/immutable-collections-with-mutable.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2391546129462032299?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2391546129462032299?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/GGYVLOSHYzs/immutable-collections-with-mutable.html" title="Immutable collections with mutable performance" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">In my last post, I detailed the differences among read/write, read only, frozen and immutable collection types.  I described how immutable collections come with a hit to the garbage collector due to the garbage they generate during mutations.  I have a very positive update on that topic. See my update on my Microsoft blog for the update.  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=GGYVLOSHYzs:RZLoInT1c1g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=GGYVLOSHYzs:RZLoInT1c1g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=GGYVLOSHYzs:RZLoInT1c1g:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=GGYVLOSHYzs:RZLoInT1c1g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=GGYVLOSHYzs:RZLoInT1c1g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=GGYVLOSHYzs:RZLoInT1c1g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=GGYVLOSHYzs:RZLoInT1c1g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=GGYVLOSHYzs:RZLoInT1c1g:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/GGYVLOSHYzs" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2011/08/immutable-collections-with-mutable.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQERHg7fip7ImA9WhdXFko.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-3091549095084692718</id><published>2011-08-21T16:15:00.001-07:00</published><updated>2011-08-29T20:51:45.606-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T20:51:45.606-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Immutability" /><category scheme="http://www.blogger.com/atom/ns#" term="Async" /><title>Read only, frozen, and immutable collections</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/3091549095084692718/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2011/08/read-only-frozen-and-immutable-types.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/3091549095084692718?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/3091549095084692718?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/s2Jy-_nAbU8/read-only-frozen-and-immutable-types.html" title="Read only, frozen, and immutable collections" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>1</thr:total><content type="html">[Update: a more recent post with new data on attainable performance of immutable collections] The topics of immutability and functional programming has fascinated me lately.  Mostly because of my work on the Visual Studio Common Project System (CPS) which is a large, highly multi-threaded code base that only remains sane because of its reliance on immutable types in many areas. In my research and&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=s2Jy-_nAbU8:hlq6cYg6Q_U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=s2Jy-_nAbU8:hlq6cYg6Q_U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=s2Jy-_nAbU8:hlq6cYg6Q_U:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=s2Jy-_nAbU8:hlq6cYg6Q_U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=s2Jy-_nAbU8:hlq6cYg6Q_U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=s2Jy-_nAbU8:hlq6cYg6Q_U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=s2Jy-_nAbU8:hlq6cYg6Q_U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=s2Jy-_nAbU8:hlq6cYg6Q_U:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/s2Jy-_nAbU8" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2011/08/read-only-frozen-and-immutable-types.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQNQ3wycSp7ImA9WhdTGE4.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-8588622561739490768</id><published>2011-07-16T08:33:00.001-07:00</published><updated>2011-07-16T08:33:12.299-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-16T08:33:12.299-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Async" /><title>C# await for MSBuild</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/8588622561739490768/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2011/07/c-await-for-msbuild.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8588622561739490768?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8588622561739490768?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/x9K4JeTp3v0/c-await-for-msbuild.html" title="C# await for MSBuild" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">The async CTP that adds the C# await keyword doesn’t include an awaitable MSBuild.  It’s easy to add yourself.  Just copy and paste the the BuildSubmissionAwaitExtensions class from the code below somewhere in your project and you’ll be able to await on MSBuild.  Also included below is a sample of what it might look like.  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=x9K4JeTp3v0:Iq3-ddAvT4E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=x9K4JeTp3v0:Iq3-ddAvT4E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=x9K4JeTp3v0:Iq3-ddAvT4E:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=x9K4JeTp3v0:Iq3-ddAvT4E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=x9K4JeTp3v0:Iq3-ddAvT4E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=x9K4JeTp3v0:Iq3-ddAvT4E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=x9K4JeTp3v0:Iq3-ddAvT4E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=x9K4JeTp3v0:Iq3-ddAvT4E:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/x9K4JeTp3v0" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2011/07/c-await-for-msbuild.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IBQXczeip7ImA9WhdTF0g.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-8260776574728675982</id><published>2011-07-15T10:37:00.001-07:00</published><updated>2011-07-15T10:39:10.982-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-15T10:39:10.982-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Async" /><title>C# await for WaitHandle</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/8260776574728675982/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2011/07/c-await-for-waithandle.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8260776574728675982?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8260776574728675982?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/wTQIZ1X4L98/c-await-for-waithandle.html" title="C# await for WaitHandle" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">The async CTP that adds the C# await keyword doesn’t include an awaitable WaitHandle.  It’s easy to add yourself.  Just copy and paste the following code somewhere in your project and you’ll have an awaitable WaitHandle. Warning: don't use this on AutoResetEvents, or the behavior may not be what you expect.  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=wTQIZ1X4L98:aCdrJr9YCpA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=wTQIZ1X4L98:aCdrJr9YCpA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=wTQIZ1X4L98:aCdrJr9YCpA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=wTQIZ1X4L98:aCdrJr9YCpA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=wTQIZ1X4L98:aCdrJr9YCpA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=wTQIZ1X4L98:aCdrJr9YCpA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=wTQIZ1X4L98:aCdrJr9YCpA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=wTQIZ1X4L98:aCdrJr9YCpA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/wTQIZ1X4L98" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2011/07/c-await-for-waithandle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MAR3k4fSp7ImA9WhZUGUo.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-8291100173126770062</id><published>2011-06-13T08:22:00.002-07:00</published><updated>2011-06-13T08:37:26.735-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-13T08:37:26.735-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><title>What is 2-legged OAuth?</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/8291100173126770062/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2011/06/what-is-2-legged-oauth.html#comment-form" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8291100173126770062?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8291100173126770062?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/pXGVv8zAs7k/what-is-2-legged-oauth.html" title="What is 2-legged OAuth?" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>16</thr:total><content type="html">Although there is an official spec for OAuth 1.0, the spec only outlines what the community refers to as "3-legged OAuth".  An alternative form of OAuth is loosely referred to as "2-legged OAuth", and there are far too many variants of this and not a single finalized spec to conform to.  As a result, there are various ways and forms to achieve what people, correctly or incorrectly, refer to as 2-&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=pXGVv8zAs7k:GO-1aYsZe1Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=pXGVv8zAs7k:GO-1aYsZe1Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=pXGVv8zAs7k:GO-1aYsZe1Y:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=pXGVv8zAs7k:GO-1aYsZe1Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=pXGVv8zAs7k:GO-1aYsZe1Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=pXGVv8zAs7k:GO-1aYsZe1Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=pXGVv8zAs7k:GO-1aYsZe1Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=pXGVv8zAs7k:GO-1aYsZe1Y:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/pXGVv8zAs7k" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2011/06/what-is-2-legged-oauth.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08FRXY7fyp7ImA9Wx5UEEs.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-5752960676594216280</id><published>2010-10-14T07:10:00.000-07:00</published><updated>2010-10-14T07:16:54.807-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-14T07:16:54.807-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Reviews" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>.NET Obfuscator Product Review</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/5752960676594216280/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2010/10/net-obfuscator-product-review.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5752960676594216280?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5752960676594216280?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/VU4OWZHWToA/net-obfuscator-product-review.html" title=".NET Obfuscator Product Review" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_hfiLRSZPvmE/TLcPiMFRoUI/AAAAAAAAEek/8blldk6EtaI/s72-c/image_thumb1%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><content type="html">CliSecure .NET Obfuscator Product Review    Forward  .NET assemblies are (in general) remarkably easy to decompile and obtain reasonably intelligible source code.  A .NET obfuscator can be run as a post-build step to make decompiling the assembly much less useful to thieves who are trying to steal your intellectual property.  There are many .NET obfuscators out there.    In this post, I review &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=VU4OWZHWToA:cTXz5pTwdCI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=VU4OWZHWToA:cTXz5pTwdCI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=VU4OWZHWToA:cTXz5pTwdCI:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=VU4OWZHWToA:cTXz5pTwdCI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=VU4OWZHWToA:cTXz5pTwdCI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=VU4OWZHWToA:cTXz5pTwdCI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=VU4OWZHWToA:cTXz5pTwdCI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=VU4OWZHWToA:cTXz5pTwdCI:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/VU4OWZHWToA" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2010/10/net-obfuscator-product-review.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEADQH87eip7ImA9WxFbEEU.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-4632580049400478264</id><published>2010-07-02T06:54:00.001-07:00</published><updated>2010-07-02T07:59:31.102-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-02T07:59:31.102-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Reviews" /><category scheme="http://www.blogger.com/atom/ns#" term="Hardware" /><title>Review on the Dell Studio 15 laptop</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4632580049400478264/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2010/07/review-on-dell-studio-15-laptop.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4632580049400478264?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4632580049400478264?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/-eZykFHgwRk/review-on-dell-studio-15-laptop.html" title="Review on the Dell Studio 15 laptop" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>4</thr:total><content type="html">So I bought a new laptop from Dell two weeks ago.  Here are the highlights:  The good     Very speedy (of course I paid for that).     Sleep/wake finally works well.  Waking is very fast, and actually reliable!     The propping back legs on the laptop are conveniently placed and the heat on the underside of the laptop are also lending to holding the laptop on your lap without getting hot spots on&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-eZykFHgwRk:q6P3kdnEdpA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=-eZykFHgwRk:q6P3kdnEdpA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-eZykFHgwRk:q6P3kdnEdpA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-eZykFHgwRk:q6P3kdnEdpA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=-eZykFHgwRk:q6P3kdnEdpA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-eZykFHgwRk:q6P3kdnEdpA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=-eZykFHgwRk:q6P3kdnEdpA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-eZykFHgwRk:q6P3kdnEdpA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/-eZykFHgwRk" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2010/07/review-on-dell-studio-15-laptop.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEHQnk9eSp7ImA9WhRaF0U.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-2640453341360821021</id><published>2010-04-13T21:50:00.001-07:00</published><updated>2012-02-20T16:20:33.761-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-20T16:20:33.761-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DotNetOpenAuth" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>DotNetOpenAuth v3.4.3 released</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/2640453341360821021/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2010/04/dotnetopenauth-v343-released.html#comment-form" title="15 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2640453341360821021?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2640453341360821021?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/romn_pyFgqo/dotnetopenauth-v343-released.html" title="DotNetOpenAuth v3.4.3 released" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>15</thr:total><content type="html">DotNetOpenAuth has just seen a minor release to v3.4.3.  Fixes center around corner case interoperability issues that cause a very small percentage (&amp;lt;0.5%) of OpenID users to be unable to log into your relying party web sites.  A few other random fixes as well.  Go download it now.The OpenID “dot bug”The most noteworthy fix was a very difficult one to pull off, namely the bug where OpenIDs with &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=romn_pyFgqo:lXlFqynielA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=romn_pyFgqo:lXlFqynielA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=romn_pyFgqo:lXlFqynielA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=romn_pyFgqo:lXlFqynielA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=romn_pyFgqo:lXlFqynielA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=romn_pyFgqo:lXlFqynielA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=romn_pyFgqo:lXlFqynielA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=romn_pyFgqo:lXlFqynielA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/romn_pyFgqo" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2010/04/dotnetopenauth-v343-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMCQ3o9fCp7ImA9WxBbF00.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-5453365124440130994</id><published>2010-03-09T20:07:00.001-08:00</published><updated>2010-03-15T19:27:42.464-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-15T19:27:42.464-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>How to upgrade your Blogger OpenID to a decent one</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/5453365124440130994/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2010/03/how-to-upgrade-your-blogger-openid-to.html#comment-form" title="14 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5453365124440130994?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5453365124440130994?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/CosZVuMxU4U/how-to-upgrade-your-blogger-openid-to.html" title="How to upgrade your Blogger OpenID to a decent one" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>14</thr:total><content type="html">If you host your blog on Google’s Blogger service you may have discovered that your blog is an OpenID you can use to log into various web sites that act as OpenID relying parties.  But Blogger’s support for OpenID is limited to OpenID 1.1, which is very old and not supported by many relying parties nowadays.  You can upgrade your Blogger hosted OpenID to the new OpenID 2.0 version and log into &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=CosZVuMxU4U:a2YYHzXHUrU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=CosZVuMxU4U:a2YYHzXHUrU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=CosZVuMxU4U:a2YYHzXHUrU:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=CosZVuMxU4U:a2YYHzXHUrU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=CosZVuMxU4U:a2YYHzXHUrU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=CosZVuMxU4U:a2YYHzXHUrU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=CosZVuMxU4U:a2YYHzXHUrU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=CosZVuMxU4U:a2YYHzXHUrU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/CosZVuMxU4U" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2010/03/how-to-upgrade-your-blogger-openid-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkICQn05cSp7ImA9WxBQFks.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-4643078507506158768</id><published>2010-01-16T08:49:00.001-08:00</published><updated>2010-01-16T08:49:23.329-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-16T08:49:23.329-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term="DotNetOpenAuth" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoCard" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>DotNetOpenAuth’s “call home” reporting</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4643078507506158768/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2010/01/dotnetopenauths-call-home-reporting.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4643078507506158768?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4643078507506158768?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/fmSVnuT69dY/dotnetopenauths-call-home-reporting.html" title="DotNetOpenAuth’s “call home” reporting" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">A few months ago I asked how people would feel if DotNetOpenAuth collected feature statistics and sent them back to the library's authors so we get a better feel for what features are used, errors that are common.  The feedback I got was positive, so v3.4 has reporting turned on by default, but you can opt out either entirely or just omit certain details from the report by adding some simple tags&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=fmSVnuT69dY:rACK6h3yHpo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=fmSVnuT69dY:rACK6h3yHpo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=fmSVnuT69dY:rACK6h3yHpo:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=fmSVnuT69dY:rACK6h3yHpo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=fmSVnuT69dY:rACK6h3yHpo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=fmSVnuT69dY:rACK6h3yHpo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=fmSVnuT69dY:rACK6h3yHpo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=fmSVnuT69dY:rACK6h3yHpo:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/fmSVnuT69dY" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2010/01/dotnetopenauths-call-home-reporting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEGSXo7cSp7ImA9WxBQFks.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-8360348461670980249</id><published>2010-01-15T15:20:00.001-08:00</published><updated>2010-01-16T08:50:28.409-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-16T08:50:28.409-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoCard" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>DotNetOpenAuth v3.4 now available</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/8360348461670980249/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2010/01/dotnetopenauth-v34-now-available.html#comment-form" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8360348461670980249?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8360348461670980249?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/ihyTDHYwo8A/dotnetopenauth-v34-now-available.html" title="DotNetOpenAuth v3.4 now available" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>11</thr:total><content type="html">You can go download DotNetOpenAuth v3.4 today.  Highlights of the new version include:     Support for Google Apps for Domains issued OpenIDs.  This required special work since Google has their own flavor of OpenID discovery that had to be supported until something like Google’s scenario get’s standardized.     Identifier discovery extensibility (this is how Google Apps support was enabled, but &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ihyTDHYwo8A:HZAD1zWK7zo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ihyTDHYwo8A:HZAD1zWK7zo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ihyTDHYwo8A:HZAD1zWK7zo:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ihyTDHYwo8A:HZAD1zWK7zo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ihyTDHYwo8A:HZAD1zWK7zo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ihyTDHYwo8A:HZAD1zWK7zo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ihyTDHYwo8A:HZAD1zWK7zo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ihyTDHYwo8A:HZAD1zWK7zo:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/ihyTDHYwo8A" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2010/01/dotnetopenauth-v34-now-available.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYAQH4-fSp7ImA9WxBTE00.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-3258801272732475606</id><published>2009-12-08T12:12:00.001-08:00</published><updated>2009-12-08T12:12:21.055-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-08T12:12:21.055-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Rest in peace, ExtremeSwank OpenID and OAuth</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/3258801272732475606/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/12/rest-in-peace-extremeswank-openid-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/3258801272732475606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/3258801272732475606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/HAE3TTevwks/rest-in-peace-extremeswank-openid-and.html" title="Rest in peace, ExtremeSwank OpenID and OAuth" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>0</thr:total><content type="html">ExtremeSwankOpenID and ExtremeSwankOAuth, both libraries authored by John Ehn, have been discontinued according to the project sites respective home pages which have a new note that reads: “Note: This … Consumer is no longer in development.”  ExtremeSwankOpenID was stagnant in development lately, and when a recent OpenID vulnerability was identified as impacting the ExtremeSwankOpenID library due&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=HAE3TTevwks:p2rh91j9dPs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=HAE3TTevwks:p2rh91j9dPs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=HAE3TTevwks:p2rh91j9dPs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=HAE3TTevwks:p2rh91j9dPs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=HAE3TTevwks:p2rh91j9dPs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=HAE3TTevwks:p2rh91j9dPs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=HAE3TTevwks:p2rh91j9dPs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=HAE3TTevwks:p2rh91j9dPs:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/HAE3TTevwks" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/12/rest-in-peace-extremeswank-openid-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQHSHc8eyp7ImA9WxNaGE4.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-5860511818364616908</id><published>2009-12-03T01:23:00.001-08:00</published><updated>2009-12-03T01:25:39.973-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T01:25:39.973-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoCard" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>DotNetOpenAuth v3.3 is released</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/5860511818364616908/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/12/dotnetopenauth-v33-is-released.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5860511818364616908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5860511818364616908?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/m8OLQRFSZRk/dotnetopenauth-v33-is-released.html" title="DotNetOpenAuth v3.3 is released" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>6</thr:total><content type="html">It’s been nearly six months since v3.2 was released.  So what’s in v3.3 that took so long to bake?  Well, a lot of it was waiting for and getting used to Code Contracts to mature enough to bet on the technology.    The most exciting changes though are the new OpenIdSelector control, and the new project template that helps you get going fast and strong with a new web site that accepts OpenID and/&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=m8OLQRFSZRk:qLx-hHnv-uQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=m8OLQRFSZRk:qLx-hHnv-uQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=m8OLQRFSZRk:qLx-hHnv-uQ:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=m8OLQRFSZRk:qLx-hHnv-uQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=m8OLQRFSZRk:qLx-hHnv-uQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=m8OLQRFSZRk:qLx-hHnv-uQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=m8OLQRFSZRk:qLx-hHnv-uQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=m8OLQRFSZRk:qLx-hHnv-uQ:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/m8OLQRFSZRk" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/12/dotnetopenauth-v33-is-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUCRXw6fip7ImA9WxNVEkg.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-5787916446147412572</id><published>2009-10-22T15:57:00.001-07:00</published><updated>2009-10-22T15:57:44.216-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-22T15:57:44.216-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="InfoCard" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Feedback requested: New OpenID RP login UX prototype</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/5787916446147412572/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/10/feedback-requested-new-openid-rp-login.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5787916446147412572?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5787916446147412572?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/-23YGt-4310/feedback-requested-new-openid-rp-login.html" title="Feedback requested: New OpenID RP login UX prototype" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>5</thr:total><content type="html">OpenID RP login UX  Live demo location: http://openidux.dotnetopenauth.net/    Design considerations  The DNOA login UX design document contains the design spec, and some of the reasoning that went into that design.  One high-level goal of all this work is to produce a set of HTML, CSS, and JS files that can work on any web platform, so that ruby, python, php, coldfusion, and (of course) ASP.NET &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-23YGt-4310:9F9XtGz4-1I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=-23YGt-4310:9F9XtGz4-1I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-23YGt-4310:9F9XtGz4-1I:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-23YGt-4310:9F9XtGz4-1I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=-23YGt-4310:9F9XtGz4-1I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-23YGt-4310:9F9XtGz4-1I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=-23YGt-4310:9F9XtGz4-1I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=-23YGt-4310:9F9XtGz4-1I:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/-23YGt-4310" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/10/feedback-requested-new-openid-rp-login.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4GSHY5eCp7ImA9WxNWFEo.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-2677541554901398847</id><published>2009-10-10T15:57:00.002-07:00</published><updated>2009-10-13T15:28:49.820-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-13T15:28:49.820-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="MSBuild" /><title>Minify your EmbeddedResource .js and .css files in your MSBuild project</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/2677541554901398847/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/10/minify-your-embeddedresource-js-and-css.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2677541554901398847?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2677541554901398847?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/ftINBIm0z1Y/minify-your-embeddedresource-js-and-css.html" title="Minify your EmbeddedResource .js and .css files in your MSBuild project" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>1</thr:total><content type="html">If you write a C# or VB.NET class library that contains ASP.NET controls that also have .js or .css files embedded in your assembly, you probably want to minify those files for optimal download size in production, but keep the files readable for coding and debugging.  What if you could add a single &amp;lt;Import&amp;gt; to your class library’s project file that would automatically minify these files in &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ftINBIm0z1Y:40CCPlAS9Gg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ftINBIm0z1Y:40CCPlAS9Gg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ftINBIm0z1Y:40CCPlAS9Gg:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ftINBIm0z1Y:40CCPlAS9Gg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ftINBIm0z1Y:40CCPlAS9Gg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ftINBIm0z1Y:40CCPlAS9Gg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=ftINBIm0z1Y:40CCPlAS9Gg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=ftINBIm0z1Y:40CCPlAS9Gg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/ftINBIm0z1Y" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/10/minify-your-embeddedresource-js-and-css.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAERnkycSp7ImA9WhRTEkQ.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-559763819821896016</id><published>2009-10-09T11:22:00.001-07:00</published><updated>2011-11-02T20:58:27.799-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-02T20:58:27.799-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>VS2008 project template for OpenID and InfoCard relying parties</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/559763819821896016/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/10/vs2008-project-template-for-openid-and.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/559763819821896016?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/559763819821896016?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/Rm26dfekG7c/vs2008-project-template-for-openid-and.html" title="VS2008 project template for OpenID and InfoCard relying parties" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>8</thr:total><content type="html">I finally built a project template to make it easier to write an OpenID relying party web site using C# and ASP.NET.  Up to this point all we had were the sample RPs that ship with DotNetOpenAuth, which were deliberately kept simple.  They didn’t use a real database, didn’t follow some best practices, and weren’t very real.  Now you can start your next web site with OpenID and InfoCard logins &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Rm26dfekG7c:IysmceoA8Qc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Rm26dfekG7c:IysmceoA8Qc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Rm26dfekG7c:IysmceoA8Qc:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Rm26dfekG7c:IysmceoA8Qc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Rm26dfekG7c:IysmceoA8Qc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Rm26dfekG7c:IysmceoA8Qc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=Rm26dfekG7c:IysmceoA8Qc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=Rm26dfekG7c:IysmceoA8Qc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/Rm26dfekG7c" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/10/vs2008-project-template-for-openid-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ACQXg_eSp7ImA9WxFRFUk.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-463330210496348733</id><published>2009-09-25T21:47:00.002-07:00</published><updated>2010-04-29T05:56:00.641-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-29T05:56:00.641-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Optimal OpenID UX finally underway</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/463330210496348733/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/09/optimal-openid-ux-finally-underway.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/463330210496348733?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/463330210496348733?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/EJ-ph-wW6ss/optimal-openid-ux-finally-underway.html" title="Optimal OpenID UX finally underway" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>4</thr:total><content type="html">I’m finally making progress on building a set of HTML and javascript files that can be used on any OpenID relying party web site to allow visitors to easily log in with OpenID, without even knowing what OpenID is.  I mentioned my goal to do this some time ago, and now I have a small partially functional prototype.  Please try it out, and keep coming back and letting me know what you think of it &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=EJ-ph-wW6ss:kUDdOy14KYU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=EJ-ph-wW6ss:kUDdOy14KYU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=EJ-ph-wW6ss:kUDdOy14KYU:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=EJ-ph-wW6ss:kUDdOy14KYU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=EJ-ph-wW6ss:kUDdOy14KYU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=EJ-ph-wW6ss:kUDdOy14KYU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=EJ-ph-wW6ss:kUDdOy14KYU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=EJ-ph-wW6ss:kUDdOy14KYU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/EJ-ph-wW6ss" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/09/optimal-openid-ux-finally-underway.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EFRnc-cSp7ImA9WxNRE0s.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-1752187103953460465</id><published>2009-09-07T16:20:00.001-07:00</published><updated>2009-09-07T16:20:17.959-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-07T16:20:17.959-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>How to easily fetch OpenID attributes, regardless of the Provider</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/1752187103953460465/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/09/how-to-easily-fetch-openid-attributes.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1752187103953460465?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1752187103953460465?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/XR1ybdKL2JA/how-to-easily-fetch-openid-attributes.html" title="How to easily fetch OpenID attributes, regardless of the Provider" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>3</thr:total><content type="html">In a previous article, I bemoan the pain of writing an OpenID Relying Party that wants to fetch user attributes from their OpenID Provider, because of the at least 4 ways in which those attributes must be requested.  And then later I promised that DotNetOpenAuth would offer help to alleviate that pain.  That help has come.  It actually came way back on June 26, 2009.  But only now did I &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XR1ybdKL2JA:jAD80MlkTJA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XR1ybdKL2JA:jAD80MlkTJA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XR1ybdKL2JA:jAD80MlkTJA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XR1ybdKL2JA:jAD80MlkTJA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XR1ybdKL2JA:jAD80MlkTJA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XR1ybdKL2JA:jAD80MlkTJA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XR1ybdKL2JA:jAD80MlkTJA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XR1ybdKL2JA:jAD80MlkTJA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/XR1ybdKL2JA" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/09/how-to-easily-fetch-openid-attributes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cCQH0_fSp7ImA9WxJVEUw.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-2253850765828953916</id><published>2009-06-27T08:04:00.001-07:00</published><updated>2009-06-27T08:04:21.345-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-27T08:04:21.345-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoCard" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>DotNetOpenAuth v3.2 is done</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/2253850765828953916/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/06/dotnetopenauth-v32-is-done.html#comment-form" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2253850765828953916?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2253850765828953916?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/h_IHh0wyms0/dotnetopenauth-v32-is-done.html" title="DotNetOpenAuth v3.2 is done" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>9</thr:total><content type="html">DotNetOpenAuth v3.2 just came off the presses.  Lots of feature work and a few interop fixes in this release.  The biggest highlights being:      Very simple story for both RPs and OPs interested in interoperating with others whether they use sreg or one of the several AX formats (finally!)     OAuth 1.0a support     PPID generation for OPs to protect customers' privacy.   Go download it.  As &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h_IHh0wyms0:JRYCw-SE6xA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=h_IHh0wyms0:JRYCw-SE6xA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h_IHh0wyms0:JRYCw-SE6xA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h_IHh0wyms0:JRYCw-SE6xA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=h_IHh0wyms0:JRYCw-SE6xA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h_IHh0wyms0:JRYCw-SE6xA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=h_IHh0wyms0:JRYCw-SE6xA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=h_IHh0wyms0:JRYCw-SE6xA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/h_IHh0wyms0" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/06/dotnetopenauth-v32-is-done.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cBSXkzfCp7ImA9WxJWGU0.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-4414599907683688872</id><published>2009-06-24T20:37:00.001-07:00</published><updated>2009-06-24T20:37:38.784-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-24T20:37:38.784-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>How to get ILMerge to work with .PFX files</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4414599907683688872/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/06/how-to-get-ilmerge-to-work-with-pfx.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4414599907683688872?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4414599907683688872?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/FbBKBOcTons/how-to-get-ilmerge-to-work-with-pfx.html" title="How to get ILMerge to work with .PFX files" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>3</thr:total><content type="html">ILMerge is an excellent tool for “linking” multiple assemblies into one.  But one of its switches, /keyfile:, which allows it to sign the resulting merged assembly, only accepts .snk files.  It reports no error if you feed it a password-protected .pfx key-pair file, but the resulting assembly is invalid.    &amp;gt;ilmerge /keyfile:some.pfx /out:merged\some.dll some.dll someother.dll

&amp;gt;sn -v merged\&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=FbBKBOcTons:LhjI0wpgx3Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=FbBKBOcTons:LhjI0wpgx3Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=FbBKBOcTons:LhjI0wpgx3Y:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=FbBKBOcTons:LhjI0wpgx3Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=FbBKBOcTons:LhjI0wpgx3Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=FbBKBOcTons:LhjI0wpgx3Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=FbBKBOcTons:LhjI0wpgx3Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=FbBKBOcTons:LhjI0wpgx3Y:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/FbBKBOcTons" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/06/how-to-get-ilmerge-to-work-with-pfx.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8EQXY-cSp7ImA9WxJWFU0.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-4663181356332210617</id><published>2009-06-20T07:23:00.001-07:00</published><updated>2009-06-20T07:23:20.859-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-20T07:23:20.859-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title>Help is coming for the Sreg/AX interop problem for OpenID</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4663181356332210617/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/06/help-is-coming-for-sregax-interop.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4663181356332210617?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4663181356332210617?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/B_LgVgQFaCE/help-is-coming-for-sregax-interop.html" title="Help is coming for the Sreg/AX interop problem for OpenID" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>2</thr:total><content type="html">Just to get your mouth watering for DotNetOpenAuth v3.2...  V3.2 has a new "behaviors" plugin capability that lets RPs and OPs get additional functionality with very little effort.  For example, OPs can add PPID identifier support very easily with just a few lines of code.    But of most interest I suspect is the sreg/AX interop behavior, which if activated in your web.config file (1 line), will &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=B_LgVgQFaCE:jv70TF9MI4M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=B_LgVgQFaCE:jv70TF9MI4M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=B_LgVgQFaCE:jv70TF9MI4M:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=B_LgVgQFaCE:jv70TF9MI4M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=B_LgVgQFaCE:jv70TF9MI4M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=B_LgVgQFaCE:jv70TF9MI4M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=B_LgVgQFaCE:jv70TF9MI4M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=B_LgVgQFaCE:jv70TF9MI4M:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/B_LgVgQFaCE" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/06/help-is-coming-for-sregax-interop.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcHSXoyfCp7ImA9WxJXGEk.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-9172457677012845843</id><published>2009-06-12T15:49:00.001-07:00</published><updated>2009-06-12T15:50:38.494-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-12T15:50:38.494-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>Reverse engineering ASP.NET Membership passwords and salts</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/9172457677012845843/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/06/reverse-engineering-aspnet-membership.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/9172457677012845843?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/9172457677012845843?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/QrIWS02DAEc/reverse-engineering-aspnet-membership.html" title="Reverse engineering ASP.NET Membership passwords and salts" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>2</thr:total><content type="html">I’m working on a project that was using the ASP.NET SQL Membership and I needed to remove the Membership provider from the system since we wanted more control over the user tables.  Our existing users had passwords that ASP.NET Membership had hashed and salted, and we needed to be able to maintain those user accounts, which means we have to be able to validate logins against the salted passwords.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=QrIWS02DAEc:mFHK70YdVMs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=QrIWS02DAEc:mFHK70YdVMs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=QrIWS02DAEc:mFHK70YdVMs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=QrIWS02DAEc:mFHK70YdVMs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=QrIWS02DAEc:mFHK70YdVMs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=QrIWS02DAEc:mFHK70YdVMs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=QrIWS02DAEc:mFHK70YdVMs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=QrIWS02DAEc:mFHK70YdVMs:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/QrIWS02DAEc" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/06/reverse-engineering-aspnet-membership.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8ERHs9eyp7ImA9WxJQE0U.&quot;"><id>tag:blogger.com,1999:blog-6894552.post-519803760122436280</id><published>2009-05-26T17:03:00.001-07:00</published><updated>2009-05-26T17:06:45.563-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-26T17:06:45.563-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>Caching results of .NET IEnumerable&lt;T&gt; generator methods</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/519803760122436280/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.nerdbank.net/2009/05/caching-results-of-net-ienumerable.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/519803760122436280?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/519803760122436280?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jmpinline/~3/XTGXyXcUfIo/caching-results-of-net-ienumerable.html" title="Caching results of .NET IEnumerable&amp;lt;T&amp;gt; generator methods" /><author><name>Andrew Arnott</name><uri>https://profiles.google.com/114635397638720587251</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-dETLr6cO5U0/AAAAAAAAAAI/AAAAAAABPgA/Oyc6ht-vdAk/s512-c/photo.jpg" /></author><thr:total>2</thr:total><content type="html">If you're already familiar with generator methods and want to jump to intelligent caching of their results, skip further down in this blog post.  In C#, generator methods are methods that use yield return to return an IEnumerable&amp;lt;T&amp;gt; where the elements enumerated over are generated on-demand.  These are useful for a couple of scenarios.  One is deferred execution – not doing work until you &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XTGXyXcUfIo:mqfROuMzX5c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XTGXyXcUfIo:mqfROuMzX5c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XTGXyXcUfIo:mqfROuMzX5c:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XTGXyXcUfIo:mqfROuMzX5c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XTGXyXcUfIo:mqfROuMzX5c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XTGXyXcUfIo:mqfROuMzX5c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?i=XTGXyXcUfIo:mqfROuMzX5c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Jmpinline?a=XTGXyXcUfIo:mqfROuMzX5c:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Jmpinline?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/XTGXyXcUfIo" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2009/05/caching-results-of-net-ienumerable.html</feedburner:origLink></entry></feed>

