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

<channel>
	<title>Pop Art Blog &#187; microsoft</title>
	<atom:link href="http://blogs.popart.com/tags/microsoft/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.popart.com</link>
	<description>Flashes of Pop, Wit and Reason</description>
	<lastBuildDate>Mon, 26 Jul 2010 21:16:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Chrome Frame for Internet&#160;Explorer</title>
		<link>http://blogs.popart.com/2009/09/google-chrome-frame-for-internet-explorer/</link>
		<comments>http://blogs.popart.com/2009/09/google-chrome-frame-for-internet-explorer/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 16:42:22 +0000</pubDate>
		<dc:creator>Scott Vandehey</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://blogs.popart.com/?p=828</guid>
		<description><![CDATA[Long story short, Google released a plugin for IE 6, 7 and 8 that will run Google Chrome (which uses webkit) inside a frame in the IE browser. Now IE6 can be standards-compliant, and all versions of IE get blazing fast javascript and HTML 5 support. Sounds great, but there are some problems, as lifehacker [...]]]></description>
			<content:encoded><![CDATA[<p>Long story short, Google released a plugin for IE 6, 7 and 8 that will run Google Chrome (which uses webkit) inside a frame in the IE browser. Now IE6 can be standards-compliant, and all versions of IE get blazing fast javascript and HTML 5 support. Sounds great, but there are some problems, as <a href="http://lifehacker.com/5365253/google-chrome-frame-turns-internet-explorer-into-a-frankenchrome-browser">lifehacker</a> points out:</p>
<blockquote><p>“The (most) obvious question: Why would I install this plug-in rather than switch browsers to Chrome? The folks at Google point to IT lockdown that won&#8217;t allow users to install a new browser; Ars wonders whether such restrictive IT departments would be any more likely to approve this plug-in. If nothing else, it&#8217;s a pretty bold move on the part of Google.”</p></blockquote>
<p>If you’re interested, <a href="http://jimray.tumblr.com/post/194793633/more-technical-details-about-google-chrome-frame">Jim Ray</a> dug into the details of how it works. Personally, I don&#8217;t think this will solve anyone&#8217;s IE6 problems, but it&#8217;s a fascinating development, and worth keeping an eye on.</p>
<blockquote><p>“The irony here, as I see it, is that an old, insecure feature Microsoft built to try to beat Netscape is now being used by Microsoft’s biggest current rival to patch IE.”</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blogs.popart.com/2009/09/google-chrome-frame-for-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE8 Compatibility Mode and IE7 are Not the Same&#160;Thing</title>
		<link>http://blogs.popart.com/2009/09/ie8-compatibility-mode-and-ie7-are-not-the-same-thing/</link>
		<comments>http://blogs.popart.com/2009/09/ie8-compatibility-mode-and-ie7-are-not-the-same-thing/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 22:32:35 +0000</pubDate>
		<dc:creator>Scott Vandehey</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[compatibilitymode]]></category>
		<category><![CDATA[expression]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[qa]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blogs.popart.com/?p=754</guid>
		<description><![CDATA[Just so we&#8217;re clear, testing your website in an actual copy of IE7, and testing in IE8&#8217;s Compatibility Mode are not the same thing. Compatibility Mode does an acceptable job of imitating IE7, and for the average user who&#8217;s just trying to fix a site that looks broken under IE8, it&#8217;s good enough. However, there [...]]]></description>
			<content:encoded><![CDATA[<p>Just so we&#8217;re clear, testing your website in an actual copy of IE7, and testing in IE8&#8217;s Compatibility Mode are not the same thing. Compatibility Mode does an acceptable job of imitating IE7, and for the average user who&#8217;s just trying to fix a site that looks broken under IE8, it&#8217;s good enough. However, there are lots of small differences, and if you&#8217;re only testing your client sites with Compatibility Mode, it could come back to bite you.</p>
<p>On the IE Blog, Tony Ross published a <a href="http://blogs.msdn.com/ie/archive/2009/03/12/site-compatibility-and-ie8.aspx">list of mostly technical differences</a> between the two. Perhaps more useful for web developers is this <a href="http://www.evotech.net/blog/2009/03/ie8-css-support/">article by Estelle Weyl</a> outlining some of the presentation differences between the two, such as border handling and box model differences.</p>
<p>Why does this matter? Because I&#8217;ve heard some otherwise intelligent web developers (including <a href="http://blogs.msdn.com/xweb/archive/2009/03/18/Microsoft-Expression-Web-SuperPreview-for-Windows-Internet-Explorer.aspx">Microsoft&#8217;s Expression Web team</a>, which uses IE8&#8217;s Compatibility Mode for IE7 testing) claim that testing will be much easier now, since you can test everything in one place.</p>
<p>To be sure, tools like Expression Web or the old <a href="http://www.positioniseverything.net/articles/multiIE.html">Stand-Alone IE</a> installers are helpful, but don&#8217;t fool yourself into thinking that they are an accurate representation of a &#8220;clean&#8221; IE6 or IE7 installation. To test against those, you&#8217;ll still need to resort to more thorough measures like keeping separate machines around, or using the <a href="http://www.microsoft.com/Downloads/details.aspx?FamilyID=21eabb90-958f-4b64-b5f1-73d0a413c8ef&#038;displaylang=en">free Virtual PC images for IE6, IE7, and IE8</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.popart.com/2009/09/ie8-compatibility-mode-and-ie7-are-not-the-same-thing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Intelligent Defaults Save&#160;Time</title>
		<link>http://blogs.popart.com/2009/08/intelligent-defaults-save-time/</link>
		<comments>http://blogs.popart.com/2009/08/intelligent-defaults-save-time/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 20:41:42 +0000</pubDate>
		<dc:creator>Scott Vandehey</dc:creator>
				<category><![CDATA[Creative]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[coffee]]></category>
		<category><![CDATA[defaults]]></category>
		<category><![CDATA[intelligentdefaults]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macintosh]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[tortoisesvn]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[xbox]]></category>

		<guid isPermaLink="false">http://blogs.popart.com/?p=656</guid>
		<description><![CDATA[Have you ever been a regular at a coffee shop? The barista knows you by name, and every morning when you come by, she&#8217;s already got your Triple Non-Fat Sugar-Free Vanilla Latte waiting for you. That&#8217;s an intelligent default. She doesn&#8217;t know for sure that&#8217;s what you want, or even that you&#8217;ll come in today, [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever been a regular at a coffee shop? The barista knows you by name, and every morning when you come by, she&#8217;s already got your Triple Non-Fat Sugar-Free Vanilla Latte waiting for you. That&#8217;s an intelligent default. She doesn&#8217;t know for sure that&#8217;s what you want, or even that you&#8217;ll come in today, but you&#8217;ve ordered it enough times before that she&#8217;s confident making it.</p>
<p>Well-written software can have intelligent defaults, too, and you can give your users that same feeling of anticipating their needs. Here are a few examples of programs that found a clever way to save their users&#8217; time with common, repetitive tasks.</p>
<h3>Leopard&#8217;s Smart File Rename&nbsp;Feature</h3>
<p>Traditionally, to rename a file, you click once, and then again in the filename, and then the entire thing is highlighted, including the extension. If you then start typing, the extension is lost, so every time you have to re-highlight just the name portion.</p>
<p>But in Leopard, Apple changed the function to automatically highlight everything <em>but</em> the extension. They recognized that most of the time, you&#8217;re only changing the filename and not the extension. This is a tiny, tiny change, but it saves you a highlight action every time you rename a file.</p>
<h3>TortoiseSVN&#8217;s Auto-Expanding Collapsed&nbsp;Directories</h3>
<p>TortoiseSVN includes a browser to navigate the SVN tree to find the directory you want to check out. Since loading all the directories takes time, when you first open the browser, it just shows you the part of the filetree that you&#8217;re in. To access the full tree, you just collapse the top directory, and then expand it again, at which point the program loads everything else.</p>
<p>A recent version of the program changed the behavior so that when you collapse the top-level directory, they automatically open it right away, and load the full tree. Saving a single click isn&#8217;t a big deal, but it makes you feel like the program is anticipating your needs.</p>
<h3>Xbox 360&#8217;s Annoying Device Selection&nbsp;Prompt</h3>
<p>Okay, now for an example of where an intelligent default is desperately needed. The Xbox 360 has an optional hard drive to save your games to. You can also use a memory unit. As a result, games need to include a prompt asking you whether to save the game to your hard drive or the memory unit. The problem arises when you have only one storage device connected.</p>
<p>If you only have a hard drive, then you only have one option when they ask you where to save your game, but they ask anyways. Here&#8217;s a suggestion for the UI guys developing all those games: <strong>If there&#8217;s only one possible answer to a question, don&#8217;t bother asking!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.popart.com/2009/08/intelligent-defaults-save-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Where are all the Mac&#160;Developers?</title>
		<link>http://blogs.popart.com/2009/07/where-are-all-the-mac-developers/</link>
		<comments>http://blogs.popart.com/2009/07/where-are-all-the-mac-developers/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 04:28:44 +0000</pubDate>
		<dc:creator>Andrew Hay</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macintosh]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://blogs.popart.com/?p=551</guid>
		<description><![CDATA[I heard an interesting quote on a recent podcast of RunAsRadio.com, where the guest talking with Richard and Greg said:
We&#8217;re the second largest Mac development shop in the world behind Apple.  We have more Mac developers than anybody except Apple.
Who is &#8220;we&#8221;? Well, Microsoft of course!
This seemed counter-intuitive at first, but after you consider everything [...]]]></description>
			<content:encoded><![CDATA[<p>I heard an interesting quote on <a href="http://www.runasradio.com/default.aspx?showNum=111">a recent podcast of RunAsRadio.com</a>, where the guest talking with Richard and Greg said:</p>
<blockquote><p>We&#8217;re the second largest Mac development shop in the world behind Apple.  We have more Mac developers than anybody except Apple.</p></blockquote>
<p>Who is &#8220;we&#8221;? Well, Microsoft of course!</p>
<p>This seemed counter-intuitive at first, but after you consider everything Microsoft does and who else might possibly be capable of holding second place in the measurement, it all fits together. Now I can feel just a little more smug developing Microsoft .Net applications on my MacBook Pro.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.popart.com/2009/07/where-are-all-the-mac-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-Site Request&#160;Forgery</title>
		<link>http://blogs.popart.com/2009/06/cross-site-request-forgery/</link>
		<comments>http://blogs.popart.com/2009/06/cross-site-request-forgery/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 15:24:51 +0000</pubDate>
		<dc:creator>Andrew Hay</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[ASP.Net MVC]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blogs.popart.com/?p=482</guid>
		<description><![CDATA[In this post I’d like to explain one of the most common ways the bad guys can steal your information on the Internet today. I’ll use the literary technique of schizophrenial-paragraphs to help explain the hacker’s technique.]]></description>
			<content:encoded><![CDATA[<p>In this post, I’ll explain a common way the bad guys steal your information. I’ll use the literary technique of schizophrenial-paragraphs to help explain the hacker’s technique.</p>
<p>The techie guys gave it an acronym: CSRF, because that’s one of the things that give them pleasure. All spelled out, CSRF looks like this:</p>
<p><strong>Cross-Site Request Forgery</strong></p>
<p><em>Myself:</em> Sounds like a big technical mumbo-jumbo thing. Do I really care?</p>
<p><em>Me:</em> Well, would you normally change the email address of your account to that of a hacker that lives three states over and you’ve never met? Probably not.</p>
<p><em>Myself:</em> Ok, I’ll take the first bite, but don’t lose me, got it?</p>
<p><em>Me:</em> Sure, no problem. Bad guys can try to get your information or trick you into doing something you wouldn’t ordinarily do through a CSRF attack. I’ll lay it out so you can see how it works. It’s not that complicated.</p>
<p><em>Me:</em> Let’s say you open your favorite browser and surf away like you normally do. You find a site that you’ve never been to before, but it looks interesting enough so you sign up for a newsletter. You enter your email address and click the submit button. Wham! You’re done.</p>
<p><em>Myself:</em> Damn! Done, eh?</p>
<p><em>Me:</em> Yep. Those little buggers are quick.</p>
<p><em>Myself:</em> So, what happened?</p>
<p><em>Me:</em> Ok, let’s replay that attack. You browsed a site you didn’t know, or have reason to trust, for that matter. When you submitted that web form, you didn’t know it was actually posting information to your favorite social media website. This is to say, directly from your browser to the social media site. It wasn’t really adding your email address to their newsletter list as you assumed.</p>
<p><em>Myself:</em> Well, that’s weird, but so what?</p>
<p><em>Me:</em> I&#8217;ll say this again a different way: instead of posting info from your browser to Site A, it was actually posting info from your browser to Site B, where A is the hacker&#8217;s site and B is your trusted social media site.</p>
<p><em>Myself:</em> Web pages can do that?</p>
<p><em>Me:</em> Yep, it’s just an HTML &lt;form&gt; tag, you can point them wherever you want.</p>
<p><em>Myself:</em> Ok, so if this is true, then why isn’t the sky falling right now?</p>
<p><em>Me:</em> Well, there are ways to help prevent this attack, plus it’s somewhat new in terms of main stream threats, and most importantly, not every hacker in the world is out to get you at this very minute.</p>
<p><em>Myself:</em> So what did it post to my favorite social media website and why do I care?</p>
<p><em>Me:</em> Well, it posted your email address.</p>
<p><em>Myself:</em> Great! I got news for you. My email address is already on my social media website. I don’t think I’ve lost much.</p>
<p><em>Me:</em> Well, it posted some other stuff too. Actually your current email address isn’t what you think it is.</p>
<p><em>Myself:</em> Uhmmm, go on.</p>
<p><em>Me:</em> The hacker took a chance that you might actually be logged into your social media website at the time you submitted the form on his site.</p>
<p><em>Myself:</em> Is this like the phishing thing I’ve been hearing about?</p>
<p><em>Me:</em> Kind of, but let’s not muddy the waters by introducing new terms.</p>
<p><em>Myself:</em> Fair enough, keep going, forget I said anything.</p>
<p><em>Me:</em> Ok, so you were logged on to your favorite social media website when you submitted this form on the other site. This means that the social media site makes several features available to you like updating your status, posting a photo or interacting with a friend. You can only do that stuff when you&#8217;re signed in, right?</p>
<p><em>Myself:</em> Yep. Got it.</p>
<p><em>Me:</em> The hacker’s site posted your email address to the CHANGE EMAIL ADDRESS FORM on the social media site. In addition to your email address, he posted his email address as the new email address. When your browser posted that form, you sent the cookies and everything else along for the ride to the social media site. It looked like a totally legit request from the point of view of the social media website. All the form fields lined up and there was no reason to suspect it.</p>
<p><em>Myself:</em> Well that little piece of..</p>
<p><em>Me:</em> Hold on, G rated audience here.</p>
<p><em>Myself:</em> Sorry.</p>
<p><em>Me:</em> No worries, you’re right to be upset. You see, the social media website should have been anticipating this type of attack.</p>
<p><em>Myself:</em> Huh, go on.</p>
<p><em>Me:</em> Well, because this type of attack works in any browser, it’s very likely that it will happen.</p>
<p><em>Myself:</em> So, how can CSRF attacks be prevented?</p>
<p><em>Me:</em> Well, one way is with the anti-forgery tokens inside Microsoft ASP.Net MVC.</p>
<p><em>Myself:</em> One sec, you said you wouldn’t get technical.</p>
<p><em>Me:</em> I’m not; it’s just a brand name, Microsoft ASP.Net MVC. You like brands don’t you?</p>
<p><em>Myself:</em> Well, yeah. Sorry.</p>
<p><em>Me:</em> No problem. Ok, we were going over anti-forgery tokens. Let’s say your cookie contained a long number. Let’s call that number a GUID.</p>
<p><em>Myself:</em> Oh! Oh! Oh! A GUID is a globally unique identifier, right?</p>
<p><em>Me:</em> Yes, very good. So the cookie contains a GUID, or a long number, right?</p>
<p><em>Myself:</em> Yep. GooooooooooID. It’s fun to say.</p>
<p><em>Me:</em> Focus please.</p>
<p><em>Myself:</em> Sorry.</p>
<p><em>Me:</em> Ok, the programmer who built the web form for the social media website&#8217;s change email address form could have placed another long number, or GUID, in the web form as a hidden field. The person filling out the form doesn’t need to know about the field, so it’s hidden and sent back to the web server when the form is posted. Just to clarify, the web form consists of all the fields you can see, plus the values in the cookie and the token value inside the hidden field.</p>
<p><em>Me:</em> When the web server receives a post, it evaluates posted fields and looks for normal problems. Of course it makes sure required fields are populated and stuff like that. The web server also performs a mathematical computation on the two GUIDs that it received. One GUID came from the cookie and the other from the token.</p>
<p><em>Me:</em> It’s really hard for a hacker to have both numbers. The hacker can’t successfully guess the numbers either. They might as well guess your password. If the numbers don’t jive, then the web server stops processing the request, because it’s probably fraudulent. In the first case where the hacker won, they got you to give up your cookie. However, they wouldn’t be able to post a valid token because that second number changes all the time. Wait, you’re using a complex password right?</p>
<p><em>Myself:</em> Um, yeah sure.</p>
<p><em>Me:</em> Ok, we’ll talk about that one next time. For now, it’s just important that you’re aware of where you’re surfing on the net and to think about your actions. It takes everyone to help secure the Internet.</p>
<p><em>Myself:</em> So, maybe I do need a stronger password, but if I understand you right, you’re saying that developers can help protect the sites they build from this type of shenanigans by using the anti-forgery tokens inside Microsoft ASP.Net MVC right?</p>
<p><em>Me:</em> Yep. It’s really easy.</p>
<p><em>Myself:</em> Cool, thanks for explaining how a CSRF attack works and how to prevent them.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.popart.com/2009/06/cross-site-request-forgery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Windows 7&#160;Experience</title>
		<link>http://blogs.popart.com/2009/02/my-windows-7-experience/</link>
		<comments>http://blogs.popart.com/2009/02/my-windows-7-experience/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 01:14:00 +0000</pubDate>
		<dc:creator>Chris Schenk</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">/chrisschenk/archive/2009/02/03/my-windows-7-experience.aspx</guid>
		<description><![CDATA[Early last month, Microsoft released a public beta of Windows 7, their follow-up to Windows Vista.  I decided to take the plunge and give this new version a try&#8230;
Vista’s launch was plagued by poor device drivers, steep system requirements, and the much maligned User Account Control (UAC).  Vendors have since developed Vista compatible [...]]]></description>
			<content:encoded><![CDATA[<p class="leadtxt">Early last month, Microsoft released a public beta of Windows 7, their follow-up to Windows Vista.  I decided to take the plunge and give this new version a try&#8230;</p>
<p>Vista’s launch was plagued by poor device drivers, steep system requirements, and the much maligned User Account Control (UAC).  Vendors have since developed Vista compatible drivers and technology has also caught up with the OS.  A $500 laptop is now capable of running Vista with most of the bells and whistles enabled.  With Vista universally panned by the press and Apple’s ubiquitous Mac versus PC ad campaign, Microsoft needs to get the next version of Windows right.</p>
<p>One of the first things that I noticed after loading Windows 7 on my laptop is the notable increase in speed over Vista.  Even though it’s a beta build, this new version of Windows clearly runs faster than its predecessor.  The UI is very similar to Vista’s with a few exceptions.  My favorite feature is the new task bar that allows you to “peak” at any running application.  From an interactive standpoint, it also supports multi-touch controls too.</p>
<p>My biggest gripe about Vista is the UAC and Microsoft has toned it down a bit in Windows 7.  The UAC now has multiple settings allowing users to toggle which events trigger the popup.  Interestingly, a colleague forwarded me an article today saying that there is a <a href="http://www.pcmag.com/article2/0,2817,2335122,00.asp" mce_href="http://www.pcmag.com/article2/0,2817,2335122,00.asp">security exploit</a> for the new UAC.</p>
<p>While my Windows 7 experience has overall been positive, there have been a few problems.  I found that most ISO mounting software is incompatible with it.  I did find a package that works though, <a href="http://www.pismotechnic.com/pfm/ap/" mce_href="http://www.pismotechnic.com/pfm/ap/">Pismo File Mount Audit Package</a>. I’ve also experienced a couple of Blue Screen of Deaths too, and my laptop’s wireless doesn’t like coming out of hibernation state.</p>
<p>Microsoft appears to have gotten the message about Vista and I am really looking forward to the final release of this OS!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.popart.com/2009/02/my-windows-7-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who’s Afraid of HTML&#160;Email?</title>
		<link>http://blogs.popart.com/2008/12/who-s-afraid-of-html-email/</link>
		<comments>http://blogs.popart.com/2008/12/who-s-afraid-of-html-email/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 23:57:00 +0000</pubDate>
		<dc:creator>Scott Vandehey</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[tables]]></category>

		<guid isPermaLink="false">/scott-vandehey/archive/2008/12/17/who-s-afraid-of-html-email.aspx</guid>
		<description><![CDATA[Anyone who tells you creating HTML email is easy has either never done it, or is lying. Inexperienced designers tend to think, &#8220;Oh, no problem, it&#8217;s all tables and font tags!&#8221; Grizzled veterans, however, know all too well the difficulties of getting anything but the most simple design to render well in a variety of [...]]]></description>
			<content:encoded><![CDATA[<p class="leadtxt">Anyone who tells you creating HTML email is easy has either never done it, or is lying. Inexperienced designers tend to think, &#8220;Oh, no problem, it&#8217;s all tables and font tags!&#8221; Grizzled veterans, however, know all too well the difficulties of getting anything but the most simple design to render well in a variety of clients.</p>
<p>Email design today is like web design in the early 90&#8217;s, complete with nested tables, spacer gifs, and <code>FONT</code> tags galore. Standards support is virtually non-existent, and even simple things like background images and table spacing are handled poorly by some clients.</p>
<p><span id="more-2459"></span>By being aware of the unique challenges that HTML email presents, and following the recommendations in this article, you&#8217;ll make life much easier for your production team.</p>
<h3>What Email Clients Do&nbsp;People&nbsp;Use?</h3>
<p>Until recently, the single biggest problem when designing HTML emails was a lack of reliable information about the target audience. Unlike web design, where server logs and web statistics programs make it pretty easy to find out what browsers your audience is using, there are no equivalent tracking programs for email.</p>
<p>The only sources of information I could find online were <a href="http://www.clickz.com/1428551">two</a> <a href="http://www.wilsonweb.com/wmt8/email_format_preferences.htm">surveys</a>, published in 2002 and 2003, that were given to limited audiences. With the small size of the sample groups, the way the survey was structured, and the age of the surveys (which predate both Gmail and the iPhone!), the results are nearly useless.</p>
<p>Thankfully, while conducting research for this article, a company that makes <a href="http://fingerprintapp.com/email-client-stats">email client usage statistics software</a> decided to start publishing some of their data. The results for business users are surprising:</p>
<p><a href="http://fingerprintapp.com/email-client-stats"><img src="http://farm4.static.flickr.com/3089/3100559043_f2ec61591a.jpg" class="photo" alt="2008 Email Client Stats" /></a></p>
<p>Some noteworthy takeaways:</p>
<ul>
<li>Outlook is the most popular, but not by much.</li>
<li>Most people have yet to upgrade to Outlook 2007.</li>
<li>Webmail programs add up to more than half of total usage.</li>
<li>Gmail is dramatically outnumbered by Yahoo.</li>
<li>Yahoo is even more dramatically outnumbered by Hotmail.</li>
<li>Lotus Notes and AOL are (thankfully) negligible.</li>
<li>The iPhone has a respectable 1.3% of total usage!</li>
</ul>
<p>This means we can expect any email we create to be viewed in Outlook, Yahoo, Hotmail, and Gmail. Testing in all of these is ideal, however, if time is tight, you can probably get away with just testing Outlook 2007 and Gmail. As we&#8217;ll discuss next, these are the two most restrictive clients, and if your email works well for them, it should work well in all the others.</p>
<h3>What are the Problems with&nbsp;HTML&nbsp;Email?</h3>
<p>Now that we know what clients our audience is using, we can start looking at some of the challenges that arise when building HTML emails. A complete list of every type of problem is beyond the scope of this article, but if you&#8217;re interested, <a href="http://www.campaignmonitor.com/resources/">Campaign Monitor&#8217;s tips section</a> is a great resource.</p>
<h4>CSS Support&nbsp;is&nbsp;Unreliable</h4>
<p>While most email clients <a href="http://www.campaignmonitor.com/css/">support CSS to some degree</a>, the problem here arises from the fact that each does so in a different, and contradictory manner. The two worst offenders are <a href="http://www.email-standards.org/clients/microsoft-outlook-2007/">Outlook 2007</a> and <a href="http://www.email-standards.org/clients/gmail/">Gmail</a>.</p>
<p>Gmail only supports inline CSS, therefore, any <code>STYLE</code> blocks or linked stylesheets in the <code>HEAD</code> of your document will be stripped entirely. Of course, even if they weren&#8217;t, it wouldn&#8217;t do you much good, since Gmail also strips all <code>ID</code> and <code>CLASS</code> attributes.</p>
<p><a href="http://www.flickr.com/photos/spaceninja/3100224711/"><img src="http://farm4.static.flickr.com/3128/3100224711_4821897552.jpg" class="photo" alt="Outlook 2000 vs Outlook 2007" /></a></p>
<p>Outlook 2007 will allow linked stylesheets and <code>STYLE</code> blocks, but the emails are rendered using the <a href="http://www.campaignmonitor.com/blog/post/2396/the-truth-behind-the-outlook-2007-change-and-what-you-can-do-about-it/">Microsoft Word rendering engine</a>. This means no background images, no floats, no positioning, and no margins or padding. It&#8217;s so bad that when Microsoft announced the change, Campaign Monitor&#8217;s headline was &#8220;<a href="http://www.campaignmonitor.com/blog/post/2393/microsoft-takes-email-design-b/">Microsoft takes email design back 5 years</a>.&#8221;</p>
<p>Due to the popularity of Outlook among business users, <a href="http://www.campaignmonitor.com/blog/post/2533/a-guide-to-css-support-in-emai-2/">Campaign Monitor recommends</a> that all business emails be built with tables and minimal inline CSS only.</p>
<h4>Most Clients Disable Images&nbsp;by&nbsp;Default</h4>
<p class="floatright"><a href="http://www.flickr.com/photos/spaceninja/3100224675/"><img src="http://farm4.static.flickr.com/3152/3100224675_a9a9c3744c_m.jpg" class="photo" alt="Image Blocking by Email Client" /></a></p>
<p>There is some variation between clients, but most have images blocked by default, unless the user is in the address book. Older versions of Gmail actually blocked images at all times, though this seems to have been fixed recently.</p>
<p>As a result, <a href="http://www.campaignmonitor.com/resources/entry/677/image-blocking-in-email-clients/">Campaign Monitor recommends</a> that you &#8220;become a known sender&#8221; by adding a note to your sign-up form, and any subsequent emails you send, asking users to add you to their address book. Needless to say, this requires that you send your emails from the same address each time.</p>
<p>Additionally, they recommend that you plan for images being disabled. Since <code>ALT</code> text is unreliable (more on that in a moment), you should begin your email with HTML or plain-text headlines. This means users can tell what your email is about, even without seeing your images. Also, consider putting plain-text captions under important images.</p>
<h4>ALT Text&nbsp;is&nbsp;Unreliable</h4>
<p class="floatright"><a href="http://www.flickr.com/photos/spaceninja/3100224563/"><img src="http://farm4.static.flickr.com/3150/3100224563_e8d2592eb1_m.jpg" class="photo" alt="Blocked Images in Outlook" /></a></p>
<p>The fact that images are disabled by default wouldn&#8217;t be so bad except that most clients also have <a href="http://www.campaignmonitor.com/resources/entry/676/how-do-alt-attributes-appear-in-email/">difficulty displaying <code>ALT</code> attributes</a>. As usual, Gmail and Outlook are the worst offenders.</p>
<p>Gmail does show <code>ALT</code> text, but only if the image dimensions are large enough to display the entire string of text. As a result, small images, or images with lengthy <code>ALT</code> attributes, show nothing at all.</p>
<p>Outlook (both 2007 and previous versions) do show the <code>ALT</code> text, but they preface it with a lengthy error message, which effectively hides the text from view in most cases. In this case, the one positive note is that since every image in every email will display this security message, most users will be used to it, and to clicking the button that enables images in the email.</p>
<h4>Gmail&nbsp;Ignores&nbsp;Cellspacing</h4>
<p class="floatright"><a href="http://www.flickr.com/photos/spaceninja/3101061302/"><img src="http://farm4.static.flickr.com/3286/3101061302_9463ca8690_m.jpg" class="photo" alt="Missing Cellspacing in Gmail" /></a></p>
<p>This is a very recent change and, for my money, one of the most annoying problems facing email designers. <a href="http://www.campaignmonitor.com/blog/post/2421/the-varying-landscape-of-gmail-1/">Gmail strips all <code>PADDING</code> and <code>CELLSPACING</code> from tables</a>. Regardless of whether you use CSS, or the old-school attributes for the table itself, Gmail zeroes it all out.</p>
<p>As a result, you have to retool all your tables to not use any <code>PADDING</code> or <code>CELLSPACING</code>. Instead, bust out your spacer gifs and add empty table cells everywhere you need white space. This won&#8217;t impact the way your emails are designed, but it means a dramatic increase in code bloat.</p>
<h3>Tips for Designing&nbsp;HTML&nbsp;Emails</h3>
<p>In addition to learning about the most common difficulties with HTML emails, there are several things you can do to make your experience easier. If you&#8217;re still familiar with table-based layouts, these are common sense, but if you&#8217;ve been doing standards for a while now, it can be difficult to get back into the mindset of the limitations you need to work within.</p>
<h4>Remember HTML&nbsp;Font&nbsp;Sizes</h4>
<p class="floatright"><a href="http://www.flickr.com/photos/spaceninja/3101061360/"><img src="http://farm4.static.flickr.com/3102/3101061360_0d9e5b4181_m.jpg" class="photo" alt="HTML Font Sizes" /></a></p>
<p>It&#8217;s easy to forget that without CSS, there are only 7 font sizes, and the differences between them are pretty severe. Size 1 text is tiny, and usually only suited for the fine print in the footer. Size 3 is huge, so your body text will probably be size 2. That means you only really have one or two usable font sizes for your body text. Keep this in mind while creating the design to avoid having layout shifts due to font size differences.</p>
<h4>Avoid&nbsp;Overlaps</h4>
<p>Since Outlook 2007 won&#8217;t display background images, you cannot display HTML text over an image &#8212; even a simple one like a gradient. You&#8217;ll either need to adjust your design to keep a solid color behind all HTML text, or set it up so that if the background disappears, the design still looks appropriate.</p>
<h4>Avoid&nbsp;Image&nbsp;Headlines</h4>
<p>As mentioned above, most email clients have images disabled by default and have difficulty displaying <code>ALT</code> text. As a result, if your most important headlines are images, your readers won&#8217;t see them at first! If you know your audience is invested enough to click through, that risk might be acceptable, but most of the time you should make sure that your primary call to action is not stuck in an image. This will limit your font choices, but will dramatically improve the odds that your audience will see your headline.</p>
<h4>Web Version and&nbsp;Address&nbsp;Book</h4>
<p>Even if you follow every suggestion in this article, your email may not work for some people, so provide them with alternatives. Most email campaign products make it easy to insert a &#8220;view as web page&#8221; link and to include a plain-text version of your email.</p>
<p>A good way to do this is to include a bit of text requesting that your readers add you to his or her address book. One easy technique to get all this out of the way, is to include a block of plain HTML text at the very top of your email that explains why the reader received this email, provides an unsubscribe link, a link to a web-based version of the email, and suggests that they add your email to their address book.</p>
<h3>In&nbsp;Conclusion</h3>
<p>The bad news is that CSS and web standards support in email clients is so inconsistent as to be non-existent. Not only that, but it&#8217;s gotten worse in the last two years thanks to Outlook 2007 and Gmail.</p>
<p>When I first started designing HTML emails for our clients, I would quote 1-2 hours for each email. Today, I quote 4-5 hours because it&#8217;s gotten so much more complicated.</p>
<p>The good news is that things are going to improve &#8212; slowly. <a href="http://www.email-standards.org/">The Email Standards Project</a> aims to do for email what <a href="http://www.webstandards.org/">the Web Standards Project</a> did for web browsers in the late 90&#8217;s. However, it took the Web Standards Project years to make a significant impact, and due to the slow rate of upgrades in email clients, it&#8217;ll probably take even longer. Still, this kind of pressure will undoubtedly help the situation.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.popart.com/2008/12/who-s-afraid-of-html-email/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Windows + Space =&#160;Backslash</title>
		<link>http://blogs.popart.com/2008/12/windows-space-backslash/</link>
		<comments>http://blogs.popart.com/2008/12/windows-space-backslash/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 20:42:00 +0000</pubDate>
		<dc:creator>Andrew Hay</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[keyboards]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[vista]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">/andrew-hay/archive/2008/12/11/windows-space-backslash.aspx</guid>
		<description><![CDATA[My primary machine, a MacBook Pro running Vista, experienced an ailment the other day: the backslash key broke. So, I was stuck with no pipe character and no backslash. If I needed one, I had to find an existing instance of the character, then copy and paste. Not a good time. Developers like to use [...]]]></description>
			<content:encoded><![CDATA[<p class="leadtxt">My primary machine, a MacBook Pro running Vista, experienced an ailment the other day: the backslash key broke. So, I was stuck with no pipe character and no backslash. If I needed one, I had to find an existing instance of the character, then copy and paste. Not a good time. Developers like to use these keys all the time.</p>
<p>So I was confronted with the question of either taking my machine into the Apple store and pretending to be one of them for the duration of time I would spend inside the store&nbsp;or to find another way. If I took my machine into them, I would need to take necessary safeguards and assume all data on my machine would be lost. I&#8217;ve heard some interesting stories that lead me to believe one should not assume that you&#8217;ll get your data back when you hand over your computer. So I&#8217;m not encouraged to pursue that direction. It takes a really long time to get all my tools loaded up on a machine.</p>
<p>Then, I recalled listening to a podcast, maybe as much as a year ago, and learning about <a href="http://www.autohotkey.com/" mce_href="http://www.autohotkey.com/">Autohotkey</a>, a possible solution to my problem.</p>
<p>This software is a free, open-source utility that, among other things, can remap keys on your Windows computer in a really easy and low friction manner. While my backslash key was dead, my other keys worked fine so I contrived a solution to restore the lost capability. </p>
<p>I downloaded and installed Autohotkey, then I created a Autohotkey script from a template. Now, I simply double click the script and it runs happily in the background until I restart Windows. This particular custom script listens for a combination of the Windows key and the space key. When I press them together, Autohotkey intercepts the keystroke combination&nbsp;and replaces it with the backslash character.</p>
<p>So, similar to Pecos Bill&#8217;s horse, Widow Maker, I&#8217;m the only one (up until now) who can get my machine to write a backslash character on the screen. It&#8217;s worked out pretty well, sometimes I&#8217;ll forget and wonder why my file path or regular expression is incorrect but then I&#8217;ll just hit Windows+space and WHAM! I&#8217;ve got myself a backslash and I didn&#8217;t have to risk reinstalling all my software to get the capability back.</p>
<p>Autohotkey does a lot more than this, hopefully some day I&#8217;ll get a moment to continue exploring it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.popart.com/2008/12/windows-space-backslash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Importing Data From Excel with&#160;C#</title>
		<link>http://blogs.popart.com/2008/07/importing-data-from-excel-with-c/</link>
		<comments>http://blogs.popart.com/2008/07/importing-data-from-excel-with-c/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 15:55:00 +0000</pubDate>
		<dc:creator>Andrew Hay</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[ado.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">/andrew-hay/archive/2008/07/31/importing-data-from-excel-with-c.aspx</guid>
		<description><![CDATA[Behind the scenes, I see a lot of companies run on Excel and duct tape. So it&#8217;s common for clients to hand me a slab of data organized into neat little rows and columns. Excel is just a handy way to throw some data over the wall and get things done. This might be a [...]]]></description>
			<content:encoded><![CDATA[<p class="leadtxt">Behind the scenes, I see a lot of companies run on Excel and duct tape. So it&#8217;s common for clients to hand me a slab of data organized into neat little rows and columns. Excel is just a handy way to throw some data over the wall and get things done. This might be a list of dealers, a collection of user profiles, product information, or anything that just needs to get somewhere else.</p>
<p>Depending on the scenario, I&#8217;ll might massage this data and slide it into a SQL Server database or an XML file. I&#8217;m a web developer so I use the ADO.Net stack on a regular basis. If I were a Windows client developer, I might prefer to solve this problem with the Excel object model, but that really looks like more code to me, so here&#8217;s how I like to roll:</p>
<p>The following code block accepts an Excel file path and returns an ordinary DataTable object, which can be manipulated easily by the code that calls this method. The first row of the Excel document becomes the columns in the DataTable object and each row thereafter are DataRow objects.</p>
<p><a href="http://www.flickr.com/photos/popartinc/3633619081/" title="ImportDataFromExcel_2 by popartinc, on Flickr"><img src="http://farm4.static.flickr.com/3400/3633619081_f735ab4695.jpg" width="500" height="299" alt="ImportDataFromExcel_2" /></a></p>
<p>If you like, <a href="http://support.microsoft.com/kb/306023" mce_href="http://support.microsoft.com/kb/306023">take a look at both techniques for working with Excel data</a> and see what one speaks to you.</p>
<blockquote><p>With this block of code, I can happily accept large chunks of data from a client without spending precious time fiddling with administrivia.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blogs.popart.com/2008/07/importing-data-from-excel-with-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac vs PC Firefox 3 Add Bookmark&#160;Dialog</title>
		<link>http://blogs.popart.com/2008/07/mac-vs-pc-firefox-3-add-bookmark-dialog/</link>
		<comments>http://blogs.popart.com/2008/07/mac-vs-pc-firefox-3-add-bookmark-dialog/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 21:03:00 +0000</pubDate>
		<dc:creator>Scott Vandehey</dc:creator>
				<category><![CDATA[annoyances]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macintosh]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[pc]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">/scott-vandehey/archive/2008/07/07/mac-vs-pc-firefox-3-add-bookmark-dialog.aspx</guid>
		<description><![CDATA[
One major annoyance between the Mac and PC versions of Firefox 3 is the position of the &#8220;Done&#8221; button on the Add Bookmark dialog. On a Mac, the button is on the right. On a PC, it&#8217;s on the left. I won&#8217;t comment on which is better, just that the difference breaks my muscle memory [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/spaceninja/2646725235/"><img src="http://farm4.static.flickr.com/3271/2646725235_bc687b3d59.jpg" class="photo" alt="Mac vs PC Firefox 3 Add Bookmark Dialog" /></a></p>
<p class="leadtxt">One major annoyance between the Mac and PC versions of Firefox 3 is the position of the &#8220;Done&#8221; button on the Add Bookmark dialog. On a Mac, the button is on the right. On a PC, it&#8217;s on the left. I won&#8217;t comment on which is better, just that the difference breaks my muscle memory and is driving me up the wall, and causing me to lose bookmarks that I think I&#8217;ve saved.</p>
<p>The only saving grace here is that &#8220;Done&#8221; is the default action on both, so what I really need to do is train myself to press Enter on the keyboard instead of mousing over and clicking on the button.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.popart.com/2008/07/mac-vs-pc-firefox-3-add-bookmark-dialog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
