<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Jon Galloway</title><link>http://weblogs.asp.net/jgalloway/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Tech News</media:category><itunes:explicit>no</itunes:explicit><itunes:subtitle></itunes:subtitle><itunes:category text="Technology"><itunes:category text="Tech News" /></itunes:category><geo:lat>32.761801</geo:lat><geo:long>-117.012737</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc/2.0/</creativeCommons:license><image><url>http://farm1.static.flickr.com/175/buddyicons/36836555@N00.jpg?1169797019</url><title>Jon Galloway</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/jongalloway" type="application/rss+xml" /><feedburner:emailServiceId>515622</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><item><title>MSDN Low Bandwidth Bookmarklet</title><link>http://feeds.feedburner.com/~r/jongalloway/~3/378815832/msdn-low-bandwidth-bookmarklet.aspx</link><pubDate>Sat, 30 Aug 2008 09:31:17 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6579842</guid><dc:creator>Jon Galloway</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/jgalloway/rsscomments.aspx?PostID=6579842</wfw:commentRss><comments>http://weblogs.asp.net/jgalloway/archive/2008/08/30/msdn-low-bandwidth-bookmarklet.aspx#comments</comments><description>&lt;style&gt;


a.bookmarklet
{
border: 1px black dashed;
text-decoration: none;
padding: 2px;
background: #fff9d8;
}&lt;/style&gt;  &lt;p&gt;There’s a semi-hidden feature in the &lt;a href="http://msdn.microsoft.com/en-us/library/default.aspx"&gt;MSDN Library website&lt;/a&gt;: Low Bandwidth view. We’ll talk about how to use it, why I like it, and some tips for switching it on and off. We’ll end up with an &lt;a class="bookmarklet" href="javascript:if(document.cookie.indexOf('LoBandEnabled=yes')&amp;lt;0){document.cookie='LoBandEnabled=yes;path=/;domain=.microsoft.com;%20expires=Wed,%2001-Aug-2040%2008:00:00%20GMT';}else{document.cookie='LoBandEnabled=no;path=/;domain=.microsoft.com;%20expires=Wed,%2001-Aug-2040%2008:00:00%20GMT';}window.location.reload();"&gt;MSDN Low Band&lt;/a&gt; bookmarklet I whipped up to make it even easier.&lt;/p&gt;  &lt;p&gt;The Low Bandwidth view has been available for a few months, but you wouldn’t know about it unless someone told you, since the only way to turn it on is to monkey with the URL. Try it - browse to:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/system.object.aspx" href="http://msdn.microsoft.com/en-us/library/system.object.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.object.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="MSDN-HighBand" href="http://www.flickr.com/photos/36836555@N00/2810670140/"&gt;&lt;img alt="MSDN-HighBand" src="http://static.flickr.com/3096/2810670140_7b9d018837.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now we’ll add the magic word: “(loband)” right before the “.aspx” at the end:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/system.object.aspx" href="http://msdn.microsoft.com/en-us/library/system.object(loband).aspx"&gt;http://msdn.microsoft.com/en-us/library/system.object(loband).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="MSDN-LoBand" href="http://www.flickr.com/photos/36836555@N00/2810805162/"&gt;&lt;img alt="MSDN-LoBand" src="http://static.flickr.com/3100/2810805162_e5b96723ab.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Magic!!!&lt;/p&gt;  &lt;h3&gt;Why LoBand is High Value&lt;/h3&gt;  &lt;h4&gt;Simpler Layout&lt;/h4&gt;  &lt;p&gt;The obvious difference is that it replaces the navigation treeview on the left with a simple link. There are other subtle differences – simpler layout, fewer superfluous images. Higher signal to noise in my book.&lt;/p&gt;  &lt;h4&gt;Smaller Page Weight&lt;/h4&gt;  &lt;p&gt;The High Bandwidth version of this page weighs in at 100KB of HTML, but 400KB total by the time all the images, javascript, and CSS are loaded. Compare that with 66KB HTML / 70 KB total for the low bandwidth version. In this case (which is pretty representative) the low bandwidth version slimmed the page weight by 82.5%.&lt;/p&gt;  &lt;h4&gt;Faster Page Load&lt;/h4&gt;  &lt;p&gt;I’m not just talking about the smaller HTML here. The navigation tree on the left contains tons of nested unordered lists (ul&amp;gt;li&amp;gt;ul&amp;gt;li etc.). It’s actually a big improvement over the former HTML for that treeview, which (if I remember correctly) included a bunch of horrible nested tables with inline styles and javacript attributes. The new treeview uses a Telerik control, and outputs relatively clean HTML. Still, that treeview takes a while to load up – on my relatively quick development machine (with a very fast internet connection), the low band page loads twice as quickly – most of the time is spend in rendering the page. I’m not talking about milliseconds of difference here, I’m talking about 1 second load / draw time for low band vs. 4 second load / draw time for high band.&lt;/p&gt;  &lt;h4&gt;Who Cares?&lt;/h4&gt;  &lt;p&gt;Well, if you’re a Microsoft developer, you spend a lot of time on MSDN. There’s the time saver factor, sure, but more important is that fast load times removes the barrier to exploring the site.&lt;/p&gt;  &lt;h3&gt;Getting To The LoBand&lt;/h3&gt;  &lt;p&gt;The simplest way is to just add that (loband) bit before the .aspx file extension. If you’re on a page which already has one of those funky filters in the URL (like this: &lt;a title="http://msdn.microsoft.com/en-us/library/cc189009(VS.95).aspx" href="http://msdn.microsoft.com/en-us/library/cc189009(VS.95).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc189009(VS.95).aspx&lt;/a&gt;) you can just add a comma and put it in afterwards: &lt;a title="http://msdn.microsoft.com/en-us/library/cc189009(VS.95).aspx" href="http://msdn.microsoft.com/en-us/library/cc189009(VS.95,loband).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc189009(VS.95,loband).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you switch to low bandwidth view by tweaking the URL, you&amp;#160; get a a “persist low bandwidth view” link at the top, which is nice. Clicking that link sets a cookie, so all MSDN you visit will be in low bandwidth view. That sounds great, but I find there are times where the low bandwidth is too low. Some pages (especially articles) are hard to read, and when learning a new object model the navigation tree is helpful. In that case, there’s a link at the top (where the “persist low bandwidth view” link used to be, before we clicked it) which unsets the cookie and returns us to the normal, high bandwidth view.&lt;/p&gt;  &lt;p&gt;That all works, and I’ve used it since I heard about the low bandwidth view a few months ago. Still, it gets old – especially editing the URL the loband bit every time I’ve removed it.&lt;/p&gt;  &lt;h3&gt;Enter The Bookmarklet&lt;/h3&gt;  &lt;p&gt;Bookmarklets are great – they’re short Javascript functions that you bookmark, so you can run the Javascript on any page by opening the bookmark. They’re kind of like tiny Firefox addons. You can &lt;a href="http://en.wikipedia.org/wiki/Bookmarklet"&gt;read more about bookmarklets, of course, on Wikipedia&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Well, after messing with that MSDN URL enough times, I figured it was time for a bookmarklet. So here it is: &lt;a class="bookmarklet" href="javascript:if(document.cookie.indexOf('LoBandEnabled=yes')&amp;lt;0){document.cookie='LoBandEnabled=yes;path=/;domain=.microsoft.com;%20expires=Wed,%2001-Aug-2040%2008:00:00%20GMT';}else{document.cookie='LoBandEnabled=no;path=/;domain=.microsoft.com;%20expires=Wed,%2001-Aug-2040%2008:00:00%20GMT';}window.location.reload();"&gt;MSDN Low Band&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It’s just a simple toggle – when you’re in the normal view, clicking the bookmarklet will switch you to Low Bandwidth view. Clicking it again will return you back to the normal view again. In Firefox / Opera / Safari, you can just drag that peachy colored button to your Links toolbar. In Internet Explorer, you’ll need to right click the link and select “Add To Favorites”, making sure to save to the Links favorite folder. I’ve tested it in IE, Firefox, and Safari.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://delicious.com/help/bookmarklets"&gt;Delicious.com Bookmarklet installation help page&lt;/a&gt; has some nice screenshots and more information on installing Bookmarklets. If you’re interested in writing your own bookmarklets, I recommend you use a web based Bookmarklet helper page to simplify the grunt work, &lt;a href="http://subsimple.com/bookmarklets/jsbuilder.htm"&gt;like this one&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;So How Does It Work?&lt;/h3&gt;  &lt;p&gt;It’s really simple. At first I messed with the URL, but then I figured out that it was simpler to just modify the cookie and reload the page. Here’s the code, formatted so it’s easier to read:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;javascript:
&lt;span class="kwrd"&gt;if&lt;/span&gt;(document.cookie.indexOf(&lt;span class="str"&gt;'LoBandEnabled=yes'&lt;/span&gt;)&amp;lt;0){
  document.cookie=&lt;span class="str"&gt;'LoBandEnabled=yes;path=/;domain=.microsoft.com;%20expires=Wed,%2001-Aug-2040%2008:00:00%20GMT'&lt;/span&gt;;
}
&lt;span class="kwrd"&gt;else&lt;/span&gt;{
  document.cookie=&lt;span class="str"&gt;'LoBandEnabled=no;path=/;domain=.microsoft.com;%20expires=Wed,%2001-Aug-2040%2008:00:00%20GMT'&lt;/span&gt;;
}
window.location.reload();&lt;/pre&gt;
&lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6579842" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/jongalloway?a=Ao7Gs0"&gt;&lt;img src="http://feeds.feedburner.com/~a/jongalloway?i=Ao7Gs0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=3WeMtK"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=3WeMtK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=cxZ5uk"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=cxZ5uk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=EWrDKK"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=EWrDKK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=7wwmJk"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=7wwmJk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=v2M8yK"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=v2M8yK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jongalloway/~4/378815832" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/jgalloway/archive/tags/Tips+_2F00_+Tricks/default.aspx">Tips / Tricks</category><category domain="http://weblogs.asp.net/jgalloway/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://weblogs.asp.net/jgalloway/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/jgalloway/archive/tags/General+Software+Development/default.aspx">General Software Development</category><feedburner:origLink>http://weblogs.asp.net/jgalloway/archive/2008/08/30/msdn-low-bandwidth-bookmarklet.aspx</feedburner:origLink></item><item><title>Subtext 2: OpenID Login Support</title><link>http://feeds.feedburner.com/~r/jongalloway/~3/370647361/subtext-2-openid-login-support.aspx</link><pubDate>Thu, 21 Aug 2008 05:41:26 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6545678</guid><dc:creator>Jon Galloway</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/jgalloway/rsscomments.aspx?PostID=6545678</wfw:commentRss><comments>http://weblogs.asp.net/jgalloway/archive/2008/08/20/subtext-2-openid-login-support.aspx#comments</comments><description>&lt;p&gt;The recent Subtext 2 release includes a feature I worked on: &lt;a href="http://openid.net/"&gt;OpenID&lt;/a&gt; login support. Let’s take a quick look at how you use it, then we’ll talk about the how the code works and why it’s a useful feature.&lt;/p&gt;  &lt;h3&gt;What’s OpenID?&lt;/h3&gt;  &lt;p&gt;I’m a big fan of digital identity, and could ramble on about OpenID for a while. But if I did that, this blog post would be published sometime after Windows 7 ships. Fortunately I pushed OpenID on some people who are a bit more prolific than I’ve been of late, so I’ll refer you to this post by &lt;a href="http://www.codinghorror.com/blog/archives/001121.html"&gt;Jeff Atwood (CodingHorror)&lt;/a&gt; and this webcast by &lt;a href="http://blog.wekeroad.com/mvc-storefront/mvcstore-part-16/"&gt;Rob Conery&lt;/a&gt;. Scott Hanselman wrote &lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode25OpenIDEdition.aspx"&gt;a great overview of OpenID&lt;/a&gt;, as well.&lt;/p&gt;  &lt;p&gt;The elevator pitch: Rather than being issued an account at every single website you login to, you issue them one. You establish an OpenID URL, which only you can login to, and then you give it as your account information to sites which support OpenID authentication. You’re in control of your account, you’ve got a central place to manage your password, etc.&lt;/p&gt;  &lt;p&gt;OpenID is a generic account that you can reuse on other websites.&lt;/p&gt;  &lt;h3&gt;Too Hard! Couldn’t I Just Fax Someone My Birth Certificate?&lt;/h3&gt;  &lt;p&gt;If you haven’t used OpenID, this is going to look complex. That’s because I’m showing you the hard case – it’s like learning to play Stairway To Heaven when you don’t have a guitar or amp. The first time through, we’re going to have to run down to the pawn shop to get you a Fender knockoff and a thrasher amp, but the next time you’re ready to rock you’ll be all set. So hang with me while we get setup, and at the end I’ll show you how it will work when you log in to your site tomorrow.&lt;/p&gt;  &lt;h3&gt;Step 1: Get an OpenID&lt;/h3&gt;  &lt;p&gt;There’s a good chance you’ve already got an OpenID, since many popular services like Flickr, Yahoo, and Blogger are OpenID providers, meaning that you can user your account with those services as an OpenID identity:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://idselector.com"&gt;&lt;img src="http://farm3.static.flickr.com/2071/2431586046_2757ac8ae8_o.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you don’t have an account with any of those services (or these on the &lt;a href="http://wiki.openid.net/OpenIDServers"&gt;OpenID public providers list&lt;/a&gt;), I recommend signing up with &lt;a href="http://www.myopenid.com"&gt;MyOpenID.com&lt;/a&gt; – they’ve got great support, and rich security features if you want to use them, such as InfoCard integration and phone verification.&lt;/p&gt;  &lt;h3&gt;Step 2: Tell Subtext What OpenID URL You’ll Be Using&lt;/h3&gt;  &lt;p&gt;The Security / Options tab has a new location where you can enter an OpenID URL. It’s important that you get this right – we’ll try to clean this up for you, but I recommend you type this as exactly as possible. In my case, my OpenID URL is &lt;a href="http://jongalloway.myopenid.com/"&gt;http://jongalloway.myopenid.com/&lt;/a&gt;, not jongalloway.myopenid.com. Even the trailing slash is important.&lt;/p&gt;  &lt;p&gt;Note that to in order to make this setting, I’ve logged in to Subtext using my standard Subtext username and password. That login doesn’t go away when I setup OpenID authentication, I’ve just enabled an additional security feature – I’ve got two ways to login to my blog now.&lt;/p&gt;  &lt;p&gt;&lt;a title="Subtext - Security Options (OpenID)" href="http://www.flickr.com/photos/36836555@N00/2769699061/"&gt;&lt;img alt="Subtext - Security Options (OpenID)" src="http://static.flickr.com/3137/2769699061_f5d3b6b485.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Step 3: Login Using OpenID&lt;/h3&gt;  &lt;p&gt;Now that Subtext knows my OpenID URL, I can use it to login to the site. The login dialog includes an OpenID sign-in prompt at the bottom, so I enter my OpenID URL in the prompt and click Login.&lt;/p&gt;  &lt;p&gt;&lt;a title="Subtext - OpenID Login" href="http://www.flickr.com/photos/36836555@N00/2769699083/"&gt;&lt;img alt="Subtext - OpenID Login" src="http://static.flickr.com/3210/2769699083_3ce5fefb50.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now here’s the part you may not be expecting if you haven’t used OpenID – I need to login at my OpenID provider. That’s not such a big deal, though, because myOpenID (and many other providers) have a “Stay Signed In” option option, which is appropriate if you’re logging in from a computer which is in a secure location (your home, a work computer you keep locked, etc.). The &lt;a href="https://pip.verisignlabs.com/seatbelt.do"&gt;Versisign Seatbelt Firefox Extension&lt;/a&gt; is a pretty handy way to sign in to your OpenID identity once for a browser session, too.&lt;/p&gt;  &lt;p&gt;&lt;a title="Subtext - myOpenID Login" href="http://www.flickr.com/photos/36836555@N00/2776962317/"&gt;&lt;img alt="Subtext - myOpenID Login" src="http://static.flickr.com/3101/2776962317_d2f317757b.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, the first time I log in to myOpenID from my Subtext blog, myOpenID is going to ask me if that’s cool. Again, a little unexpected if you haven’t used OpenID before, but this is a one time thing. We’re telling myOpenID that my Subtext blog is going&lt;/p&gt;  &lt;p&gt;&lt;a title="Subtext - myOpenID Verification" href="http://www.flickr.com/photos/36836555@N00/2770545726/"&gt;&lt;img alt="Subtext - myOpenID Verification" src="http://static.flickr.com/3002/2770545726_af5a856b9b.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, I type in my password and click the Sign Button, and my OpenID provider redirects me back to my Subtext instance (with an “authenticated” message), and Subtext logs me in:&lt;/p&gt;  &lt;p&gt;&lt;a title="Subtext - Admin" href="http://www.flickr.com/photos/36836555@N00/2776950523/"&gt;&lt;img alt="Subtext - Admin" src="http://static.flickr.com/3224/2776950523_9524517432.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Fine. Now Show Me Easy.&lt;/h3&gt;  &lt;p&gt;Thanks for hanging in there. Here’s how it looks tomorrow, providing you’ve checked that “Stay Signed In” checkbox. First, we browse to the login screen, enter our OpenID URL, and click Login:&lt;/p&gt;  &lt;p&gt;&lt;a title="Subtext - OpenID Login" href="http://www.flickr.com/photos/36836555@N00/2769699083/"&gt;&lt;img alt="Subtext - OpenID Login" src="http://static.flickr.com/3210/2769699083_3ce5fefb50.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, we’re automatically logged in and brought to our admin screen:&lt;/p&gt;  &lt;p&gt;&lt;a title="Subtext - Admin" href="http://www.flickr.com/photos/36836555@N00/2776950523/"&gt;&lt;img alt="Subtext - Admin" src="http://static.flickr.com/3224/2776950523_9524517432.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you hadn’t checked that Stay Signed On checkbox, you’d get one screen in the middle – the login page for your OpenID provider’s page.&lt;/p&gt;  &lt;h3&gt;How’s It Work?&lt;/h3&gt;  &lt;p&gt;That’s the subject of another post, but let me show you one quick screenshot which shows the HTTP traffic during that last login.&lt;/p&gt;  &lt;p&gt;&lt;a title="Subtext - OpenID trace (Fiddler)" href="http://www.flickr.com/photos/36836555@N00/2783454594/"&gt;&lt;img alt="Subtext - OpenID trace (Fiddler)" src="http://farm4.static.flickr.com/3123/2783454594_a7de586ae7_o.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That shows the general sequence of events:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;I requested the Login page (it’s running on my local machine – 127.0.0.1)&lt;/li&gt;    &lt;li&gt;The DotNetOpenID login control makes a request to the URL I provided, saying “Yo. My URL is 127.0.0.1:2732, can you authenticate the user and verify that I’m on their list of sites?”&lt;/li&gt;    &lt;li&gt;There’s a little negotiation between the two sites, after which myOpenID returns an “Okay” message via SSL.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Show Us Your Code&lt;/h3&gt;  &lt;p&gt;Sure. For this release, I just used the DotNetOpenID.OpenIdLogin control, which is as simple as dropping the control on the page and handling the LoggedIn event. &lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode25OpenIDEdition.aspx"&gt;Scott Hanselman wrote about this before when he set up OpenID on DasBlog&lt;/a&gt;. In the case of Subtext, here’s the code I added for that LoggedIn event:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnOpenIdLogin_LoggedIn(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, OpenIdEventArgs e)
 {
   e.Cancel = &lt;span class="kwrd"&gt;true&lt;/span&gt;; &lt;span class="rem"&gt;//required to prevent logging everyone in&lt;/span&gt;
   &lt;span class="kwrd"&gt;if&lt;/span&gt; (e.Response.Status == AuthenticationStatus.Authenticated &amp;amp;&amp;amp;
       SecurityHelper.Authenticate(e.ClaimedIdentifier, chkRememberMe.Checked))
    {
         ReturnToUrl(Config.CurrentBlog.AdminHomeVirtualUrl);
    }
} &lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;You can see it in context in the &lt;a href="https://subtext.svn.sourceforge.net/svnroot/subtext/trunk/SubtextSolution/Subtext.Web/login.aspx.cs"&gt;Subtext SVN browser&lt;/a&gt;. Now that I’ve worked with it, I’d like to ditch the OpenIdLogin control for a future release. It works just fine, but it generates HTML that I’m not very happy with (table based markup, not CSS friendly). In the future, I’d probably write my own control and just use the libraries which are included in DotNetOpenID – they’ve been great.&lt;/p&gt;

&lt;h3&gt;OpenID Passthrough&lt;/h3&gt;

&lt;p&gt;There’s another new OpenID feature in Subtext 2.0 – OpenID Passthrough. The idea there is that you can use your blog URL as your OpenID URL, and it just redirects over to your “real” OpenID provider. Let’s assume that my blog was deployed to &lt;a href="http://www.jongalloway.com"&gt;http://jongalloway.com&lt;/a&gt;; in that case I could make the following OpenID Passthrough settings on the Subtext / Configure screen, after which I could use &lt;a href="http://jongalloway.com"&gt;http://jongalloway.com&lt;/a&gt; as my OpenID URL.&lt;/p&gt;

&lt;p&gt;&lt;a title="Subtext - OpenID Passthrough" href="http://www.flickr.com/photos/36836555@N00/2782733283/"&gt;&lt;img alt="Subtext - OpenID Passthrough" src="http://static.flickr.com/3093/2782733283_2af1e69c08.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6545678" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/jongalloway?a=6Geuff"&gt;&lt;img src="http://feeds.feedburner.com/~a/jongalloway?i=6Geuff" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=Svc7HK"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=Svc7HK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=IzsEEk"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=IzsEEk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=oe5i8K"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=oe5i8K" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=t1Bxok"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=t1Bxok" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=umsIVK"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=umsIVK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jongalloway/~4/370647361" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/jgalloway/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/jgalloway/archive/tags/.NET+code/default.aspx">.NET code</category><category domain="http://weblogs.asp.net/jgalloway/archive/tags/Digital+Identity/default.aspx">Digital Identity</category><feedburner:origLink>http://weblogs.asp.net/jgalloway/archive/2008/08/20/subtext-2-openid-login-support.aspx</feedburner:origLink></item><item><title>Upgrading to Visual Studio 2008 / .NET 3.5 SP1</title><link>http://feeds.feedburner.com/~r/jongalloway/~3/365516590/upgrading-to-visual-studio-2008-net-3-5-sp1.aspx</link><pubDate>Fri, 15 Aug 2008 08:45:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6521731</guid><dc:creator>Jon Galloway</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://weblogs.asp.net/jgalloway/rsscomments.aspx?PostID=6521731</wfw:commentRss><comments>http://weblogs.asp.net/jgalloway/archive/2008/08/15/upgrading-to-visual-studio-2008-net-3-5-sp1.aspx#comments</comments><description>&lt;H3&gt;Have your Visual Studio Installation Media Handy&lt;/H3&gt;
&lt;P&gt;I was prompted for the original installation media both when uninstalling the SP1 Beta and when installing the SP1 RTM. The file it’s looking for is &lt;STRONG&gt;vs_setup.msi&lt;/STRONG&gt; in most cases, but they’re not all created equal. If you installed from a Visual Studio 2008 Professional DVD or image, you can’t just insert a Visual Studio 2008 Standard DVD. In my case, I installed of in ISO image, so I mounted the iso file (en_visual_studio_team_system_2008_team_suite_x86_x64wow_dvd_X14-26461.iso) as my F:\ drive and browsed to vs_setup.msi.&lt;/P&gt;
&lt;P&gt;&lt;A title="Visual Studio - Installation Media Prompt - 2" href="http://www.flickr.com/photos/36836555@N00/2760586614/" mce_href="http://www.flickr.com/photos/36836555@N00/2760586614/"&gt;&lt;IMG alt="Visual Studio - Installation Media Prompt - 2" src="http://static.flickr.com/3104/2760586614_fddced5c44.jpg" border=0 mce_src="http://static.flickr.com/3104/2760586614_fddced5c44.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;You don’t need it yet, but you don’t want to get half way through the upgrade and realize your install media is back at home, or that you deleted the ISO file and you have to wait for the 4GB download. Got the install media? Great, onward!&lt;/P&gt;
&lt;H3&gt;Use the Visual Studio 2008 Service Pack Preparation Tool&lt;/H3&gt;
&lt;P&gt;I think the biggest tip here is to use the &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A494B0E0-EB07-4FF1-A21C-A4663E456D9D" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A494B0E0-EB07-4FF1-A21C-A4663E456D9D"&gt;Visual Studio 2008 Service Pack Preparation Tool&lt;/A&gt;. The original help information SP1 Beta (since updated) had a long, involved un-installation process, so people who’d had to uninstall that before figured we’d have to go through that process again. I had to a month ago, and it didn’t go very smoothly for me – probably due to some internal, pre-release builds of Silverlight 2 I’d installed at the beginning of the year. I ended up having to uninstall everything developer related to fix a Silverlight Package Load Failure error.&lt;/P&gt;
&lt;P&gt;So – that’s all been simplified now, and in most cases it sounds like it’s working great. I ran it on two of my computers (which have been littered with alpha and beta stuff) and the Visual Studio 2008 SP1 install ran flawlessly. I’ve been listening on Twitter, and it’s been a smooth upgrade for most people (notable exceptions: Rick Strahl, Sam Gentile).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/heaths/archive/2008/08/11/vs-2008-sp1-beta-must-be-removed-prior-to-installing-the-release-of-vs-2008-sp1.aspx" mce_href="http://blogs.msdn.com/heaths/archive/2008/08/11/vs-2008-sp1-beta-must-be-removed-prior-to-installing-the-release-of-vs-2008-sp1.aspx"&gt;Heath Stewart's post on the Service Pack Preparation tool&lt;/A&gt; indicates that the SP1 install will block says the SP1 install if you've installed the SP1 beta at any point, so the main reason I'm calling the Service Pack Preparation Tool out here is to save you from going through an unnecessary manual install only to get the prompt indicating that you still need to run the Service Pack Preparation Tool.&lt;/P&gt;
&lt;P&gt;According to Heath:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;The tool will verify Visual Studio integrity and remove previous Visual Studio 2008 updates or pre-release software&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;Microsoft Visual Studio 2008 - KB945140 (Beta) &lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Microsoft Visual Studio 2008 - KB944899 &lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Microsoft Silverlight Tools Beta 1 &lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Microsoft Visual Studio 2008 - KB949325&lt;/EM&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So if you've never installed any of those betas you don't need to run the prep tool, however based on my experience installing Visual Studio over the years, I like the sound of "verifying Visual Studio integrity" before installing. I'd expect that the tool would run really quickly if you haven't installed the beta. &lt;/P&gt;
&lt;P&gt;So, I'd recommend that you grab the Service Pack Prep Tool and let ‘er rip!&lt;/P&gt;
&lt;P&gt;&lt;A title="Visual Studio Service Pack Preparation Tool" href="http://www.flickr.com/photos/36836555@N00/2759707161/" mce_href="http://www.flickr.com/photos/36836555@N00/2759707161/"&gt;&lt;IMG alt="Visual Studio Service Pack Preparation Tool" src="http://static.flickr.com/3022/2759707161_3d399a7286.jpg" border=0 mce_src="http://static.flickr.com/3022/2759707161_3d399a7286.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Allow some time for the Service Pack Prep Tool - it took 45 minutes on one machine, and others have reported that it ran for 8 hours or more. For those reasons, you might want to take some precautions to make sure you don't have a prompt holding up your install if you're going to be away from your computer while it's running. Here are a few tips there:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;As I mentioned before, you should expect to see a prompt for the installation media during the uninstall. If you can insert the media into the same drive you installed from in the first place (easy if you installed off a DVD drive, not so easy if you just attached an ISO file), you won't have to watch your computer for the media installation prompt.&lt;/LI&gt;
&lt;LI&gt;There's a check for process which will require a reboot when you're done. If you're going to be away from the computer while, I'd make sure to shut down your browsers and the Vista Sidebar (not sure why, maybe uses managed code).&lt;/LI&gt;&lt;/OL&gt;
&lt;H3&gt;Running the Visual Studio 2008 SP1 Installer&lt;/H3&gt;
&lt;P&gt;There are four installs listed on the Visual Studio 2008 Service Pack 1 (SP1) and .NET Framework 3.5 SP1 Downloads page:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E"&gt;Visual Studio 2008 SP1&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7"&gt;.NET Framework 3.5 SP1&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F3FBB04E-92C2-4701-B4BA-92E26E408569" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F3FBB04E-92C2-4701-B4BA-92E26E408569"&gt;Visual Studio 2008 Express Editions with SP1&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=9E40A5B6-DA41-43A2-A06D-3CEE196BFE3D" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=9E40A5B6-DA41-43A2-A06D-3CEE196BFE3D"&gt;Visual Studio Team System 2008 Team Foundation Server SP1&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E"&gt;Visual Studio 2008 SP1 install&lt;/A&gt; includes .NET 3.5 SP1, so that'll do it. Again, be ready for that installation media prompt and the incompatible processes check.&lt;/P&gt;
&lt;H3&gt;Reinstalling The Silverlight Tools&lt;/H3&gt;
&lt;P&gt;The Service Pack Prep Tool removes the Silverlight Tools (as it should) so you need to reinstall those when the SP install completes. They've just updated the Silverlight Tools installer (silverlight_chainer.exe) in-place, so you can grab it from the same location it's always been at: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=50A9EC01-267B-4521-B7D7-C0DBA8866434" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=50A9EC01-267B-4521-B7D7-C0DBA8866434"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=50A9EC01-267B-4521-B7D7-C0DBA8866434&lt;/A&gt;. Tim Heuer's got more information on &lt;A href="http://timheuer.com/blog/archive/2008/08/11/visual-studio-2008-sp1-and-silverlight.aspx" mce_href="http://timheuer.com/blog/archive/2008/08/11/visual-studio-2008-sp1-and-silverlight.aspx"&gt;Visual Studio 2008 SP1 and Silverlight Tools&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Great - So What Did I Just Install?&lt;/H3&gt;
&lt;P&gt;I think some of the most interesting features are ASP.NET Dynamic Data, Entity Framework, ADO.NET Data Services (REST based), XBAP and ClickOnce support for Firefox, the Client Profile (24MB lightweight .NET framework which is makes it easier to distribute .NET applications to users who don't have the .NET framework installed).&lt;/P&gt;
&lt;P&gt;There's a lot more, though. Rather than writing up "yet another SP1 feature list" I'll point you to a few which I've found helpful:&lt;/P&gt;
&lt;P&gt;First off, you didn't install ASP.NET MVC, although you got a building block (System.Web.Routing - similar to URL Rewriting, but it's bi-directional). Phil Haack explains it all in a post titled (oddly enough) &lt;A href="http://haacked.com/archive/2008/08/14/aspnetmvc-not-in-sp1.aspx" mce_href="http://haacked.com/archive/2008/08/14/aspnetmvc-not-in-sp1.aspx"&gt;ASP.NET MVC Is Not Part of ASP.NET 3.5 SP1&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;ScottGu's out of the office right now; fortunately Scott Hanselman stepped up with &lt;A href="http://www.hanselman.com/blog/HiddenGemsNotTheSameOld35SP1Post.aspx" mce_href="http://www.hanselman.com/blog/HiddenGemsNotTheSameOld35SP1Post.aspx"&gt;good overview of what's in SP1&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Here's what changed &lt;A href="http://blogs.msdn.com/ddperf/archive/2008/08/13/service-pack-1-for-vs-2008-and-net-fx-3-5-released.aspx" mce_href="http://blogs.msdn.com/ddperf/archive/2008/08/13/service-pack-1-for-vs-2008-and-net-fx-3-5-released.aspx"&gt;from a performance point of view&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Dr. Tim Sneath wrote a great post on the &lt;A href="http://blogs.msdn.com/tims/archive/2008/05/12/introducing-the-third-major-release-of-windows-presentation-foundation.aspx" mce_href="http://blogs.msdn.com/tims/archive/2008/05/12/introducing-the-third-major-release-of-windows-presentation-foundation.aspx"&gt;WPF enhancements in SP1&lt;/A&gt; from when the Beta was released.&lt;/P&gt;
&lt;P&gt;Here's the overview at MSDN: &lt;A href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx" mce_href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx"&gt;Visual Studio 2008 Service Pack 1 and .NET Framework 3.5 Service Pack 1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If you want the point by point list, take a look at the following KB articles:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/950263/" mce_href="http://support.microsoft.com/kb/950263/"&gt;950263&lt;/A&gt; List of changes and fixed issues in Visual Studio 2008 Service Pack 1 &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/951845/" mce_href="http://support.microsoft.com/kb/951845/"&gt;951845&lt;/A&gt; List of changes and fixed issues in Visual Studio 2008 Service Pack 1 for Team Editions &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/950264/" mce_href="http://support.microsoft.com/kb/950264/"&gt;950264&lt;/A&gt; List of changes and fixed issues in Visual Studio 2008 Service Pack 1 for Express Editions &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/951847/" mce_href="http://support.microsoft.com/kb/951847/"&gt;951847&lt;/A&gt; List of changes and fixed issues in Visual Studio 2008 Service Pack 1 for the .NET Framework 3.5 &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;And if you really want the low level details, &lt;A href="http://codebetter.com/blogs/patricksmacchia/archive/2008/08/13/net-3-5-sp1-changes-overview.aspx" mce_href="http://codebetter.com/blogs/patricksmacchia/archive/2008/08/13/net-3-5-sp1-changes-overview.aspx"&gt;Patrick Smacchia used NDepend to show exactly which classes changed in SP1&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6521731" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/jongalloway?a=I1os9q"&gt;&lt;img src="http://feeds.feedburner.com/~a/jongalloway?i=I1os9q" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=5OMN1K"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=5OMN1K" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=nzvUDk"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=nzvUDk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=jWYR1K"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=jWYR1K" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=uZWozk"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=uZWozk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=BQhNgK"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=BQhNgK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jongalloway/~4/365516590" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/jgalloway/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://weblogs.asp.net/jgalloway/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/jgalloway/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><feedburner:origLink>http://weblogs.asp.net/jgalloway/archive/2008/08/15/upgrading-to-visual-studio-2008-net-3-5-sp1.aspx</feedburner:origLink></item><item><title>ASP.NET Themes Don’t Like IE8’s X-UA-Compatible header; Neither Do I</title><link>http://feeds.feedburner.com/~r/jongalloway/~3/356094381/asp-net-themes-don-t-like-ie8-s-x-ua-compatible-header-neither-do-i.aspx</link><pubDate>Tue, 05 Aug 2008 07:02:25 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6484643</guid><dc:creator>Jon Galloway</dc:creator><slash:comments>9</slash:comments><wfw:commentRss>http://weblogs.asp.net/jgalloway/rsscomments.aspx?PostID=6484643</wfw:commentRss><comments>http://weblogs.asp.net/jgalloway/archive/2008/08/05/asp-net-themes-don-t-like-ie8-s-x-ua-compatible-header-neither-do-i.aspx#comments</comments><description>&lt;h3&gt;Summary&lt;/h3&gt;  &lt;p&gt;I ran into an interesting issue a few months ago with IE8 support on sites which use ASP.NET Themes. I’ll talk about the issue and how to fix it. More important, though, I’ll talk about how this small example fits into the whole IE8 / X-UA-Compatible thing, and why I think the way that turned out was bad for everyone.&lt;/p&gt;  &lt;h3&gt;The Problem: That First Meta Tag&lt;/h3&gt;  &lt;p&gt;If you’ve got a page that doesn’t render correctly in IE8’s new standards mode, you can add a meta tag to the page which requests that IE8 render it in IE7 mode. The problem I ran into would have been comical if the timing had been better:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IE8 only recognizes the X-UA-Compatible header if it’s the first META tag, appearing immediately after the &amp;lt;HEAD&amp;gt; tag &lt;/li&gt;    &lt;li&gt;The ASP.NET Theme system writes out the theme CSS reference immediately after the &amp;lt;HEAD&amp;gt; tag &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Of course, the reason I know that is that I needed to emulate IE7 on a page which was using ASP.NET themes. &lt;a href="http://blogs.msdn.com/tims/archive/2007/11/09/introducing-video-show-a-silverlight-reference-quality-sample.aspx"&gt;Video.Show was released in November 2007&lt;/a&gt; and was tested on Firefox 2, Safari 3, and Internet Explorer 7. We built a demo for the MIX 08 conference which ran on the a Pre-Beta 1 release of IE8. Back then, you had to opt-in to super-standards mode, so our IE7 capable markup did just fine. Here’s how that page looked:&lt;/p&gt;  &lt;p&gt;&lt;a title="IE8 After Header" href="http://www.flickr.com/photos/36836555@N00/2384196624/"&gt;&lt;img alt="IE8 After Header" src="http://static.flickr.com/2170/2384196624_a7f586d53c.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A little while after that, IE8 Beta 1 came out. One of the significant changes in Beta 1 was that IE8 would render your page in standards mode unless you specifically opted out. That was important to us because our client on that project wanted to be able to use the Video.Show demo we’d built for him, and it didn’t work well in IE8 Beta 1. Here’s how it looked:&lt;/p&gt;  &lt;p&gt;&lt;a title="IE8 Before Header" href="http://www.flickr.com/photos/36836555@N00/2383366067/"&gt;&lt;img alt="IE8 Before Header" src="http://static.flickr.com/2127/2383366067_7f68572db5.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The most obvious problem here is that the page background was messed up. The page structure is a bit complex due to the expanding banner at the top, and IE8 calculated that the page header extended to the bottom of the expanding&amp;#160; banner area. Also, the navigation links below the header were showing in a vertical line rather than floating left in a horizontal row. We had a very short turn around time for this project, and the IE8 display quirks weren’t well documented at that time, so tried just adding that fancy new X-UA-Compatible header:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;  &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Head1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="background-color: yellow"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;http-equiv&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;X-UA-Compatible&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;IE=7&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;http-equiv&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Content-Type&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/html; charset=utf-8&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;shortcut icon&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;favicon.ico&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Javascript/silverlight.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Video.Show&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;[...]&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;






.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;However, here's what was actually rendered:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Head1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;App_Themes/Default/DefaultStyle.css&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="background-color: yellow"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;http-equiv&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;X-UA-Compatible&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;IE=7&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;
 &lt;span class="attr"&gt;content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;IE=7&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;http-equiv&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Content-Type&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/html; charset=utf-8&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;shortcut icon&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;favicon.ico&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;css/lookDefault4.css&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Javascript/silverlight.js&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Video.Show&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;[...]&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;IE8 didn’t recognize the X-UA-Compatible header because the ASP.NET Themes engine always writes out the CSS link as the element in the head section.&lt;/p&gt;

&lt;h3&gt;How I Fixed It: A Custom Response Header in IIS7&lt;/h3&gt;

&lt;p&gt;Since I was setting this up in a virtual machine for demo purposes, I could easily make server changes. Here’s how I added that header in IIS7:&lt;/p&gt;

&lt;p&gt;&lt;a title="IE8 Adding Header" href="http://www.flickr.com/photos/36836555@N00/2384196444/"&gt;&lt;img alt="IE8 Adding Header" src="http://static.flickr.com/3127/2384196444_e8e0f6e5ae.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The IE blog has links to instructions on setting those headers various servers:&amp;#160; &lt;a href="http://technet2.microsoft.com/windowsserver2008/en/library/0a9b040d-8cd9-4f81-b876-8d23c572ac9d1033.mspx?mfr=true"&gt;IIS7.0&lt;/a&gt;, &lt;a href="http://technet2.microsoft.com/windowsserver2008/en/library/c304c4a4-3f17-4361-8ac6-548a9334549c1033.mspx?mfr=true"&gt;IIS6.0&lt;/a&gt;, &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_headers.html"&gt;Apache 2.2&lt;/a&gt;, &lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_headers.html"&gt;Apache 2.0&lt;/a&gt;, &lt;a href="http://httpd.apache.org/docs/1.3/mod/mod_headers.html"&gt;Apache 1.3&lt;/a&gt;. So, yeah, it works, but it’s not perfect. For one, it sets that header for all pages in the site. But, more concerning – what would I have done if I wasn’t able to make changes to the server configuration? If you’re running under IIS7, you can tweak headers with a change to your web.config file:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.webServer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;httpProtocol&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;customHeaders&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;clear&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;X-UA-Compatible&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;IE=EmulateIE7&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;customHeaders&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;httpProtocol&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.webServer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;

&lt;p&gt;Otherwise, you can code your way around it with an HTTP Module or something, but the point is that the solution’s so simple anymore. All that brought me back to the X-UA-Compatible conversation from several months ago.&lt;/p&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;h3&gt;X-UA-Compatible: One Developer’s History&lt;/h3&gt;

&lt;p&gt;One of the big changes in IE8 is a major shift in the method of selecting the rendering mode for a particular file. The DOCTYPE switch was born a decade ago, and made sense at the time – it used an opt-in model which assumed that a page with a valid DOCTYPE knew what it was doing, so browsers would render the page according to the latest browser standards. It seemed to make sense, but there was &lt;a href="http://www.alistapart.com/articles/beyonddoctype"&gt;trouble in DOCTYPE paradise&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Unfortunately, two key factors, working in concert, have made the &lt;code&gt;DOCTYPE&lt;/code&gt; unsustainable as a switch for standards mode:&lt;/p&gt;

  &lt;ol&gt;
    &lt;li&gt;Egged on by &lt;cite&gt;A List Apart&lt;/cite&gt; and The Web Standards Project, well-intentioned developers of authoring tools began inserting valid, complete &lt;code&gt;DOCTYPE&lt;/code&gt;s into the markup their tools generated; and &lt;/li&gt;

    &lt;li&gt;IE6’s rendering behavior was not updated for five years, leading many developers to assume its rendering was both accurate and unlikely to change. &lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;And so, the IE8 team came up with what most folks would agree is a good idea: opting-in to “standards mode” itself is meaningless unless you specify which standards you’re opting-in to. Targeting “web standards” is great as a platonic ideal, but in reality our pages are rendered by specific browser versions. It’s a lot more practical to opt in to a specific browser version’s rendering mode than a mythical and fluid “standards” mode.&lt;/p&gt;

&lt;p&gt;But, then, there was question: since IE8 will be entering a world already populated by billions of web pages written over the past dozen or more years, how should it handle them? Thus began a comedy of errors.&lt;/p&gt;

&lt;h3&gt;Proving That All Of Us Is Dumber Than Any Of Us&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;How it’s remembered:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;The IE team first announced that it would require pages to opt-in to IE8’s “super-duper standards mode”. The web development community loudly protested, and the IE team changed the default behavior so that pages would be rendered in “super-duper standards mode” by default. We all won!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here’s what actually happened:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The IE team had it right the first time. There are billions of webpages out there which won’t work well in IE8 without changes. &lt;/li&gt;

  &lt;li&gt;The IE team forgot that the web development community, by and large, hates them so much that… I don’t even know how to describe it. &lt;/li&gt;

  &lt;li&gt;The web development community reacted to IE team’s announcement the way they react to just about (except improved CSS support) that the IE team announces. They protested loudly. &lt;/li&gt;

  &lt;li&gt;The IE team decided to switch it up a bit and did what the web development community was telling them they wanted, and quickly to boot. &lt;/li&gt;

  &lt;li&gt;We all lost, but almost no one’s admitting to it. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I know this is all old news – &lt;a href="http://www.joelonsoftware.com/items/2008/03/17.html"&gt;Joel Spolsky wrote about this in March&lt;/a&gt;. His post was way too long, but the basic idea was that an idealistic solution isn’t all that useful because &lt;strong&gt;people don’t install browsers that can’t display their favorite sites&lt;/strong&gt;. A lot of people disagreed, using two different arguments:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“&lt;a href="http://blogs.vertigo.com/personal/bellis/Blog/archive/2008/03/17/joel-and-ie8.aspx"&gt;It’s not easy, but we have to try to do the right thing&lt;/a&gt;” – I agree with the intentions, but I’m cynical here. Users (and IT shops) are still stalling on the upgrade from IE6 to IE7, even though IE7 was a relatively minor upgrade.&lt;/li&gt;

  &lt;li&gt;“&lt;a href="http://hsivonen.iki.fi/rdf/"&gt;IE is irrelevant”&lt;/a&gt; – These responses were popular in the web standards community, but were themselves irrelevant. Okay, all your friends are running Firefox 3 on their Macbook Air’s, but the browser stats show that IE is still the dominant browser by a large margin. Unfortunate facts are still facts. If you’re hoping that real people will actually use your sites, you have to care about how IE8 works. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Fix Your Pages! Also, Let Them Eat Cake!&lt;/h3&gt;

&lt;p&gt;I’ve heard a lot of people say that this is a good time for us all to just get this over with and move on. After all, you’ve got several options:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Fix your pages&lt;/strong&gt;. While I’ve been working with IE8 Beta 1, this is a little easier said than done – there are &lt;a href="http://css-class.com/test/bugs/ie/ie-bugs.htm"&gt;several IE8 regression bugs&lt;/a&gt; which work fine in IE7 and below but fail in IE8. Sure, it’s beta 1, but my point is that this isn’t simply a case of “good HTML / CSS = perfect display in IE8” just yet. I’ve spent several days chasing down &lt;a href="http://www.howtocreate.co.uk/ie8.html"&gt;several of these bugs&lt;/a&gt;, for instance. But, sure, providing that IE8 is really good on CSS 2.1 support, this is the ideal solution. The underlying assumption is annoying, though – the idea is that IE8 is now the authoritative CSS reference. As of now, &lt;a href="http://www.quirksmode.org/css/contents.html"&gt;that’s not at all the case&lt;/a&gt;. In some cases my HTML and CSS are correct, work in FF2/3 and IE7 – so why should I have to “fix” them to render in IE8? Arguing that this pain is worthwhile because we’re “doing the right thing for the web” is only valid if we really are improving the HTML/CSS quality of the web, and I’m not convinced this does the trick. &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Use the X-UA-Compatible header in your pages&lt;/strong&gt;. This is listed as the standard response when people list cases where it’s not so easy to fix your HTML. The example above shows a case where a pretty new website built on a pretty modern web framework didn’t support that easily. Forget the case where the HTML is bundled in old CDROM’s or help files written out by installers – a web application built on ASP.NET 3.5 less than a year ago had problems with that approach. &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Write the headers some other way&lt;/strong&gt;. Sure, it was possible in my case, but depending on the site, the skill level of the developers working on the site and their access to the server configuration, this could add up to an unacceptable amount of time. Unacceptable as in “Sorry, we don’t support or recommend IE8 – please use IE7. Thanks!” &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Granted, I’m testing with IE8 Beta 1 and IE8 Beta 2 is due out soon, so this situation could improve the situation for actively developed websites. But the operation of the X-UA-Compatible header seems to be pretty much set, and I don’t think it works well with the majority of the billions of HTML documents we’ve already created.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6484643" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/jongalloway?a=fR7Dqi"&gt;&lt;img src="http://feeds.feedburner.com/~a/jongalloway?i=fR7Dqi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=BO5ojK"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=BO5ojK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=j78yEk"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=j78yEk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=Iiz15K"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=Iiz15K" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=upTYMk"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=upTYMk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=s665VK"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=s665VK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jongalloway/~4/356094381" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/jgalloway/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/jgalloway/archive/tags/Browsers+_2F00_+Web+Development/default.aspx">Browsers / Web Development</category><feedburner:origLink>http://weblogs.asp.net/jgalloway/archive/2008/08/05/asp-net-themes-don-t-like-ie8-s-x-ua-compatible-header-neither-do-i.aspx</feedburner:origLink></item><item><title>Upcoming Guests on HerdingCode: Rob Conery, Glenn Block, [your suggestion here]</title><link>http://feeds.feedburner.com/~r/jongalloway/~3/335767209/upcoming-guests-on-herdingcode-rob-conery-glenn-block-your-suggestion-here.aspx</link><pubDate>Tue, 15 Jul 2008 04:52:50 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6400907</guid><dc:creator>Jon Galloway</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/jgalloway/rsscomments.aspx?PostID=6400907</wfw:commentRss><comments>http://weblogs.asp.net/jgalloway/archive/2008/07/14/upcoming-guests-on-herdingcode-rob-conery-glenn-block-your-suggestion-here.aspx#comments</comments><description>&lt;p&gt;We’ve done eight episodes of &lt;a href="http://herdingcode.com/"&gt;Herding Code&lt;/a&gt; in round table format, but we’ve always anticipated bringing on some guests once we had our act together. We’re excited about having &lt;a href="http://blog.wekeroad.com/"&gt;Rob Conery&lt;/a&gt; as our first guest Tuesday night (7/15). We’ve also had a few folks tell us they’re willing to appear in future shows, including &lt;a href="http://blogs.msdn.com/gblock/"&gt;Glenn Block&lt;/a&gt; and Scott Bellware.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;We’d love to hear you questions&lt;/strong&gt; for these guest (especially Rob, since he’s confirmed for this week) as well as your recommendations for future guests. While you can always leave comments here or on the &lt;a href="http://herdingcode.com/"&gt;Herding Code site&lt;/a&gt;, the simplest way to give us feedback is by filling out &lt;a href="http://www.surveymonkey.com/s.aspx?sm=KI58PeSMrX_2bwaji_2fRbUhtA_3d_3d"&gt;this quick six question survey&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6400907" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/jongalloway?a=mSMdlx"&gt;&lt;img src="http://feeds.feedburner.com/~a/jongalloway?i=mSMdlx" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=XG8ncJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=XG8ncJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=pV29Rj"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=pV29Rj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=8ypvxJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=8ypvxJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=U36SEj"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=U36SEj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=1I7YEJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=1I7YEJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jongalloway/~4/335767209" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/jgalloway/archive/tags/Podcast/default.aspx">Podcast</category><feedburner:origLink>http://weblogs.asp.net/jgalloway/archive/2008/07/14/upcoming-guests-on-herdingcode-rob-conery-glenn-block-your-suggestion-here.aspx</feedburner:origLink></item><item><title>Speaking at the So Cal Code Camp on 6/29/08: Deep Dive Into Deep Zoom</title><link>http://feeds.feedburner.com/~r/jongalloway/~3/321136589/speaking-at-the-so-cal-code-camp-on-6-29-08-deep-dive-into-deep-zoom.aspx</link><pubDate>Fri, 27 Jun 2008 07:06:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6326147</guid><dc:creator>Jon Galloway</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/jgalloway/rsscomments.aspx?PostID=6326147</wfw:commentRss><comments>http://weblogs.asp.net/jgalloway/archive/2008/06/27/speaking-at-the-so-cal-code-camp-on-6-29-08-deep-dive-into-deep-zoom.aspx#comments</comments><description>&lt;P&gt;I'll be speaking at the &lt;A href="http://www.socalcodecamp.com/" mce_href="http://www.socalcodecamp.com/"&gt;SoCal Code Camp in San Diego&lt;/A&gt; on Jun 29, 2008. My session’s titled &lt;A href="http://www.socalcodecamp.com/session.aspx?sid=bf716292-27e1-4d01-8e9c-1ff0fed408f0" mce_href="http://www.socalcodecamp.com/session.aspx?sid=bf716292-27e1-4d01-8e9c-1ff0fed408f0"&gt;Deep Dive into Silverlight Deep Zoom&lt;/A&gt;. We'll look at the code that runs the &lt;A href="http://memorabilia.hardrock.com/" mce_href="http://memorabilia.hardrock.com/"&gt;Hard Rock Memorabilia&lt;/A&gt; site, then build a site on the fly that takes advantage of Deep Zoom, including all the new features in Silverlight 2 Beta 2.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;UPDATE&lt;/STRONG&gt;: You can grab the slides from my talk &lt;A class="" href="http://www.socalcodecamp.com/session.aspx?sid=bf716292-27e1-4d01-8e9c-1ff0fed408f0" mce_href="http://www.socalcodecamp.com/session.aspx?sid=bf716292-27e1-4d01-8e9c-1ff0fed408f0"&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6326147" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/jongalloway?a=IBRsJJ"&gt;&lt;img src="http://feeds.feedburner.com/~a/jongalloway?i=IBRsJJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=g7zhnI"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=g7zhnI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=jHGL8i"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=jHGL8i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=Pwt7MI"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=Pwt7MI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=9mwlqi"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=9mwlqi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=3G7jeI"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=3G7jeI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jongalloway/~4/321136589" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/jgalloway/archive/tags/Silverlight/default.aspx">Silverlight</category><feedburner:origLink>http://weblogs.asp.net/jgalloway/archive/2008/06/27/speaking-at-the-so-cal-code-camp-on-6-29-08-deep-dive-into-deep-zoom.aspx</feedburner:origLink></item><item><title>Our Round Table Podcast gets legit - Now we're the Herding Code Podcast (herdingcode.com)</title><link>http://feeds.feedburner.com/~r/jongalloway/~3/321073502/our-round-table-podcast-gets-legit-now-we-re-the-herding-code-podcast-herdingcode-com.aspx</link><pubDate>Fri, 27 Jun 2008 05:02:19 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6325815</guid><dc:creator>Jon Galloway</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/jgalloway/rsscomments.aspx?PostID=6325815</wfw:commentRss><comments>http://weblogs.asp.net/jgalloway/archive/2008/06/26/our-round-table-podcast-gets-legit-now-we-re-the-herding-code-podcast-herdingcode-com.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://herdingcode.com/"&gt;&lt;img style="margin: 0px 0px 75px 20px" src="http://herdingcode.com/herdingCode-165px.png" align="right" border="0" /&gt;&lt;/a&gt; We’ve been experimenting with a weekly technology round table podcast for the past five weeks; now we have our act together to the point where we’re ready to officially launch it. We’re at &lt;a href="http://herdingcode.com/"&gt;HerdingCode.com&lt;/a&gt;, and you can subscribe to our feed at &lt;a href="http://feeds.feedburner.com/HerdingCode"&gt;http://feeds.feedburner.com/HerdingCode&lt;/a&gt; on your iPod, Zune, or whatever crazy podcast client you choose.&lt;/p&gt;  &lt;p&gt;By we, I mean:&lt;/p&gt;  &lt;li&gt;&lt;a href="http://www.odetocode.com/"&gt;K. Scott Allen (a.k.a. OdeToCode)&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.lazycoder.com/"&gt;Scott Koon (a.k.a. Lazycoder)&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://weblogs.asp.net/kdente/"&gt;Kevin Dente&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://weblogs.asp.net/jgalloway/"&gt;Jon Galloway&lt;/a&gt;&lt;/li&gt;  &lt;p&gt;&lt;a href="http://herdingcode.com/"&gt;Head on over&lt;/a&gt; and give it a listen. On the current episode, we &lt;del datetime="2008-06-26T09:01:22+00:00"&gt;argue&lt;/del&gt; discuss whether Silverlight is just another flavor of ActiveX, or if it’s here to stay. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://herdingcode.com/wp-content/uploads/HerdingCode-0006-Silverlight-Fad-Or-Fab.mp3"&gt;Herding Code 6: Silverlight - Fad Or Fab?&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6325815" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/jongalloway?a=6EhEsb"&gt;&lt;img src="http://feeds.feedburner.com/~a/jongalloway?i=6EhEsb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=0JAWaI"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=0JAWaI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=yVzLGi"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=yVzLGi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=fInKVI"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=fInKVI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=MgDxJi"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=MgDxJi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/jongalloway?a=RyOpVI"&gt;&lt;img src="http://feeds.feedburner.com/~f/jongalloway?i=RyOpVI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/jongalloway/~4/321073502" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/jgalloway/archive/tags/Podcast/default.aspx">Podcast</category><enclosure url="http://herdingcode.com/wp-content/uploads/HerdingCode-0006-Silverlight-Fad-Or-Fab.mp3" length="17175951" type="audio/mpeg" /><media:content url="http://herdingcode.com/wp-content/uploads/HerdingCode-0006-Silverlight-Fad-Or-Fab.mp3" fileSize="17175951" type="audio/mpeg" /><itunes:explicit>no</itunes:explicit><itunes:subtitle> We’ve been experimenting with a weekly technology round table podcast for the past five weeks; now we have our act together to the point where we’re ready to officially launch it. We’re at HerdingCode.com, and you can subscribe to our feed at http://feed</itunes:subtitle><itunes:summary> We’ve been experimenting with a weekly technology round table podcast for the past five weeks; now we have our act together to the point where we’re ready to officially launch it. We’re at HerdingCode.com, and you can subscribe to our feed at http://feeds.feedburner.com/HerdingCode on your iPod, Zune, or whatever crazy podcast client you choose. By we, I mean: K. Scott Allen (a.k.a. OdeToCode) Scott Koon (a.k.a. Lazycoder) Kevin Dente Jon Galloway Head on over and give it a listen. On the current episode, we argue discuss whether Silverlight is just another flavor of ActiveX, or if it’s here to stay. Herding Code 6: Silverlight - Fad Or Fab?</itunes:summary><itunes:keywords>Podcast</itunes:keywords><feedburner:origLink>http://weblogs.asp.net/jgalloway/archive/2008/06/26/our-round-table-podcast-gets-legit-now-we-re-the-herding-code-podcast-herdingcode-com.aspx</feedburner:origLink></item><item><title>Jon's News Wrapup - June 25, 2008 Edition</title><link>http://feeds.feedburner.com/~r/jongalloway/~3/320733216/jon-s-news-wrapup-june-25-2008-edition.aspx</link><pubDate>Wed, 25 Jun 2008 22:08:31 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6320314</guid><dc:creator>Jon Galloway</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://weblogs.asp.net/jgalloway/rsscomments.aspx?PostID=6320314</wfw:commentRss><comments>http://weblogs.asp.net/jgalloway/archive/2008/06/25/jon-s-news-wrapup-june-25-2008-edition.aspx#comments</comments><description>&lt;h3&gt;         Development Tools&lt;/h3&gt;     &lt;p&gt;         Here's the grab bag of tools, development toolkits, etc.&lt;/p&gt; &lt;div&gt;     &lt;ul class="hfeed"&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://live.sysinternals.com/" class="taggedlink url fn" rel="bookmark" title="live.sysinternals.com"&gt;live.sysinternals.com&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="live.sysinternals.com" class="item photo" src="http://ma.gnolia.com/bookmarks/mefachushu/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 Run Sysinternals utilities directly off the internet without having to install them.                 You can browse to them at &lt;a href="http://live.sysinternals.com"&gt;http://live.sysinternals.com&lt;/a&gt;or open them as a network                 share using \\live.sysinternals.com\tools\. &lt;em&gt;I'd love to see more Microsoft utilities delivered this way - it's incredibly convenient.&lt;/em&gt;             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/sysinternals" rel="tag" title="Find jongalloway bookmarks tagged 'sysinternals'"&gt;sysinternals&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/windows" rel="tag" title="Find jongalloway bookmarks tagged 'windows'"&gt;                         windows&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/microsoft" rel="tag" title="Find jongalloway bookmarks tagged 'microsoft'"&gt;microsoft&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-05-30T01:18:45-07:00"&gt;                         May 30, 2008 at 01:18 AM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-05-30T01:18:45-07:00"&gt;                         May 30, 2008 at 01:18 AM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://blogs.msdn.com/sourceanalysis/archive/2008/05/23/announcing-the-release-of-microsoft-source-analysis.aspx" class="taggedlink url fn" rel="bookmark" title="Microsoft StyleCop: Source Analysis for C#"&gt;                     Microsoft StyleCop: Source Analysis for C#&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="Microsoft StyleCop: Source Analysis for C#" class="item photo" src="http://ma.gnolia.com/bookmarks/wetavu/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 We are very excited to announce the release of a new developer tool from Microsoft,                 Source Analysis for C#. This tool is known internally within Microsoft as StyleCop,                 and has been used for many years now to help teams enforce a common set of best                 practices for layout, readability, maintainability, and documentation of C# source                 code. Source Analysis is similar in many ways to Microsoft Code Analysis (specifically                 FxCop), but there are some important distinctions. FxCop performs its analysis on                 compiled binaries, while Source Analysis analyzes the source code directly. For                 this reason, Code Analysis focuses more on the design of the code, while Source                 Analysis focuses on layout, readability and documentation. Most of that information                 is stripped away during the compilation process, and thus cannot be analyzed by                 FxCop.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/microsoft" rel="tag" title="Find jongalloway bookmarks tagged 'microsoft'"&gt;                     microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/visualstudio" rel="tag" title="Find jongalloway bookmarks tagged 'visualstudio'"&gt;visualstudio&lt;/a&gt;&lt;/li&gt;&lt;li&gt;                             &lt;a href="http://ma.gnolia.com/people/jongalloway/tags/dotnet" rel="tag" title="Find jongalloway bookmarks tagged 'dotnet'"&gt;                                 dotnet&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-24T16:59:35-07:00"&gt;                         Jun 24, 2008 at 04:59 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-24T16:59:35-07:00"&gt;                         Jun 24, 2008 at 04:59 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://code.whytheluckystiff.net/shoes/" class="taggedlink url fn" rel="bookmark" title="Shoes, a Tiny Toolkit"&gt;Shoes, a Tiny Toolkit&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="Shoes, a Tiny Toolkit" class="item photo" src="http://ma.gnolia.com/bookmarks/scuhiluc/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 Shoes is a very informal graphics and windowing toolkit. It's for making regular                 old apps that run on Windows, Mac OS X and Linux. It's a blend of my favorite things                 from the Web, some Ruby style, and a sprinkling of cross-platform widgets. (More                 in the README.) Here's a trivial little button app: Shoes.app { button("Press Me")                 { alert("You pressed me") } }             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/ruby" rel="tag" title="Find jongalloway bookmarks tagged 'ruby'"&gt;                     ruby&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/shoes" rel="tag" title="Find jongalloway bookmarks tagged 'shoes'"&gt;shoes&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-24T16:46:07-07:00"&gt;                         Jun 24, 2008 at 04:46 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-24T16:46:07-07:00"&gt;                         Jun 24, 2008 at 04:46 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode29RubyAndShoesAndTheFirstRubyVirus.aspx" class="taggedlink url fn" rel="bookmark" title="Ruby / Shoes (Scott Hanselman)"&gt;                     Ruby / Shoes (Scott Hanselman)&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="Ruby / Shoes (Scott Hanselman)" class="item photo" src="http://ma.gnolia.com/bookmarks/scuscucab/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 Ruby is a very aesthetically (to me) pleasing and flexible language. Shoes is a                 GUI Toolkit for making Windowing Applications using Ruby. Shoes is legendary for                 a number of reasons, but above all, it has the greatest API documentation in the                 history of all software documentation.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/ruby" rel="tag" title="Find jongalloway bookmarks tagged 'ruby'"&gt;                     ruby&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/shoes" rel="tag" title="Find jongalloway bookmarks tagged 'shoes'"&gt;shoes&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-24T16:44:42-07:00"&gt;                         Jun 24, 2008 at 04:44 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-24T16:44:42-07:00"&gt;                         Jun 24, 2008 at 04:44 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://www.jetbrains.com/resharper/features/newfeatures.html" class="taggedlink url fn" rel="bookmark" title="ReSharper 4.0 Released with C# 3.0 and Visual Studio 2008 Support"&gt;                     ReSharper 4.0 Released with C# 3.0 and Visual Studio 2008 Support&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="ReSharper 4.0 Released with C# 3.0 and Visual Studio 2008 Support" class="item photo" src="http://ma.gnolia.com/bookmarks/totoscip/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 ReSharper 4.0 Full Edition and C# Edition provide comprehensive support for C# 3.0,                 including LINQ, implicitly typed locals and arrays, extension methods, automatic                 properties, lambda expressions, object &amp; collection initializers, anonymous types,                 expression trees, and partial methods.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/resharper" rel="tag" title="Find jongalloway bookmarks tagged 'resharper'"&gt;                     resharper&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-20T15:36:32-07:00"&gt;                         Jun 20, 2008 at 03:36 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-20T15:36:32-07:00"&gt;                         Jun 20, 2008 at 03:36 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=2720616b-968a-4f40-b217-e3d41916896b&amp;amp;displaylang=en" class="taggedlink url fn" rel="bookmark" title="Windows Vista DRT (Demo Readiness Toolkit)"&gt;                     Windows Vista DRT (Demo Readiness Toolkit)&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="Windows Vista DRT (Demo Readiness Toolkit)" class="item photo" src="http://ma.gnolia.com/bookmarks/whotove/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 Installing the Demo Readiness Toolkit will completely erase all data on your hard                 drive and create a Windows Vista Demonstration PC. Be sure to use a machine that                 can be re-formatted. Do you demonstrate Windows Vista features? Or maybe you demo                 3rd party applications, services, solutions and/or hardware with Windows Vista?                 With the Demo Readiness Toolkit, your workload just got a whole lot lighter! With                 a comprehensive demo script, sample content, and a preconfigured installation including                 user accounts and applications, you have everything you need to demo with Windows                 Vista with virtually no effort. No more searching for the right software, creating                 user accounts, tweaking settings, or writing product/feature messaging - now you                 can focus on your pitch, NOT on building a demo environment.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/microsoft" rel="tag" title="Find jongalloway bookmarks tagged 'microsoft'"&gt;                     microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/windows" rel="tag" title="Find jongalloway bookmarks tagged 'windows'"&gt;windows&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-05-30T01:28:45-07:00"&gt;                         May 30, 2008 at 01:28 AM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-05-30T01:28:45-07:00"&gt;                         May 30, 2008 at 01:28 AM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;     &lt;/ul&gt;     &lt;h3&gt;         Web / Cloud / Interwebs&lt;/h3&gt;     &lt;p&gt;         The big news here has to be the official release of Firefox 3. I'm not going to         dump a bunch of links here, see &lt;a href="http://lifehacker.com/tag/firefox-3/"&gt;Lifehacker's             Firefox 3 coverage&lt;/a&gt; for more in-depth info.&lt;/p&gt;     &lt;ul class="hfeed"&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://lifehacker.com/392160/top-10-firefox-3-features" class="taggedlink url fn" rel="bookmark" title="Top 10 Firefox 3 Features (Lifehacker)"&gt;Top 10 Firefox 3 Features                     (Lifehacker)&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="Top 10 Firefox 3 Features (Lifehacker)" class="item photo" src="http://ma.gnolia.com/bookmarks/haqowochi/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 &lt;ul&gt;                     &lt;li&gt;Souped-up Add-ons manager...&lt;/li&gt;&lt;li&gt;More intuitive interface overall... &lt;/li&gt;                     &lt;li&gt;Stronger phishing and malware protection... &lt;/li&gt;                     &lt;li&gt;Improved download manager... &lt;/li&gt;                     &lt;li&gt;Native looks for every system... &lt;/li&gt;                     &lt;li&gt;Streamlined "Remember password" handling... &lt;/li&gt;                     &lt;li&gt;Smart bookmarks... &lt;/li&gt;                     &lt;li&gt;Places Organizer replaces the Bookmark Manager... &lt;/li&gt;                     &lt;li&gt;Smart Location Bar learns how you browse... &lt;/li&gt;                     &lt;li&gt;Insanely improved performance&lt;/li&gt;                 &lt;/ul&gt;             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/firefox%203" rel="tag" title="Find jongalloway bookmarks tagged 'firefox 3'"&gt;firefox 3&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-20T17:30:55-07:00"&gt;                         Jun 20, 2008 at 05:30 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-20T17:30:55-07:00"&gt;                         Jun 20, 2008 at 05:30 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://browserplus.yahoo.com/" class="taggedlink url fn" rel="bookmark" title="BrowserPlus™"&gt;BrowserPlus™&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="BrowserPlus™" class="item photo" src="http://ma.gnolia.com/bookmarks/tastacu/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 Yahoo BrowserPlus&amp;trade; is a technology for web browsers that allows developers                 to create rich web applications with desktop capabilities. The most unique attribute                 of BrowserPlus is its ability to update and add new services on the fly without                 a browser restart or even reloading the page! As a user, this means no more installers                 to run or losing your place on the web. For developers, you can check for and activate                 new services with a single function call, pending user approval - we handle the                 complexity of software distribution and updates for you. (Runs Ruby on the client,                 probably a much better fit than the server).             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/ruby" rel="tag" title="Find jongalloway bookmarks tagged 'ruby'"&gt;                     ruby&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/yahoo" rel="tag" title="Find jongalloway bookmarks tagged 'yahoo'"&gt;yahoo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/browserplus" rel="tag" title="Find jongalloway bookmarks tagged 'browserplus'"&gt;browserplus&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-24T16:49:12-07:00"&gt;                         Jun 24, 2008 at 04:49 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-24T16:49:12-07:00"&gt;                         Jun 24, 2008 at 04:49 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://blogs.zdnet.com/microsoft/?p=1438" class="taggedlink url fn" rel="bookmark" title="Comparison of Microsoft and Applesync services"&gt;Comparison of Microsoft and                     Applesync services&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="Comparison of Microsoft and Applesync services" class="item photo" src="http://ma.gnolia.com/bookmarks/gerilis/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 Apple’s introduction of the successor to .Mac — a k a, MobileMe — raises the question                 as to what’s taking Microsoft so long to roll out Live Mesh. There aren’t a whole                 lot of details yet available on MobileMe, other than that it will allow cloud-based                 synchronization of data and devices. (And will make use of Microsoft’s ActiveSync                 technology, which Apple licensed from Microsoft in order to bring push e-mail to                 the iPhone, creating its “Exchange for the rest of us.”) From initial reports, MobileMe                 sounds like a combination of a Windows Live (the various Webified versions of the                 .Mac point products), Live Mesh (the Mobile Me sync service) and SkyDrive (the Mobile                 Me cloud-based storage). It is slated to be available to customers in July for a                 (pricey) $99, which includes 20 GB of storage.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/microsoft" rel="tag" title="Find jongalloway bookmarks tagged 'microsoft'"&gt;                     microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/apple" rel="tag" title="Find jongalloway bookmarks tagged 'apple'"&gt;apple&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-20T16:37:11-07:00"&gt;                         Jun 20, 2008 at 04:37 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-20T16:37:11-07:00"&gt;                         Jun 20, 2008 at 04:37 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://goosh.org/" class="taggedlink url fn" rel="bookmark" title="goosh.org - the unofficial google shell."&gt;                     goosh.org - the unofficial google shell.&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="goosh.org - the unofficial google shell." class="item photo" src="http://ma.gnolia.com/bookmarks/lewurathiy/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 goosh is a google-interface that behaves similar to a unix-shell.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/google" rel="tag" title="Find jongalloway bookmarks tagged 'google'"&gt;                     google&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/goosh" rel="tag" title="Find jongalloway bookmarks tagged 'goosh'"&gt;goosh&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-08T16:15:05-07:00"&gt;                         Jun 08, 2008 at 04:15 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-08T16:15:05-07:00"&gt;                         Jun 08, 2008 at 04:15 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;     &lt;/ul&gt;     &lt;h3&gt;         .NET Community&lt;/h3&gt;     &lt;p&gt;         The &lt;a href="http://altnetpedia.com/Default.aspx?Page=OverviewWhatIsIt"&gt;ALT.NET community             coalesced over a common disatisfaction with the direction the Entity Framework group             was heading&lt;/a&gt;, so it's no real surprise to see a public statement as the Entity         Framework gets set to ship without having substantively addressed any of their core         criticisms. I don't have production experience with Entity Framework or pre-existing         comptetitors like NHibernate, so I don't really feel qualified to much of an opinion         here, other than this: deferring community engagement on core issues as a "Version         2 feature" is generally a bad development model (c.f. Internet Explorer), and that         seems to have been part of the problem here. On the other hand, the ALT.NET community,          as a whole, is absolutely awful at communicating effectively. While this "No Confidence Vote"          letter could improve with a quick proofread by the Unibomber, it's probably the most         coherent problem statement they've put forth. Like I said, though, my uneducated opinion here         doesn't matter much. I've pulled some links in which cover some of the opposing         viewpoints.     &lt;/p&gt;     &lt;ul class="hfeed"&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/" class="taggedlink url fn" rel="bookmark" title="ADO .NET Entity Framework Vote of No Confidence"&gt;                     ADO .NET Entity Framework Vote of No Confidence&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="ADO .NET Entity Framework Vote of No Confidence" class="item photo" src="http://ma.gnolia.com/bookmarks/xuqixuwez/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 The signatories of this letter are unanimous in expressing concern for the welfare                 of software projects undertaken in the Microsoft customer community that will make                 use of the forthcoming ADO .NET Entity Framework...                 &lt;ul&gt;                     &lt;li&gt;Inordinate focus the data aspect of entities leads to degraded entity architectures                     &lt;/li&gt;                     &lt;li&gt;Excess code needed to deal with lack of lazy loading &lt;/li&gt;                     &lt;li&gt;Shared, canonical model contradicts software best practices &lt;/li&gt;                     &lt;li&gt;Lack of persistence ignorance causes business logic to be harder to read, write,                         and modify, causing development and maintenance costs to increase at an exaggerated                         rate &lt;/li&gt;                     &lt;li&gt;Excessive merge conflicts with source control in team environments&lt;/li&gt;                 &lt;/ul&gt;             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/microsoft" rel="tag" title="Find jongalloway bookmarks tagged 'microsoft'"&gt;                     microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/entity%20framework" rel="tag" title="Find jongalloway bookmarks tagged 'entity framework'"&gt;entity framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;                             &lt;a href="http://ma.gnolia.com/people/jongalloway/tags/alt.net" rel="tag" title="Find jongalloway bookmarks tagged 'alt.net'"&gt;                                 alt.net&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-24T16:37:13-07:00"&gt;                         Jun 24, 2008 at 04:37 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-24T16:37:13-07:00"&gt;                         Jun 24, 2008 at 04:37 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://blogs.zdnet.com/microsoft/?p=1457" class="taggedlink url fn" rel="bookmark" title="Testers give Microsoft’s Entity Framework a no-confidence vote | (Mary Jo Foley)"&gt;                     Testers give Microsoft’s Entity Framework a no-confidence vote | (Mary Jo Foley)&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="Testers give Microsoft’s Entity Framework a no-confidence vote | (Mary Jo Foley)" class="item photo" src="http://ma.gnolia.com/bookmarks/vruqerith/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 Another Entity Framework tester, who requested anonymity, noted that the no confidence                 vote shouldn’t be interpreted as across-the-board dissatisfaction among .Net developers                 with Microsoft’s course. “The best thing that happened in response to this latest                 action is that the Entity Framework team responded to it immediately,” the tester                 said.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/microsoft" rel="tag" title="Find jongalloway bookmarks tagged 'microsoft'"&gt;                     microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/alt.net" rel="tag" title="Find jongalloway bookmarks tagged 'alt.net'"&gt;alt.net&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/entity%20framework" rel="tag" title="Find jongalloway bookmarks tagged 'entity framework'"&gt;entity framework&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-24T16:29:05-07:00"&gt;                         Jun 24, 2008 at 04:29 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-24T16:29:05-07:00"&gt;                         Jun 24, 2008 at 04:29 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://blogs.msdn.com/timmall/archive/2008/06/24/vote-of-no-confidence.aspx" class="taggedlink url fn" rel="bookmark" title="Tim Mallalieu's response to the Vote of No Confidence"&gt;                     Tim Mallalieu's response to the Vote of No Confidence&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="Tim Mallalieu's response to the Vote of No Confidence" class="item photo" src="http://ma.gnolia.com/bookmarks/lojamor/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 The unfortunate reality is that these are scenarios that we care deeply about but                 do not fully support in V1.0. I can go into some more detail here. One point to                 note is that the choice on these features were heavily considered but we had the                 contention between trying to add more features vs. trying to stay true to our initial                 goal which was to lay the core foundation for a multiple-release strategy for building                 out a broader data platform offering. Today, coincidentally, marked the start of                 our work on the next version of the product and we are determined to address this                 particular developer community in earnest while still furthering the investment                 in the overall data platform.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/microsoft" rel="tag" title="Find jongalloway bookmarks tagged 'microsoft'"&gt;                     microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/entity%20framework" rel="tag" title="Find jongalloway bookmarks tagged 'entity framework'"&gt;entity framework&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-24T16:42:16-07:00"&gt;                         Jun 24, 2008 at 04:42 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-24T16:42:16-07:00"&gt;                         Jun 24, 2008 at 04:42 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://blogs.vertigo.com/personal/timlee/Blog/Lists/Posts/Post.aspx?ID=12" class="taggedlink url fn" rel="bookmark" title="Thoughts on the Entity Framework Vote of No Confidence - Blog"&gt;                     Thoughts on the Entity Framework Vote of No Confidence - Blog&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="Thoughts on the Entity Framework Vote of No Confidence - Blog" class="item photo" src="http://ma.gnolia.com/bookmarks/provuscavox/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 I'm far from an expert on Microsoft's Entity Framework (EF), but I have dabbled                 a bit with betas 2 and 3. Recently, Brian Ellis, a colleague of mine, summarized                 the points made in an open letter claiming a "vote of no confidence" in the Entity                 Framework. I'm no ORM guru or EF junkie, but I know enough about EF to see that                 it has both potential and limitations. I'd like to share my thoughts on the letter.                 To be fair, I've never used NHibernate (the Holy Grail), and work primarily with                 Microsoft technology. That doesn't make me an EF evangelist. I'm still quite skeptical,                 but interested in understanding the value of the technology.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/microsoft" rel="tag" title="Find jongalloway bookmarks tagged 'microsoft'"&gt;                     microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/entity%20framework" rel="tag" title="Find jongalloway bookmarks tagged 'entity framework'"&gt;entity framework&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-24T16:40:14-07:00"&gt;                         Jun 24, 2008 at 04:40 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-24T16:40:14-07:00"&gt;                         Jun 24, 2008 at 04:40 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://msmvps.com/blogs/kathleen/archive/2008/06/25/i-m-not-taking-on-the-alt-net-world.aspx" class="taggedlink url fn" rel="bookmark" title="I’m not taking on the Alt.NET world"&gt;                     I’m not taking on the Alt.NET world&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="I’m not taking on the Alt.NET world" class="item photo" src="http://ma.gnolia.com/bookmarks/crituni/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 Cohesion and maturity do not define the best approach for the vast numbers of programmers                 that make up this industry. That’s why the good thing is that Microsoft did not                 blindly follow the pattern that worked for the relatively small Alt.NET community                 when developing Entity Framework. Entity Framework is a far broader initiative and                 EF must work in scenarios where the other pieces of Alt.NET style development are                 not in place (BDD, behavior based objects, test first development, etc). If the                 Alt.NET ideas are the whole answer, why isn’t everyone using that approach? If it’s                 because everyone hasn’t personally been indoctrinated by working for months on an                 Alt.NET project, as I understood Scott Bellware to be implying about me in a recent                 comment on my blog, then Entity Framework cannot succeed regardless of the perfection                 of the tool. If you have to go be personally instructed, you can no more be personally                 instructed in EF than in NHibernate. Entity Framework should not block any technique,                 including agile, additional infrastructure, code generation, rules engines, workflow,                 SOA, dynamic user interfaces, as the top of my head list. But neither should it                 be built in the vision of one existing – and therefore outdated – approach to software                 development. The change in terminology from TDD to BDD illustrates how fast thinking                 within the Alt.NET community changes and Entity Framework cannot chase these changes                 must but blaze its own trail based on the best thinking in every community.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/microsoft" rel="tag" title="Find jongalloway bookmarks tagged 'microsoft'"&gt;                     microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/alt.net" rel="tag" title="Find jongalloway bookmarks tagged 'alt.net'"&gt;alt.net&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/entity%20framework" rel="tag" title="Find jongalloway bookmarks tagged 'entity framework'"&gt;entity framework&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-25T14:39:41-07:00"&gt;                         Jun 25, 2008 at 02:39 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-25T14:39:41-07:00"&gt;                         Jun 25, 2008 at 02:39 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://www.istartedsomething.com/taskforce/" class="taggedlink url fn" rel="bookmark" title="Windows UX Taskforce"&gt;Windows UX Taskforce&lt;/a&gt;             &lt;/h2&gt;             &lt;img alt="Windows UX Taskforce" class="item photo" src="http://ma.gnolia.com/bookmarks/pipena/thumbnail" width="100" /&gt;             &lt;div class="entry-content description"&gt;                 Hey, something interesting that's got nothing to do with Entity Framework! Long                 Zheng started something, again. The Windows UX Taskforce is a community driven site                 where users can submit and vote on UI inconsistencies and problems in Windows Vista.                 Apparently the Windows Experience team team is treating these as bug reports.             &lt;/div&gt;             &lt;ul class="tags"&gt;                 &lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/microsoft" rel="tag" title="Find jongalloway bookmarks tagged 'microsoft'"&gt;                     microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/windows" rel="tag" title="Find jongalloway bookmarks tagged 'windows'"&gt;windows&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ma.gnolia.com/people/jongalloway/tags/vista" rel="tag" title="Find jongalloway bookmarks tagged 'vista'"&gt;                             vista&lt;/a&gt;&lt;/li&gt;             &lt;/ul&gt;             &lt;ul class="more"&gt;                 &lt;li&gt;                     &lt;address class="author reviewer vcard"&gt;                         &lt;img alt="1_32" class="photo" src="http://ma.gnolia.com/avatars/1_32.gif" /&gt;                         &lt;a href="http://ma.gnolia.com/people/jongalloway" class="url fn" title="Visit jongalloway on Ma.gnolia"&gt;                             jongalloway&lt;/a&gt;&lt;/address&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="published dtreviewed" title="2008-06-20T17:05:24-07:00"&gt;                         Jun 20, 2008 at 05:05 PM&lt;/abbr&gt;                 &lt;/li&gt;                 &lt;li&gt;                     &lt;abbr class="updated" title="2008-06-20T17:05:24-07:00"&gt;                         Jun 20, 2008 at 05:05 PM&lt;/abbr&gt;                 &lt;/li&gt;             &lt;/ul&gt;         &lt;/li&gt;     &lt;/ul&gt;     &lt;h3&gt;         Future MS Tech&lt;/h3&gt;     &lt;p&gt;         There were some announcements at TechEd 2008, most of them pretty much expected. It seems like the bigger announcements this year will be at         &lt;a href="http://microsoftpdc.com/"&gt;PDC08&lt;/a&gt;. One surprise was Velocity, a distributed caching solution which is conceptually similar to memcached.         Little bits of news on Windows 7 are trickling in, although the featureset of this Windows release is being kept pretty quiet.         &lt;/p&gt;     &lt;ul class="hfeed"&gt;         &lt;li class="xfolkentry hentry hreview"&gt;&lt;span class="type" style="display: none"&gt;url&lt;/span&gt;             &lt;h2 class="entry-title item"&gt;                 &lt;a href="http://weblogs.asp.net/jgalloway/archive/2008/06/03/teched-2008-keynote-summary.aspx" class="taggedlink url fn" rel="bookmark" title="TechEd 2008 Keynote Summary"&gt;TechEd           