<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>akutz's blog</title>
	<atom:link href="http://akutz.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://akutz.wordpress.com</link>
	<description>/dev/random</description>
	<lastBuildDate>Tue, 11 Oct 2011 12:46:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='akutz.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>akutz's blog</title>
		<link>http://akutz.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://akutz.wordpress.com/osd.xml" title="akutz&#039;s blog" />
	<atom:link rel='hub' href='http://akutz.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Updating a git submodule reference to HEAD</title>
		<link>http://akutz.wordpress.com/2011/10/11/updating-a-git-submodule-reference-to-head/</link>
		<comments>http://akutz.wordpress.com/2011/10/11/updating-a-git-submodule-reference-to-head/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 12:46:20 +0000</pubDate>
		<dc:creator>akutz</dc:creator>
				<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://akutz.wordpress.com/?p=1064</guid>
		<description><![CDATA[I did not find any good documentation on how to update a git submodule reference to the HEAD of a branch so I created some projects on github.com to illustrate how to do this in a straightforward manner. See https://github.com/akutz/SubHead to learn more.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=1064&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I did not find any good documentation on how to update a git submodule reference to the HEAD of a branch so I created some projects on github.com to illustrate how to do this in a straightforward manner. See <a href="https://github.com/akutz/SubHead">https://github.com/akutz/SubHead</a> to learn more.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/akutz.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/akutz.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/akutz.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/akutz.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/akutz.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/akutz.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/akutz.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/akutz.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/akutz.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/akutz.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/akutz.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/akutz.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/akutz.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/akutz.wordpress.com/1064/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=1064&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://akutz.wordpress.com/2011/10/11/updating-a-git-submodule-reference-to-head/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">akutz</media:title>
		</media:content>
	</item>
		<item>
		<title>Preventing Same Version Downgrades with WiX</title>
		<link>http://akutz.wordpress.com/2011/03/14/preventing-same-version-downgrades-with-wix/</link>
		<comments>http://akutz.wordpress.com/2011/03/14/preventing-same-version-downgrades-with-wix/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 13:35:58 +0000</pubDate>
		<dc:creator>akutz</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[custom action]]></category>
		<category><![CDATA[msi]]></category>
		<category><![CDATA[windows installer]]></category>
		<category><![CDATA[wix]]></category>

		<guid isPermaLink="false">http://akutz.wordpress.com/?p=1055</guid>
		<description><![CDATA[So I farked up when I was building several MSI packages using the Microsoft Windows XML (WiX) Toolset. I broke a sacred covenant of MSI development and violated the component rules. This would not normally be a huge concern since the members of the components, the files, are not going to change. However, I did [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=1055&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So I farked up when I was building several MSI packages using the <a href="http://wix.sourceforge.net/">Microsoft Windows XML (WiX) Toolset</a>. I broke a sacred covenant of MSI development and <a href="http://msdn.microsoft.com/en-us/library/aa372795%28VS.85%29.aspx">violated the component rules</a>.</p>
<p>This would not normally be a huge concern since the members of the components, the files, are not going to change. However, I did run into an interesting issue. Because my company&#8217;s versioning scheme is MAJOR.MINOR.REVISION.BUILD where BUILD is a value auto-incremented by the build server, as far as MSI is concerned 4.0.0.123 is the same version as 4.0.0.187. And because our patch strategy is to simply release a hot-fixed MSI, we have to allow same-version upgrades.</p>
<p>Anyone familiar with MSI upgrades knows the dirty secret that allowing same version upgrades allows same version downgrades. Except these downgrades would result in files disappearing from the filesystem. After much research I determined the issue was because of my stupid decision to group multiple files into single Components. MSI was not applying the standard <a href="http://msdn.microsoft.com/en-us/library/aa368599(v=vs.85).aspx">file versioning rules</a> correctly, and thus during a downgrade the following steps were occurring:</p>
<ol>
<li>Version X is installed on a system and user attempts to install version X-1.
<li>The installer appears to calculate which Components need to be installed by version and date. It does not include the X-1&#8242;s Components because they are already on the system.</li>
<li>The installer removes X&#8217;s Components from the file system.</li>
<li>Finally, the installer chooses not to install X-1&#8242;s Components because the installer has already calculated that the Components on the filesystem, at version X, were newer.</li>
</ol>
<p>I found myself in quite a pickle. How do I prevent same version downgrades when the only varying component of the version is the 4th component (which again, MSI ignores)?</p>
<p><span id="more-1055"></span></p>
<p>First of all, let me clear the air and say that I&#8217;m using the original WiX method of handling major upgrades.</p>
<pre class="brush: xml;">
&lt;Upgrade Id=&quot;$(var.UpgradeGuid)&quot;&gt;
  &lt;UpgradeVersion Minimum=&quot;3.9.9&quot; IncludeMinimum=&quot;yes&quot; Maximum=&quot;$(var.Version)&quot; IncludeMaximum=&quot;yes&quot; Property=&quot;OLDERVERSIONBEINGUPGRADED&quot; /&gt;
  &lt;UpgradeVersion Minimum=&quot;$(var.Version)&quot; IncludeMinimum=&quot;no&quot; OnlyDetect=&quot;yes&quot; Property=&quot;NEWERVERSIONDETECTED&quot; /&gt;
&lt;/Upgrade&gt;
&lt;CustomActionRef Id=&quot;WixExitEarlyWithSuccess&quot;/&gt;
</pre>
<p>This bit of code uses the WiX&#8217;s custom action <em>WixExitEarlyWithSuccess</em> in conjunction with the <em>NEWERVERSIONDETECTED</em> property to detect whether or not a new version is detected, and thus the installer will exist early with a successful error code (<a href="http://msdn.microsoft.com/en-us/library/aa368072(v=vs.85).aspx">ERROR_NO_MORE_ITEMS</a>) if a newer version of the product is already installed. I know that more recent versions of WiX include a <em>MajorUpgrade</em> element that makes this process more concise (cleaner), but this new method does not work in conjunction with the <em>WixExitEarlyWithSuccess</em> custom action.</p>
<p>Since the <em>WixExitEarlyWithSuccess</em> custom action works by reading the <em>NEWERVERSIONDETECTED</em> property, I thought I&#8217;d be tricky and try populating that property myself. To that end I used a <em>FileSearch</em> element to look for a <em>key</em> file that I knew would always have the same MAJOR.MINOR.REVISION.BUILD version that I needed to compare against.</p>
<pre class="brush: xml;">
&lt;Property Id=&quot;NEWERVERSIONDETECTED&quot;&gt;
  &lt;DirectorySearch Id=&quot;NewerFileVersionDirSearch&quot; Path=&quot;[INSTALLDIR]&quot;&gt;
    &lt;FileSearch Name=&quot;KeyFile.dll&quot; MinVersion=&quot;$(var.Version4)&quot;/&gt;
  &lt;/DirectorySearch&gt;
&lt;/Property&gt;
</pre>
<p>This worked perfectly! Or so I thought. While this fix worked in conjunction with WiX&#8217;s own <em>WixExitEarlyWithSuccess</em> custom action during UI-enabled installations, it failed when the MSI was run in any type of quiet mode. A quick examination of the MSI log files with the <em>verbose</em> option enabled revealed that it was because the <em>WixExitEarlyWithSuccess</em> custom action is scheduled after <em>FindRelatedProducts</em> and my instance of the <em>NEWERVERSIONDETECTED</em> property is not set yet when run in silent mode when the <em>WixExitEarlyWithSuccess</em> custom action is processed.</p>
<p>My solution was to create my own custom action: <em>ExitEarlyWithSuccess</em>.</p>
<pre class="brush: xml;">
&lt;CustomAction Id=&quot;ExitEarlyWithSuccess&quot; VBScriptCall=&quot;Main&quot; Property=&quot;ExitEarlyWithSuccessScript&quot; /&gt;

&lt;InstallExecuteSequence&gt;
  &lt;Custom Action=&quot;ExitEarlyWithSuccess&quot; After=&quot;InstallInitialize&quot;&gt;NOT Installed AND NEWERFILEVERSIONDETECTED&lt;/Custom&gt;
&lt;/InstallExecuteSequence&gt;

&lt;Property Id=&quot;ExitEarlyWithSuccessScript&quot;&gt;
  &lt;![CDATA[
    Function Main()
      Main = 5
    End Function
  ]]&gt;
&lt;/Property&gt;

&lt;Property Id=&quot;NEWERFILEVERSIONDETECTED&quot;&gt;
  &lt;DirectorySearch Id=&quot;NewerFileVersionDirSearch&quot; Path=&quot;[INSTALLDIR]&quot;&gt;
    &lt;FileSearch Name=&quot;KeyFile.dll&quot; MinVersion=&quot;$(var.Version4)&quot;/&gt;
  &lt;/DirectorySearch&gt;
&lt;/Property&gt;
</pre>
<p>The secret to my custom action is that it is scheduled <strong>after</strong> <em>InstallInitialize</em> giving the normal WiX properties, such as <em>Installed</em> a chance to be populated. The <em>ExitEarlyWithSuccessScript</em> is an embedded VBScript that returns the <em>ERROR_NO_MORE_ITEMS</em> code to indicate to the installer that it should exit immediately with a successful exit code. Also, the custom action is set to run only when the product is not installed since you don&#8217;t want this action to occur during maintenance or removal (not that it matters too much since the file version comparison wouldn&#8217;t match &#8212; the <em>MinVersion</em> attribute in a <em>File</em> element matches the next version that it is compared to. For example, 4.0.0.0 would match 4.0.0.1, but not 4.0.0.0. In this way, <em>MinVersion</em> will never match the currently installed version).</p>
<p>I&#8217;ve tested this method of exiting an installer early over several MSI files now, and it works for each one of them.</p>
<p>Hope this helps!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/akutz.wordpress.com/1055/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/akutz.wordpress.com/1055/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/akutz.wordpress.com/1055/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/akutz.wordpress.com/1055/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/akutz.wordpress.com/1055/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/akutz.wordpress.com/1055/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/akutz.wordpress.com/1055/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/akutz.wordpress.com/1055/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/akutz.wordpress.com/1055/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/akutz.wordpress.com/1055/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/akutz.wordpress.com/1055/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/akutz.wordpress.com/1055/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/akutz.wordpress.com/1055/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/akutz.wordpress.com/1055/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=1055&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://akutz.wordpress.com/2011/03/14/preventing-same-version-downgrades-with-wix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">akutz</media:title>
		</media:content>
	</item>
		<item>
		<title>Grove-unmade</title>
		<link>http://akutz.wordpress.com/2011/03/08/grove-unmade/</link>
		<comments>http://akutz.wordpress.com/2011/03/08/grove-unmade/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 11:36:36 +0000</pubDate>
		<dc:creator>akutz</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[bamboo]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[grove]]></category>
		<category><![CDATA[iphone4]]></category>

		<guid isPermaLink="false">http://akutz.wordpress.com/?p=1050</guid>
		<description><![CDATA[Last fall I waited in eager anticipation for my Grove Bamboo case. Simply put, Grove makes these wonderful, beautiful, bamboo laser-cut iPhone cases. In fact, they are now making one for the iPad as well. However, I must warn possible purchasers of the Grove cases that even through everyday use, your work-of-art case will likely [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=1050&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last fall I waited in eager anticipation for my <a href="http://www.grovemade.com/collections/iphone-4-case-artist-series/">Grove</a> Bamboo case. Simply put, Grove makes these wonderful, beautiful, bamboo laser-cut iPhone cases. In fact, they are now <a href="http://www.grovemade.com/collections/ipad-2">making one</a> for the iPad as well. However, I must warn possible purchasers of the Grove cases that even through everyday use, your work-of-art case will likely fail within six months. Here is a picture of the bottom half of mine now:</p>
<div id="attachment_1051" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2011/03/photo-1.jpg"><img src="http://akutz.files.wordpress.com/2011/03/photo-1.jpg?w=500&#038;h=373" alt="Broken Grove Bamboo iPhone4 Case" title="Broken Grove Bamboo iPhone4 Case" width="500" height="373" class="size-full wp-image-1051" /></a><p class="wp-caption-text">Broken Grove Bamboo iPhone4 Case</p></div>
<p>One cannot argue that the Grove made iPhone4 case is nothing less than perfect. I have received more comments on how amazing the case is then I can count. However, for $89, a case should not fall apart after taking the bottom half of it off an on on a regular basis just so you can dock it or plug it into a car charger. That said, I may buy another one eventually, if Grove has strengthened their manufacturing process (and glue that holds the black trim to the bamboo). For now I&#8217;ll probably invest in a <a href="http://www.elementcase.com/iphone4.html">Vapor case</a> that is all aluminum. Should help block the attenuation issues with my phone anyway.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/akutz.wordpress.com/1050/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/akutz.wordpress.com/1050/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/akutz.wordpress.com/1050/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/akutz.wordpress.com/1050/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/akutz.wordpress.com/1050/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/akutz.wordpress.com/1050/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/akutz.wordpress.com/1050/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/akutz.wordpress.com/1050/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/akutz.wordpress.com/1050/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/akutz.wordpress.com/1050/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/akutz.wordpress.com/1050/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/akutz.wordpress.com/1050/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/akutz.wordpress.com/1050/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/akutz.wordpress.com/1050/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=1050&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://akutz.wordpress.com/2011/03/08/grove-unmade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">akutz</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2011/03/photo-1.jpg" medium="image">
			<media:title type="html">Broken Grove Bamboo iPhone4 Case</media:title>
		</media:content>
	</item>
		<item>
		<title>I Love Balsamiq Mockups</title>
		<link>http://akutz.wordpress.com/2011/01/20/i-love-balsamiq-mockups/</link>
		<comments>http://akutz.wordpress.com/2011/01/20/i-love-balsamiq-mockups/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 14:58:08 +0000</pubDate>
		<dc:creator>akutz</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[balsamiq]]></category>
		<category><![CDATA[emc]]></category>
		<category><![CDATA[mockups]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[vsi]]></category>
		<category><![CDATA[vsphere]]></category>
		<category><![CDATA[wireframe]]></category>

		<guid isPermaLink="false">http://akutz.wordpress.com/?p=1027</guid>
		<description><![CDATA[Let me just say right off the bat, that I hate, hate working on Functional Specifications, and the reason for my loads of loathing is the user interface (UI). Managers want specifications to include screenshots of the UI, but as I&#8217;ve tried to explain, it is a chicken-and-the-egg situation. Do you want a specification, or [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=1027&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Let me just say right off the bat, that I hate, <strong>hate</strong> working on <a href="http://en.wikipedia.org/wiki/Functional_specification">Functional Specifications</a>, and the reason for my loads of loathing is the <a href="http://en.wikipedia.org/wiki/Graphical_user_interface">user interface</a> (UI). Managers want specifications to include screenshots of the UI, but as I&#8217;ve tried to explain, it is a chicken-and-the-egg situation. Do you want a specification, or do you want me to work on the UI?</p>
<p>The answer to this problem is usually creating wireframe mockups of the eventual UI. However, I&#8217;ve yet to find a mockup tool that I like. I&#8217;ve tried tools like <a href="http://office.microsoft.com/en-us/visio/">Visio</a> and <a href="http://www.omnigroup.com/products/omnigraffle/">OmniGraffle</a> which are good tools, but they focus more on diagraming and process flow than wireframe design. Not to mention the aforementioned applications share a particular trait with an almost standard for creating mockups &#8212; <a href="http://www.axure.com/">Axure</a> &#8212; complexity. The barrier to entry for these applications for doing something as simple as creating mockups is relatively high. I have longed for something simple, powerful, and straight-forward.</p>
<p>And then I found <a href="http://balsamiq.com/">Balsamiq Mockups</a>.</p>
<p><span id="more-1027"></span></p>
<p>Balsamiq Mockups is exactly what I&#8217;ve been looking for in an application for creating wireframe mockups. It:</p>
<ul>
<li>Has zero learning curve</li>
<li>Is fun to use</li>
<li>Creates elegant, to-the-point wireframes</li>
<li><a href="http://www.adobe.com/products/air/">Runs on</a> Windows, OS X, and Linux</li>
<li>Has an active <a href="http://mockupstogo.net/">stencil community</a> (much like OmniGraffle&#8217;s <a href="http://graffletopia.com/">Graffletopia</a> site)</li>
<li>Is free to use for 7 days and is only $79 after that</li>
<li>Saves all files in BMML (Balsamiq&#8217;s XML markup language) so versioning is a snap!</li>
</ul>
<p>I&#8217;m currently working on a functional specification where I have to mock up several UI screens that involve the <a href="http://www.vmware.com/">VMware</a> <a href="http://www.vmware.com/products/vsphere/">vSphere</a> Client. Here are some screenshots of the actual VMware client with <a href="https://akutz.wordpress.com/2010/12/22/emc-vsi-4-0/">EMC VSI 4.0</a> versus my mockups:</p>
<div id="attachment_968" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2010/12/vsi-4-0-feature-manager.png"><img src="http://akutz.files.wordpress.com/2010/12/vsi-4-0-feature-manager.png?w=500&#038;h=348" alt="VSI 4.0 - Feature Manager" title="VSI 4.0 - Feature Manager" width="500" height="348" class="size-full wp-image-968" /></a><p class="wp-caption-text">VSI 4.0 - Feature Manager</p></div>
<div id="attachment_1036" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2011/01/vsphere-4-client-emc-vsi-home-view.png"><img src="http://akutz.files.wordpress.com/2011/01/vsphere-4-client-emc-vsi-home-view.png?w=500&#038;h=375" alt="VSI 4.0 - Feature Manager - Mockup" title="VSI 4.0 - Feature Manager - Mockup" width="500" height="375" class="size-full wp-image-1036" /></a><p class="wp-caption-text">VSI 4.0 - Feature Manager - Mockup</p></div>
<div id="attachment_971" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2010/12/vsi-4-0-symmetrix-sra-utilities.png"><img src="http://akutz.files.wordpress.com/2010/12/vsi-4-0-symmetrix-sra-utilities.png?w=500&#038;h=348" alt="VSI 4.0 - Symmetrix SRA Utilities" title="VSI 4.0 - Symmetrix SRA Utilities" width="500" height="348" class="size-full wp-image-971" /></a><p class="wp-caption-text">VSI 4.0 - Symmetrix SRA Utilities</p></div>
<div id="attachment_1038" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2011/01/vsphere-4-client-emc-vsi-tab.png"><img src="http://akutz.files.wordpress.com/2011/01/vsphere-4-client-emc-vsi-tab.png?w=500&#038;h=375" alt="VSI 4.0 - Symmetrix SRA Utilities - Mockup" title="VSI 4.0 - Symmetrix SRA Utilities - Mockup" width="500" height="375" class="size-full wp-image-1038" /></a><p class="wp-caption-text">VSI 4.0 - Symmetrix SRA Utilities - Mockup</p></div>
<p>I created the above mockups from scratch, having never used Balsamiq before, in just a few hours. And since then I&#8217;ve created several more templates that rest of my team can use for their own specifications.</p>
<p>I just can&#8217;t say enough good things about Balsamiq Mockups. So far it has been fast, reliable, and makes working on this current specification a breeze. I do have some suggestions for their team that I would like to see implemented at some point in the future.</p>
<ul>
<li><del datetime="2011-01-20T22:56:46+00:00">Create a tool to turn any icon into a sketch-like stencil. This way I can re-use <a href="http://communities.vmware.com/viewwebdoc.jspa?documentID=DOC-9441">existing icon libraries</a>.</del> (This feature already exists. Check the comments!)</li>
<li>I&#8217;m sure you&#8217;ve heard it before, but layers would be nice.</li>
<li><del datetime="2011-01-20T22:56:46+00:00">As would templates (real ones &#8212; not your save-as-image work-a-round)</del> (Another feature that I missed in my few hours with Mockups. Awesome work guys!)</li>
<li>It would be nice to set background colors for containers or text boxes</li>
<li>The concept of multiple worksheets in a single project</li>
</ul>
<p>Thanks again to Balsamiq for making such a fantastic tool. Keep up the good work!</p>
<p>(Hopefully our team&#8217;s licenses will come in soon so I can stop worrying about my demo expiring!)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/akutz.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/akutz.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/akutz.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/akutz.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/akutz.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/akutz.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/akutz.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/akutz.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/akutz.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/akutz.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/akutz.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/akutz.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/akutz.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/akutz.wordpress.com/1027/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=1027&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://akutz.wordpress.com/2011/01/20/i-love-balsamiq-mockups/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">akutz</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/vsi-4-0-feature-manager.png" medium="image">
			<media:title type="html">VSI 4.0 - Feature Manager</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2011/01/vsphere-4-client-emc-vsi-home-view.png" medium="image">
			<media:title type="html">VSI 4.0 - Feature Manager - Mockup</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/vsi-4-0-symmetrix-sra-utilities.png" medium="image">
			<media:title type="html">VSI 4.0 - Symmetrix SRA Utilities</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2011/01/vsphere-4-client-emc-vsi-tab.png" medium="image">
			<media:title type="html">VSI 4.0 - Symmetrix SRA Utilities - Mockup</media:title>
		</media:content>
	</item>
		<item>
		<title>VSI 4.0, i18n, and Localization</title>
		<link>http://akutz.wordpress.com/2011/01/14/vsi-4-0-i18n-and-localization/</link>
		<comments>http://akutz.wordpress.com/2011/01/14/vsi-4-0-i18n-and-localization/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 15:56:40 +0000</pubDate>
		<dc:creator>akutz</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[localization]]></category>

		<guid isPermaLink="false">http://akutz.wordpress.com/?p=997</guid>
		<description><![CDATA[At least one EMC customer has reported issues with running VSI 4.0 on a system with a non-English locale. Unfortunately that is to be expected. I mentioned in a tweet a few days ago that VSI 4.0 does not currently support non-English locales at this time, and I&#8217;d like to take the opportunity to explain [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=997&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>At least one <a href="http://www.emc.com/">EMC</a> customer has reported issues with running VSI 4.0 on a system with a non-English locale. Unfortunately that is to be expected. I mentioned in a <a href="http://twitter.com/#!/sakutz/status/24440196338556928">tweet</a> a few days ago that VSI 4.0 does not currently support non-English locales at this time, and I&#8217;d like to take the opportunity to explain why.</p>
<p><span id="more-997"></span></p>
<h3>i18n</h3>
<p>For those of you not familiar with the process of creating internationally-useable applications, there are two distinct steps: internationalization (commonly abbreviated as <em>i18n</em>) and localization. The first step, i18n, is the process by which you prepare your application for the second step, localization. Preparing an  application for localization involves several steps:</p>
<ul>
<li>You must move all of your application&#8217;s strings, images, and even some visual formatting elements to one or more resource files. This decouples your application&#8217;s or assembly&#8217;s codebase from the information that may need to differ based on the culture of the user&#8217;s system running the application.</li>
<li>Additionally, not all cultures read from left-to-right. While it may be better to use a box/flow layout for designing user interfaces (UIs) in order to more easily support right-to-left layouts, this alternative to a fixed layout takes a substantially greater amount of development time.</li>
<li>While many cultures employ a phonetic alphabet, there are still many that rely on logographic languages. One such example is Nipponese where the word tree may be represented by a single symbol. So a warning message that consumes 100 pixels in England may in fact take up 300 pixels in Japan due to the width-additive nature of logographic scripts.</li>
</ul>
<p>The above steps are just three of the many areas where developers must be conscious of i18n compatibility. And making an application i18n compatible is not even half of the story. Next comes the process of localization.</p>
<h3>Localization</h3>
<p>Localizing an application is straight-forward if the i18n process was handled with care (although there are some <a href="http://akutz.wordpress.com/2011/01/12/i18n-f4n/">nasty issues</a> you can run into). Ideally localization involves creating resource files for each locale that you want to support. Each of these resource files should contain the appropriate, localized values for the same keys in your default resource file. For example, if the key &#8220;WelcomeText&#8221; contains a string value of &#8220;Hello&#8221;, then the key &#8220;WelcomeText&#8221; in the file Resources.fr.resx would contain a string value of &#8220;Bonjour.&#8221; However, while the process of creating the localized resource files is fairly trivial, it adds a substantial amount of testing time.</p>
<p>For every locale supported, a full test regiment must be developed to ensure that the correct strings are in place, layouts are correct, and that all of the formats used do not cause any exceptions. So while moving localizable resources into resource files does make localization much easier, it does nothing to relieve the burden of the testing that must occur for every locale.</p>
<h3>The Cost</h3>
<p>As you can see, i18n has a fairly set cost, but the cost of localization increases with every locale you support. The resources must be translated and tested. This means having a specialized team of people who speak many different languages and have knowledge of many different cultures in order to properly handle localization. Or you can out source the task to teams around the world. Regardless of how it is accomplished, it is not free.</p>
<p>And yet, VSI 4.0 <strong>is</strong> free. Free to all EMC customers in fact. We have tried extraordinarily hard to produce software that will make managing your EMC storage devices from the vSphere Client as simple as possible. And as much as it pains us to not support all of the locales of the world, it is not something we had the bandwidth to accomplish in tis one release cycle. It is the stated goal of our team to continue to not only produce outstanding software, but also move forward with localization efforts. We are working with management to make sure that EMC customers on every continent can enjoy the wonderful software that is VSI 4.0!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/akutz.wordpress.com/997/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/akutz.wordpress.com/997/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/akutz.wordpress.com/997/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/akutz.wordpress.com/997/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/akutz.wordpress.com/997/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/akutz.wordpress.com/997/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/akutz.wordpress.com/997/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/akutz.wordpress.com/997/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/akutz.wordpress.com/997/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/akutz.wordpress.com/997/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/akutz.wordpress.com/997/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/akutz.wordpress.com/997/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/akutz.wordpress.com/997/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/akutz.wordpress.com/997/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=997&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://akutz.wordpress.com/2011/01/14/vsi-4-0-i18n-and-localization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">akutz</media:title>
		</media:content>
	</item>
		<item>
		<title>i18n f4n</title>
		<link>http://akutz.wordpress.com/2011/01/12/i18n-f4n/</link>
		<comments>http://akutz.wordpress.com/2011/01/12/i18n-f4n/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 00:36:08 +0000</pubDate>
		<dc:creator>akutz</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[currentculture]]></category>
		<category><![CDATA[currentuiculture]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[localization]]></category>

		<guid isPermaLink="false">http://akutz.wordpress.com/?p=995</guid>
		<description><![CDATA[When designing EMC VSI 4.0, early on I made a decision that the entire core framework was going to be i18n compatible from the ground up. Unfortunately this led to colorful weekend. While this topic has been discussed time and time again, it&#8217;s so important that it bears repeating: just because your copy of Windows [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=995&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When designing <a href="https://akutz.wordpress.com/2010/12/22/emc-vsi-4-0/">EMC VSI 4.0</a>, early on I made a decision that the entire core framework was going to be i18n compatible from the ground up. Unfortunately this led to colorful weekend. While this topic has been discussed time and time again, it&#8217;s so important that it bears repeating: just because your copy of Windows is set to use a different region&#8217;s locale doesn&#8217;t mean that you&#8217;re not still using good &#8216;ol en-US when it counts.</p>
<p><span id="more-995"></span></p>
<p>As most .NET developers know, the <a href="http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx">System.Globalization.CultureInfo</a> class is the starting point at which you determine the locale of a process. The CultureInfo class has two properties: <a href="http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentculture.aspx">CurrentCulture</a> and <a href="http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentuiculture.aspx">CurrentUICulture</a>.</p>
<h3>CurrentCulture</h3>
<p>The CurrentCulture property reflects the locale of the executing thread. The current culture is controlled through the Control Panel&#8217;s &#8220;Regional and Language Options&#8221; screen:</p>
<div id="attachment_1001" class="wp-caption aligncenter" style="width: 421px"><a href="http://akutz.files.wordpress.com/2011/01/image001.png"><img src="http://akutz.files.wordpress.com/2011/01/image001.png?w=411&#038;h=489" alt="Regional and Language Options" title="Regional and Language Options" width="411" height="489" class="size-full wp-image-1001" /></a><p class="wp-caption-text">Regional and Language Options</p></div>
<p>When you set the system&#8217;s regional settings you are affecting the date and time, number, currency, and various other formats that the system uses. However, an important distinction to make is that changing a system&#8217;s region does not affect the language of the operating system (OS). The value of the regional setting is reflected in the CurrentCulture property in the .NET Framework. This value is important because as I mentioned it is used to determine many formats. One such example is the date/time format. Parsing a date/time string in the en-US (English) locale is different than parsing a date/time string using the nl-BE (Dutch) locale.</p>
<p>However, the CurrentCulture property has nothing to do with the most common aspect of .NET i18n preparation, the <a href="http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.aspx">Resource Manager</a>.</p>
<h3>CurrentUICulture</h3>
<p>The CurrentUICulture property is set to the locale returned by the Win32 API function <a href="http://msdn.microsoft.com/en-us/library/dd318137(v=vs.85).aspx">GetUserDefaultUILanguage</a> when the process is first started. The kicker is, though, that this low-level Windows function will return en-US despite what is configured in the &#8220;Regional and Language Options&#8221; control panel. The CurrentUICulture is only set to a non-English locale if:</p>
<ul>
<li>The Windows OS in question is a completely localized version of Windows built for a specific culture.</li>
<li>If it is using the <a href="http://technet.microsoft.com/en-us/library/cc721887(WS.10).aspx">Multi-Language User Interface (MUI) pack</a> and the MUI is set to use a language pack other than English.</li>
</ul>
<p>The CurrentUICulture is what determines what visual elements are shown to a user in Windows forms-based applications. More importantly than that, however, the CurrentUICulture property is what the .NET ResourceManager uses to load locale-appropriate resource files.</p>
<p>Remember, the CurrentCulture can be completely different than the CurrentUICulture, and the latter is only set under very specific circumstances. Maybe you can see where this is going.</p>
<h3>Th3 F4n P8rt</h3>
<p>It bears repeating:</p>
<ul>
<li>The CurrentCulture property determines what formats are used when displaying and parsing things like dates, currency, numbers, etc. It is per-thread and controlled via the &#8220;Regional and Language Options&#8221; control panel.</li>
<li>A completely separate property, CurrentUICulture, controls what visual elements are displayed to the user as well as what resource files are loaded for an assembly. This property is only set if the MUI is installed or a fully-localized version of Windows is being used.</li>
</ul>
<p>So what&#8217;s the problem? I&#8217;ll tell you. Imagine you&#8217;re a good, internationally-concious developer (like me) and you place a lot of color codes in a resource file so that localization teams can create satellite assemblies later on to customize an application&#8217;s appearance for a specific culture.</p>
<div id="attachment_1006" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2011/01/resources.png"><img src="http://akutz.files.wordpress.com/2011/01/resources.png?w=500&#038;h=284" alt="Color formats in a resources file" title="Color formats in a resources file" width="500" height="284" class="size-full wp-image-1006" /></a><p class="wp-caption-text">Color formats in a resources file</p></div>
<p>Well, as it turns out this is a quick way to crash an application.</p>
<p>Since the color codes are formatted as &#8220;R, G, B&#8221;, and some cultures, such as nl-BE, use a comma instead of a decimal point, these values are interpreted as 32-bit integers when using the <a href="http://msdn.microsoft.com/en-us/library/system.drawing.colorconverter.aspx">ColorConverter</a> class to convert them to color objects.</p>
<p>So a person with their &#8220;Regional and Language Options&#8221; locale set to &#8220;Dutch (Belgium)&#8221; will quickly receive an unhandled exception about &#8220;122, 122, 122&#8243; not being a valid 32-bit integer.</p>
<p>Ugh.</p>
<p>The solution seems simple enough, right? Create a file called &#8220;Resources.nl-be.resx&#8221; and override the offending color formats with locale-appropriate ones:</p>
<div id="attachment_1009" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2011/01/resources-nl-be-resx.png"><img src="http://akutz.files.wordpress.com/2011/01/resources-nl-be-resx.png?w=500&#038;h=205" alt="Resources.nl-BE.resx" title="Resources.nl-BE.resx" width="500" height="205" class="size-full wp-image-1009" /></a><p class="wp-caption-text">Resources.nl-BE.resx</p></div>
<p><strong>Note:</strong> For the record, the appropriate way to separate numerical values for locales that forgo decimal points is with a semi-colon instead of a comma.</p>
<p>The problem is apparent: I&#8217;m storing values affected by CurrentCulture in a resource file which is only loaded when its culture matches that of CurrentUICulture. And since the CurrentCulture can easily be different than CurrentUICulture, the result is that in Belgium this particular application will crash even though there is a perfectly good resource file. The reason is that many Windows systems in Belgium that use the nl-BE locale simply use the English version of Windows and set the regional settings, which in no way affects the CurrentUICulture and thus prevents any locale-specific resource files from loading.</p>
<p>So what&#8217;s the solution?</p>
<p>The easiest solution is to take advantage of the generated code that Visual Studio creates when you enable the default Resource file for an assembly. The <strong>Resources</strong> class that is created contains a property named <strong>Culture</strong>. In your assembly that contains the <strong>Resources</strong> add a method that allows external callers to set the <strong>Resources</strong> class&#8217;s <strong>Culture</strong> property (the Resource class itself is scoped as <strong>internal</strong>). This will allow callers to set the culture that is used by the ResourceManger (which again, uses CurrentUICulture by default) when resources are queried. Essentially you&#8217;re allowing others to synchronize the CurrentCulture and CurrentUICulture values for that resource file. However, while this solution does apply to all threads it does not apply to all resource files.</p>
<p>Of course, you can also set the static property <a href="http://msdn.microsoft.com/en-us/library/system.threading.thread.currentuiculture.aspx">System.Threading.Thread.CurrentThread.CurrentUICulture</a> to ensure that all ResourceManagers use the specified culture, but you&#8217;ll need to make sure that if you do that all threads have this set, not just the one on which the code is currently executing.</p>
<h3>It&#8217;s Worth It</h3>
<p>This may seem like a lot of work to support i18n preparation and localization efforts, but it&#8217;s worth it. Remember, we live in a big world, and you want to use software that you&#8217;re friends in Germany, Japan, and even <a href="http://en.wikipedia.org/wiki/Latveria">Latveria</a> create. So do unto others as you&#8217;d have them do unto you!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/akutz.wordpress.com/995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/akutz.wordpress.com/995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/akutz.wordpress.com/995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/akutz.wordpress.com/995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/akutz.wordpress.com/995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/akutz.wordpress.com/995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/akutz.wordpress.com/995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/akutz.wordpress.com/995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/akutz.wordpress.com/995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/akutz.wordpress.com/995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/akutz.wordpress.com/995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/akutz.wordpress.com/995/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/akutz.wordpress.com/995/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/akutz.wordpress.com/995/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=995&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://akutz.wordpress.com/2011/01/12/i18n-f4n/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">akutz</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2011/01/image001.png" medium="image">
			<media:title type="html">Regional and Language Options</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2011/01/resources.png" medium="image">
			<media:title type="html">Color formats in a resources file</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2011/01/resources-nl-be-resx.png" medium="image">
			<media:title type="html">Resources.nl-BE.resx</media:title>
		</media:content>
	</item>
		<item>
		<title>2010 in Review</title>
		<link>http://akutz.wordpress.com/2011/01/02/2010-in-review/</link>
		<comments>http://akutz.wordpress.com/2011/01/02/2010-in-review/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 17:04:00 +0000</pubDate>
		<dc:creator>akutz</dc:creator>
				<category><![CDATA[this]]></category>

		<guid isPermaLink="false">http://akutz.wordpress.com/?p=990</guid>
		<description><![CDATA[The stats helper monkeys at WordPress.com mulled over how this blog did in 2010, and here&#8217;s a high level summary of its overall blog health: The Blog-Health-o-Meter™ reads Wow. Crunchy numbers The average container ship can carry about 4,500 containers. This blog was viewed about 21,000 times in 2010. If each view were a shipping [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=990&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[
<p>The stats helper monkeys at WordPress.com mulled over how this blog did in 2010, and here&#8217;s a high level summary of its overall blog health:</p>
<p align="center"><img style="border:1px solid #ddd;background:#f5f5f5;padding:20px;" src="http://s0.wp.com/i/annual-recap/meter-healthy5.gif" width="250" height="183" alt="Healthy blog!"></p>
<p align="center">The <em>Blog-Health-o-Meter™</em> reads Wow.</p>
<h2>Crunchy numbers</h2>
<p>			<a href="http://akutz.files.wordpress.com/2010/03/simdk-architecture.png"><img src="http://akutz.files.wordpress.com/2010/03/simdk-architecture.png?w=288" alt="Featured image" style="max-height:230px;float:right;border:1px solid #ddd;background:#fff;margin:0 0 1em 1em;padding:6px;" /></a></p>
<p>The average container ship can carry about 4,500 containers.  This blog was viewed about <strong>21,000</strong> times in 2010.  If each view were a shipping container, your blog would have filled about 5 fully loaded ships.</p>
<p>
<p>In 2010, there were <strong>18</strong> new posts, growing the total archive of this blog to 62 posts. There were <strong>30</strong> pictures uploaded, taking up a total of 3mb. That&#8217;s about 3 pictures per month.</p>
<p>The busiest day of the year was March 10th with <strong>767</strong> views. The most popular post that day was <a style="color:#08c;" href="http://akutz.wordpress.com/2010/03/09/simdk/">SimDK</a>.</p>
<p></p>
<h2>Where did they come from?</h2>
<p>The top referring sites in 2010 were <strong>communities.vmware.com</strong>, <strong>ntpro.nl</strong>, <strong>serverfault.com</strong>, <strong>virtualizationadmin.com</strong>, and <strong>blogs.msdn.com</strong>.</p>
<p>Some visitors came searching, mostly for <strong>simdk</strong>, <strong>andrew kutz</strong>, <strong>backuppc archive</strong>, <strong>snow leopard ipfw rules example</strong>, and <strong>stylecopcmd</strong>.</p>
<div style="clear:both;"></div>
<h2>Attractions in 2010</h2>
<p>These are the posts and pages that got the most views in 2010.</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">1</div>
<p>					<a style="margin-right:10px;" href="http://akutz.wordpress.com/2010/03/09/simdk/">SimDK</a> <span style="color:#999;font-size:8pt;">March 2010</span><br />11 comments											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">2</div>
<p>					<a style="margin-right:10px;" href="http://akutz.wordpress.com/software/">Software</a> <span style="color:#999;font-size:8pt;">June 2008</span><br />22 comments											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">3</div>
<p>					<a style="margin-right:10px;" href="http://akutz.wordpress.com/2009/08/20/building-a-better-os-x-firewall-or-how-i-solved-the-nat-problem-for-virtualbox/">Building a Better OS X Firewall (or How I solved the NAT problem for VirtualBox)</a> <span style="color:#999;font-size:8pt;">August 2009</span><br />21 comments											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">4</div>
<p>					<a style="margin-right:10px;" href="http://akutz.wordpress.com/2010/03/11/a-simdk-virtual-appliance/">A SimDK Virtual Appliance</a> <span style="color:#999;font-size:8pt;">March 2010</span><br />27 comments											</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">5</div>
<p>					<a style="margin-right:10px;" href="http://akutz.wordpress.com/2010/03/10/how-to-vsphere-client-to-vcenter-using-http/">How To: vSphere Client to vCenter Using HTTP</a> <span style="color:#999;font-size:8pt;">March 2010</span><br />3 comments											</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/akutz.wordpress.com/990/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/akutz.wordpress.com/990/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/akutz.wordpress.com/990/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/akutz.wordpress.com/990/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/akutz.wordpress.com/990/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/akutz.wordpress.com/990/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/akutz.wordpress.com/990/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/akutz.wordpress.com/990/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/akutz.wordpress.com/990/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/akutz.wordpress.com/990/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/akutz.wordpress.com/990/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/akutz.wordpress.com/990/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/akutz.wordpress.com/990/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/akutz.wordpress.com/990/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=990&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://akutz.wordpress.com/2011/01/02/2010-in-review/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">akutz</media:title>
		</media:content>

		<media:content url="http://s0.wp.com/i/annual-recap/meter-healthy5.gif" medium="image">
			<media:title type="html">Healthy blog!</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/03/simdk-architecture.png?w=288" medium="image">
			<media:title type="html">Featured image</media:title>
		</media:content>
	</item>
		<item>
		<title>Cataclysm Cannot Control Them</title>
		<link>http://akutz.wordpress.com/2010/12/28/cataclysm-cannot-control-them/</link>
		<comments>http://akutz.wordpress.com/2010/12/28/cataclysm-cannot-control-them/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 02:40:05 +0000</pubDate>
		<dc:creator>akutz</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[blizzard]]></category>
		<category><![CDATA[cataclysm]]></category>
		<category><![CDATA[world of warcraft]]></category>
		<category><![CDATA[wow]]></category>

		<guid isPermaLink="false">http://akutz.wordpress.com/?p=986</guid>
		<description><![CDATA[I finally broke down and resubscribed to World of Warcraft. The reviews of Cataclysm were too good to not give a go, so I rolled a Worgen druid and off I went. And I really enjoyed the first 10 levels or so; the ones with story. Then I got dumped in Darnassus and it was [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=986&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I finally broke down and resubscribed to World of Warcraft. The reviews of Cataclysm were too good to not give a go, so I rolled a Worgen druid and off I went. And I really enjoyed the first 10 levels or so; the ones with story. Then I got dumped in Darnassus and it was the same old grind of game all over again. The reviews failed to mention this part. But the part that has me really bummed, and thinking of quitting again already is the other players.</p>
<p>At the university where I used to work, my colleagues and I would joke that the university would be a great place to work if it weren&#8217;t for the students. Obviously we saw the irony, and it was more of a comment on the behaviors we did not care for that the younger undergraduates typically displayed. On that note, World of Warcraft would be a fun game if it weren&#8217;t for the other players.</p>
<p>Hey Blizzard, is there some way you can add an option so that I only have to interact with players who are older than 25, have a full time job, families, and don&#8217;t live with their mom? You could call it a maturity or politeness filter. C&#8217;est la guerre I suppose, but it really does stink that an otherwise interesting experience is still ruined by people who have no room for those of us just trying to have fun. I guess when your life is so bad in the real world, it&#8217;s much easier to take a game so seriously.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/akutz.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/akutz.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/akutz.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/akutz.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/akutz.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/akutz.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/akutz.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/akutz.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/akutz.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/akutz.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/akutz.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/akutz.wordpress.com/986/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/akutz.wordpress.com/986/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/akutz.wordpress.com/986/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=986&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://akutz.wordpress.com/2010/12/28/cataclysm-cannot-control-them/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">akutz</media:title>
		</media:content>
	</item>
		<item>
		<title>EMC VSI 4.0</title>
		<link>http://akutz.wordpress.com/2010/12/22/emc-vsi-4-0/</link>
		<comments>http://akutz.wordpress.com/2010/12/22/emc-vsi-4-0/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 19:21:30 +0000</pubDate>
		<dc:creator>akutz</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[adapter]]></category>
		<category><![CDATA[emc]]></category>
		<category><![CDATA[integrator]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[recovery]]></category>
		<category><![CDATA[resource]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[unified]]></category>
		<category><![CDATA[viewer]]></category>
		<category><![CDATA[virtual]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[vsi]]></category>
		<category><![CDATA[vsphere]]></category>

		<guid isPermaLink="false">http://akutz.wordpress.com/?p=924</guid>
		<description><![CDATA[When I agreed to join EMC I was not sure what to expect. I&#8217;d worked in academia, a start-up, dabbled in reverse engineering, and contributed many projects to the open source community. However, EMC is unique with respect to all of the positions I&#8217;ve previously held or projects I&#8217;ve created. Higher education is a lot [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=924&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When I agreed to join <a href="http://www.emc.com/">EMC</a> I was not sure what to expect. I&#8217;d worked in <a href="http://www.utexas.edu/">academia</a>, a <a href="http://www.hyper9.com/">start-up</a>, dabbled in <a href="http://akutz.files.wordpress.com/2008/05/vi3progplugin-rev13.pdf">reverse</a> <a href="http://simdk.sourceforge.net/">engineering</a>, and <a href="http://sourceforge.net/projects/vip-svmotion/">contributed</a> many <a href="http://vangaea.sourceforge.net/">projects</a> to the <a href="http://uvapi.sourceforge.net/">open</a> <a href="http://sourceforge.net/projects/sudowin/">source</a> <a href="https://akutz.wordpress.com/2009/08/20/building-a-better-os-x-firewall-or-how-i-solved-the-nat-problem-for-virtualbox/">community</a>. However, EMC is unique with respect to all of the positions I&#8217;ve previously held or projects I&#8217;ve created. Higher education is a lot like open source, there is an implicit freedom &#8212; you get to play. A start-up is small and fast, and reverse engineering is all about figuring out how to gleam the rubik&#8217;s cube. EMC is the titan, the behemoth, the first IBM-like company that I decided to work for. Would I be consumed, or would I manage to stay relevant even as employee number 123456?</p>
<p>Eight months later, I have my answer. I&#8217;m tremendously proud to introduce to the world, in all its gory detail:</p>
<p><img src="http://akutz.files.wordpress.com/2010/12/emc-vsi-128x128.png?w=128&#038;h=128" alt="EMC VSI Icon" title="EMC VSI Icon" width="128" height="128" class="aligncenter size-full wp-image-953" style="border:0;" /></p>
<p style="text-align:center;"><a href="http://bit.ly/fl7ej3">EMC Virtual Storage Integrator (VSI) 4.0 for VMware vSphere</a></p>
<p><span id="more-924"></span></p>
<h2>History</h2>
<p>To understand how VSI 4.0 came into being requires a trip down memory lane. In 2008 one of EMCs most talented software engineers, Lee McColgan (whom I now have the pleasure of calling a colleague) decided he wanted to be able to identify the types of EMC devices attached to ESX hosts from within the vSphere Client. That is the moment that the VSI project was born. Initially known as StorageViewer, the 1.0 release of Lee&#8217;s software allowed users to see which <a href="http://www.emc.com/products/family/symmetrix-family.htm">Symmetrix</a> and <a href="http://www.emc.com/products/family/clariion-family.htm">CLARiiON</a> logical unit number (LUN) devices were members of a vSphere environment in vSphere contexts such as virtual machines (VMs), hosts, datastores, and raw device mappings (RDMs).</p>
<p>StorageViewer 1.0 was a hit among customers, and Lee released version 2.0 in 2009. The second release of StorageViewer added the ability to configure EMC&#8217;s Storage Replication Adapter (SRA) for VMware  <a href="http://www.vmware.com/products/site-recovery-manager/">Site Recovery Manager (SRM)</a> as well new <a href="http://www.emc.com/products/family/powerpath-family.htm">PowerPath</a> details such as the number of paths and path policy.</p>
<p>January 2010 marked a milestone for Lee&#8217;s once pet project. StorageViewer 2.0 became VSI 3.0, and transformed into more than just a read-only tool. With the help of Brian Partridge, a colleague of Lee&#8217;s, support was added for provisioning LUNs for datastores and RDMs, and storage quota management. But perhaps VSI 3.0&#8242;s greatest accomplishment was that it had become a portal with which other engineering groups wanted to integrate. Due to that desire, support for <a href="http://www.emc.com/products/family/celerra-family.htm">Celerra</a> was added by a cross-group effort between Lee and EMC engineers Josh Hutt and Scott Penrose at <a href="http://www.rtp.org/">Research Triangle Park</a>.</p>
<p>Some time in early 2010 an idea was conceived by EMC Vice President (VP) <a href="http://virtualgeek.typepad.com/">Chad Sakac</a>. Chad thought it would be really interesting if EMC could provide a tool to <a href="http://www.vmware.com/products/vmotion/">VMotion</a> VMs across once forbidden VMotion boundaries &#8212; to &#8220;teleport&#8221; them if you will. That&#8217;s where I come in. Chad contacted me to see if I would be interested in coming on board developing such a tool. It seemed like an interesting challenge, so I said &#8220;Sure, why not?&#8221; And so in April of 2010 I joined EMC.</p>
<p>Late in the development stages of this &#8220;teleport&#8221; tool I was asked to provide integration with VSI, and I began to chat with Lee on the subject. Up until this point external functionality had been integrated with VSI by other engineers simply sending Lee libraries and he&#8217;d implement user interfaces (UIs) for them. Lee and I discussed the problems this approach presented: forced synchronization of release cycles, development choke-points, hit-by-a-bus scenario, and so on and so forth. It was clear to me that we needed a better way to integrate new functionality into VSI.</p>
<p>And it was only going to get worse.</p>
<h2>Collaboration</h2>
<p>I find that the vast majority of the public have an impression of large companies or universities that is in complete contradiction to the truth. When a cable appears on the <a href="http://www.ap.org/">Associated Press</a> news wire about EMC or a major university most readers have in mind that an entire organization is being represented. While this may be technically true, there may in fact be only a handful of people responsible for the new item. Or in a lot of cases, there can be several groups spread out across the organization that came together in a collaborative effort to produce something newsworthy. Whatever the case may be, an organization is the sum of its parts, and those parts are not part of a single hive mind. There is politicking. People have to work together. While technology can&#8217;t solve all problems, the right tools <strong>can</strong> make collaboration easier.</p>
<p>And collaborate VSI must. Unlike some other information-focused organizations, EMC is responsible for a wide range of products that integrate with vSphere, from Small to Medium Businesses (SMBs) all the way up to the largest of enterprises. Our family of storage products includes the aforementioned CLARiiON, Celerra, and Symmetrix devices, and in 2010 EMC introduced the the world to its next-generation storage architecture, <a href="http://www.emc.com/products/family/vplex.htm">VPLEX</a>. Not to mention one of the industry&#8217;s most talked about back-up solutions, <a href="http://www.emc.com/products/family/avamar-family.htm">Avamar</a>. And VSI needs to expose all of this technology through the vSphere client.</p>
<p>Clearly one or two engineers cannot be domain experts when it comes to such a plethora of information technologies, so the burden must be shouldered by those who do have the expertise. But as I mentioned, the previous integration model would simply not scale. A new approach was needed.</p>
<p>Enter <strong>VSI 4.0</strong>!</p>
<h3>Framework</h3>
<p>The vSphere client already provides an extensive <a href="http://www.vmware.com/support/developer/vc-sdk/vcplugin/">plug-in framework</a> for partners whom wish to integrate with VMware&#8217;s enterprise management client. However, in order to facilitate easy, stable, and rapid collaboration amongst the many groups at EMC, VSI had to become more than a plug-in; it needed to itself be a framework. And so, that is what VSI has transformed into: a framework for other EMC engineers to leverage in order to develop their Features.</p>
<div id="attachment_948" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.wordpress.com/2010/12/22/emc-vsi-4-0/vsi40/" rel="attachment wp-att-948"><img src="http://akutz.files.wordpress.com/2010/12/vsi40.png?w=500&#038;h=227" alt="VSI 4.0 Framework" title="VSI 4.0 Framework" width="500" height="227" class="size-full wp-image-948" /></a><p class="wp-caption-text">VSI 4.0 Framework</p></div>
<p>VSI 4.0 includes all of the previous functionality of VSI, but this time each piece of functionality is its own Feature that can be updated on completely different release schedules. At the same time, while the VSI 4.0 Framework was designed to decouple discreet units of functionality, it also brings them closer together than ever before by providing a common UI control library, logging and persistence managers, and an inter-Feature communication protocol. Where once many separate context menu items and tabs appeared on behalf of EMC, VSI 4.0 organizes all EMC-provided functionality under a single context menu item &#8220;EMC&#8221; and a single tab &#8220;EMC VSI&#8221;.</p>
<p>The Framework itself stays out of the way for the most part. VSI is all about the Features. There are occasions where you will encounter the core components of VSI, such as the Feature Manager, a tool that can be used to enable, disable, and uninstall Features.</p>
<div id="attachment_968" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2010/12/vsi-4-0-feature-manager.png"><img src="http://akutz.files.wordpress.com/2010/12/vsi-4-0-feature-manager.png?w=500&#038;h=348" alt="VSI 4.0 - Feature Manager" title="VSI 4.0 - Feature Manager" width="500" height="348" class="size-full wp-image-968" /></a><p class="wp-caption-text">VSI 4.0 - Feature Manager</p></div>
<p>If a Feature or the Framework is not behaving properly a user can adjust logging directly in the vSphere client for the entire Framework or a particular Feature.</p>
<div id="attachment_958" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2010/12/vsi-4-0-logging4.png"><img src="http://akutz.files.wordpress.com/2010/12/vsi-4-0-logging4.png?w=500&#038;h=348" alt="VSI 4.0 - Logging" title="VSI 4.0 - Logging" width="500" height="348" class="size-full wp-image-958" /></a><p class="wp-caption-text">VSI 4.0 - Logging</p></div>
<p>The VSI 4.0 Framework is even backwards compatible with older vSphere 4.x plug-ins through a process I refer to as &#8220;adoption.&#8221; Customers using vSphere 4.x plug-ins designed by EMC that have not yet been fully reengineered for VSI 4.0 can easily load the plug-ins into the VSI 4.0 Framework. Simply move the plug-in&#8217;s folder from the vSphere <em>Plugins</em> directory to the VSI 4.0 Framework&#8217;s <em>Features</em> directory, located by default at <em>%ProgramFiles%\EMC\Virtual Storage Integrator\vSphere4\Features\</em>.</p>
<span style="text-align:center; display: block;"><a href="http://akutz.wordpress.com/2010/12/22/emc-vsi-4-0/"><img src="http://img.youtube.com/vi/DW9AMB_ef30/2.jpg" alt="" /></a></span>
<h2>Features</h2>
<p>Along with a shiny new engine under the hood, VSI 4.0 includes all of its previous functionality and then some!</p>
<ul>
<li><strong>Path Management</strong> (Lee McColgan) &#8211; Enables the user to set VMware vSphere native multipath driver (NMP) and PowerPath/VE multipath policies for hosts and clusters.<br />
<div id="attachment_960" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2010/12/vsi-4-0-path-management.png"><img src="http://akutz.files.wordpress.com/2010/12/vsi-4-0-path-management.png?w=500&#038;h=348" alt="VSI 4.0 - Path Management" title="VSI 4.0 - Path Management" width="500" height="348" class="size-full wp-image-960" /></a><p class="wp-caption-text">VSI 4.0 - Path Management</p></div>
</li>
<li><strong>Storage Viewer</strong> (Lee McColgan) &#8211; Provides storage mapping and reporting for VMware vSphere objects across all EMC storage platforms.
<p><div id="attachment_961" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2010/12/vsi-4-0-storage-viewer.png"><img src="http://akutz.files.wordpress.com/2010/12/vsi-4-0-storage-viewer.png?w=500&#038;h=348" alt="VSI 4.0 - Storage Viewer" title="VSI 4.0 - Storage Viewer" width="500" height="348" class="size-full wp-image-961" /></a><p class="wp-caption-text">VSI 4.0 - Storage Viewer</p></div>
</li>
<li><strong>Storage Pool Management</strong> (Brian Partridge &amp; Lee McColgan) &#8211; Brings EMC Symmetrix storage resources closer to being a first class citizen in a VMware vSphere environment by allowing the user to provision storage (LUNs for datastores and RDMs) as a shared resource within the virtual datacenter. Quota management and automated provisioning allow storage resources to appear like the default compute resources (CPU &amp; RAM) in a vSphere Client.<br />
<div id="attachment_963" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2010/12/vsi-4-0-storage-pool-management.png"><img src="http://akutz.files.wordpress.com/2010/12/vsi-4-0-storage-pool-management.png?w=500&#038;h=348" alt="VSI 4.0 - Storage Pool Management" title="VSI 4.0 - Storage Pool Management" width="500" height="348" class="size-full wp-image-963" /></a><p class="wp-caption-text">VSI 4.0 - Storage Pool Management</p></div>
</li>
<li><strong>Symmetrix SRA Utilities</strong> (Brian Partridge, Vibhu Bontala, &amp; Joe Russo) &#8211; Aids in the setup and configuration of EMC Symmetrix device pairs for VMware SRM failover and provides VMware SRM with its missing failback functionality.  Failback gets your production environment up and running again quickly and easily.<br />
<div id="attachment_971" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2010/12/vsi-4-0-symmetrix-sra-utilities.png"><img src="http://akutz.files.wordpress.com/2010/12/vsi-4-0-symmetrix-sra-utilities.png?w=500&#038;h=348" alt="VSI 4.0 - Symmetrix SRA Utilities" title="VSI 4.0 - Symmetrix SRA Utilities" width="500" height="348" class="size-full wp-image-971" /></a><p class="wp-caption-text">VSI 4.0 - Symmetrix SRA Utilities</p></div>
</li>
<li><strong>Unified Storage Management</strong> (Josh Hutt, Scott Penrose, &amp; Noel Curtis) &#8211; With support for both the CLARiiON and Celerra families, this Feature enables efficient provisioning of datastores, hardware accelerated VM cloning, storage optimization up to 50%, hardware assisted VM locking, data protection, and disaster recovery.<br />
<div id="attachment_962" class="wp-caption aligncenter" style="width: 510px"><a href="http://akutz.files.wordpress.com/2010/12/vsi-4-0-unified-storage.png"><img src="http://akutz.files.wordpress.com/2010/12/vsi-4-0-unified-storage.png?w=500&#038;h=348" alt="VSI 4.0 - Unified Storage Management" title="VSI 4.0 - Unified Storage Management" width="500" height="348" class="size-full wp-image-962" /></a><p class="wp-caption-text">VSI 4.0 - Unified Storage Management</p></div>
</li>
</ul>
<h3>Symphony</h3>
<p>If you&#8217;ve ever experienced the auditory delicacy of basking in the sounds of a symphony orchestra you know that during the performance you tried, at least once, to listen to a single instrument &#8212; and found it nearly impossible to do so. A quality orchestra is so in sync that it is almost impossible to distinguish the parts from the whole. This type of unity is what we&#8217;ve tried to achieve with EMC&#8217;s VSI 4.0. While its Features are still built by many different engineers, we think that through our unique approach to collaboration, both away from and in front of our integrated development environments (IDEs), has resulted in a software package that is as beautiful as a symphony. VSI 4.0 may be a sum of its parts, but we hope you can&#8217;t tell.</p>
<p>If you have any questions about EMC VSI 4.0 please don&#8217;t hesitate to  drop me an <a href="mailto:schley.kutz@emc.com">e-mail</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/akutz.wordpress.com/924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/akutz.wordpress.com/924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/akutz.wordpress.com/924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/akutz.wordpress.com/924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/akutz.wordpress.com/924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/akutz.wordpress.com/924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/akutz.wordpress.com/924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/akutz.wordpress.com/924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/akutz.wordpress.com/924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/akutz.wordpress.com/924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/akutz.wordpress.com/924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/akutz.wordpress.com/924/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/akutz.wordpress.com/924/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/akutz.wordpress.com/924/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=924&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://akutz.wordpress.com/2010/12/22/emc-vsi-4-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">akutz</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/emc-vsi-128x128.png" medium="image">
			<media:title type="html">EMC VSI Icon</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/vsi40.png" medium="image">
			<media:title type="html">VSI 4.0 Framework</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/vsi-4-0-feature-manager.png" medium="image">
			<media:title type="html">VSI 4.0 - Feature Manager</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/vsi-4-0-logging4.png" medium="image">
			<media:title type="html">VSI 4.0 - Logging</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/vsi-4-0-path-management.png" medium="image">
			<media:title type="html">VSI 4.0 - Path Management</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/vsi-4-0-storage-viewer.png" medium="image">
			<media:title type="html">VSI 4.0 - Storage Viewer</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/vsi-4-0-storage-pool-management.png" medium="image">
			<media:title type="html">VSI 4.0 - Storage Pool Management</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/vsi-4-0-symmetrix-sra-utilities.png" medium="image">
			<media:title type="html">VSI 4.0 - Symmetrix SRA Utilities</media:title>
		</media:content>

		<media:content url="http://akutz.files.wordpress.com/2010/12/vsi-4-0-unified-storage.png" medium="image">
			<media:title type="html">VSI 4.0 - Unified Storage Management</media:title>
		</media:content>
	</item>
		<item>
		<title>Internet Sandboxes and Digital Signatures</title>
		<link>http://akutz.wordpress.com/2010/12/20/internet-sandboxes-and-digital-signatures/</link>
		<comments>http://akutz.wordpress.com/2010/12/20/internet-sandboxes-and-digital-signatures/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 23:14:50 +0000</pubDate>
		<dc:creator>akutz</dc:creator>
				<category><![CDATA[security]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[badimageformatexception]]></category>
		<category><![CDATA[digital certificates]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[exe]]></category>
		<category><![CDATA[force]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[ieexec]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[sandbox]]></category>
		<category><![CDATA[securityexception]]></category>

		<guid isPermaLink="false">http://akutz.wordpress.com/?p=893</guid>
		<description><![CDATA[I&#8217;m super excited because after eight months at EMC, I&#8217;m a part of my first software release, EMC Virtual Storage Integrator (VSI) 4.0 for VMware vSphere. VSI 4.0 not only contains all of the functionality of previous incarnations, it also represents a completely new approach to cross-team collaboration and feature interoperability. Stay tuned for an [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=893&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m super excited because after eight months at <a href="http://www.emc.com/">EMC</a>, I&#8217;m a part of my first software release, EMC Virtual Storage Integrator (VSI) 4.0 for VMware vSphere. VSI 4.0 not only contains all of the functionality of previous incarnations, it also represents a completely new approach to cross-team collaboration and feature interoperability. Stay tuned for an upcoming post all about VSI 4.0!</p>
<p>This post, however, is all about two issue we ran into when we released VSI 4.0 to industry insiders. Right off the bat people had problems downloading the installers. One person even had an issue running the installer because of the operating system&#8217;s restrictive security settings. This is known as &#8220;The Caper of the Internet Sandboxes and Digital Signatures!&#8221;</p>
<p><span id="more-893"></span></p>
<h3>Internet Sandboxes</h3>
<p>The first problem that we encountered prevented some users from downloading our installers from <a href="https://powerlink.emc.com/">PowerLink</a>, EMC&#8217;s software distribution platform. Our installers are built using a .NET installer technology and <del datetime="2010-12-20T15:25:35+00:00">are</del> were (now they are zipped up to prevent the discussed issue from occurring) portable execution images (EXE files). When attempting to download the installers customers found that Internet Explorer (IE) would simply hang and eventually crash. Other browsers, however, worked without issue. I managed to reproduce the issue using the following systems:</p>
<p><strong>Download Hangs</strong></p>
<ul>
<li>Windows 2003 Server x86 with IE8</li>
<li>Windows 2008 Server R2 x64 with IE9</li>
<li>Windows XP SP3</li>
</ul>
<p><strong>Download Succeeds</strong></p>
<ul>
<li>Windows XP SP3 x86 with IE8</li>
<li>Windows 2003 Server x86 with IE8</li>
<li>Windows 2008 Server R2 x64 with IE8</li>
</ul>
<p>As you can see there does not seem to be a commonality between OS or browser versions. The downloads simply hung on some systems and not others. I even moved the file to multiple web servers (both IIS and Apache) to rule out a server issue, and attempting to download the EXE from any web server on a system that failed would always fail. So it&#8217;s definitely a client-side issue. Not only that, but it is an issue that is specific to .NET EXEs, as existing EXEs produced with C++ were not exhibiting the same issue.</p>
<p>At this point I decided to take our own EXEs out of the equation since they are both digitally signed (more on this later) as well as <a href="http://community.bartdesmet.net/blogs/bart/archive/2006/10/28/Windows-Vista-_2D00_-Demand-UAC-elevation-for-an-application-by-adding-a-manifest-using-mt.exe.aspx">embedded with a special manifest</a> which demands User Access Control (UAC) privilege elevation. I created a brand new .NET 3.5 Console Application using Visual Studio 2010 and added no additional code beyond the boiler-plate code inserted by Visual Studio. I compiled the application as <em>TestExe.exe</em> and placed it on a web server. It too exhibited the same symptoms as the VSI 4.0 EXEs.</p>
<p>On Windows 2008 Server an actual error would occur as opposed to the browser simply crashing on Windows 2003 Server, and I was able to gain further insight into the underlying problem. We were receiving errors such as <a href="http://msdn.microsoft.com/en-us/library/system.badimageformatexception.aspx">System.BadImageFormatException</a> and <a href="http://msdn.microsoft.com/en-us/library/system.security.securityexception.aspx">System.Security.SecurityException</a>. It was then that I noticed the errors were not being thrown from the <em>iexplore.exe</em> process (as expected, since that is the image that spawns the IE process), but rather an image that I  had not heard of until Saturday, <em>ieexec.exe</em>.</p>
<p>It turns out that <em>ieexec.exe</em> is a program that <a href="http://support.microsoft.com/kb/822485">IE uses to host remote programs</a> in an &#8220;Internet Sandbox&#8221;. This is where my debugging of the issue spun off into many unproductive tangents. The most promising one (at first) centered around the <a href="http://social.msdn.microsoft.com/Forums/en/netfx64bit/thread/28f7e369-d5d1-43b9-b0f4-2b81089ad2d5">idea</a> the type of <a href="http://www-01.ibm.com/support/docview.wss?uid=swg21398266">processor</a> <a href="http://social.msdn.microsoft.com/Forums/en/phoenix/thread/9a43e9a1-a744-4a1a-bb34-3604254c126b">architecture</a> that <em>ieexec.exe</em> was compiled for versus the EXEs that were being download. The platform architecture angle turned out to be a bust, specifically since I was able to reproduce the issue on x86 systems.</p>
<p>However, investigating the aforementioned possibility did cause me to use <a href="http://technet.microsoft.com/en-us/sysinternals/bb896653">Process Explorer</a> to filter <em>ieexec.exe</em> during a download attempt. And what I found surprised me! The files were in fact being downloaded in their entirety and then <em>ieexec.exe</em> was crashing.</p>
<p>It dawned on me that <em>ieexec.exe</em> was treating these EXEs as remote programs that should be launched directly instead of saved to disk. And of course the programs would throw exceptions upon launch because executing an image from a remote web server would violate just about every .NET security policy known to man!</p>
<p>To prove my theory I relaxed the security on the system by turning it off with the <a href="http://msdn.microsoft.com/en-us/library/cb6t8dtz(v=vs.80).aspx">caspol.exe</a> tool. And voila! Clicking on a link to my <em>TestExe.exe</em> application caused a command prompt to briefly appear and vanish &#8212; the application had been successfully hosted from within <em>ieexec.exe</em>. Not only that, but I could also launch my installers. Of course, this was not a permanent solution for customers, and it certainly did not explain why IE was treating these EXEs as remote programs instead of simply downloading them. Isn&#8217;t an EXE on a web server simply an octet stream that is saved to disk?</p>
<p>Luckily, thinking along these lines led me to the following StackOverflow <a href="http://stackoverflow.com/questions/3579930/force-file-download-prompt-in-ie-for-net-executable">post</a>. It turns out that .NET installs a client plug-in into IE that examines the stream of remote EXE images to determine if they are CLR code. If so they then are not treated like regular downloads, instead they are hosted as remote programs inside of <em>ieexec.exe</em>. Just one more reason not to use IE in my opinion.</p>
<p>So what is the solution? There are a few:</p>
<ul>
<li>Don&#8217;t use IE. Although IE8 and 9 are pretty good browsers, they are still too intertwined with the OS to treat the web as a remote resource. Issues like this one illustrate that well. <a href="http://www.google.com/chrome/">Chrome</a> is a great, light-weight browser. I use <a href="http://www.apple.com/safari/">Safari</a> myself.</li>
<li>As the aforementioned StackOverflow article mentions, add a <em>Content-disposition</em> header to all .NET EXEs. You can test this out on my web server. I created a <a href="http://files.lostcreations.com/dotnetexe.html">page</a> where you can download <em>TestExe.exe</em> with the header and <em>TestExe2.exe</em> without the header. On systems that fail, the second link will not work while the first one will.</li>
<li>Zip any .NET EXEs you post for download. This is probably the best solution.</li>
</ul>
<p>I&#8217;m still not sure why this bug? occurs on some systems when it doesn&#8217;t on others. It seems to me that the MIME type filter that is installed inside of IE by .NET should be present on all Windows systems, but clearly there is some specific set of settings that cause .NET EXEs to be treated differently on different systems. For what it&#8217;s worth, I was also able to resolve the issue by playing around with client-side security settings, but never found a universal answer.</p>
<h3>Digital Signatures</h3>
<p>Once we rectified the download issue we were faced with yet another fun problem. It seems that the digital signature we signed our installers with was not valid according to one of our early adopters.</p>
<p>Now, I have to take a minute and point out that we have a fairly rigorous testing process. Before our software is ever distributed to customers it runs on all of the engineers&#8217; systems, goes through Design and Verification Testing (DVT), Quality Assurance (QA), and finally some of our sales staff and vSpecialists take it for a spin. Not to mention that some of the functionality we develop is also certified by VMware. So you can see, we don&#8217;t develop in a vacuum. The fact that we ran into the download issue caught us off guard, but I think the issue with digital signatures did even more so.</p>
<p>Regardless, the evidence was explicit, the signature chain did not appear valid on one of customer&#8217;s systems. Normally this isn&#8217;t a problem, as only Windows drivers by default require valid digital signatures to be installed. However, on this particular system the security was restrictive enough to prevent the user from installing VSI 4.0. Obviously this is not a good thing.</p>
<p>It turns out that the Thawte-provided code signing certificate is issued by an intermediate certificate authority (CA) with a common name (CN) of <em>Thawte Code Signing CA</em> which is not present on Windows systems by default. The code signing CA is issued by the <em>Thawte Premium Server CA</em>, which <strong>is</strong> installed by default on Windows systems via Microsoft security updates. Thus, the digital signatures appear as invalid because the intermediate CA in the chain is not present on most users&#8217; systems.</p>
<p>Why wasn&#8217;t this caught in testing? Simply put, most of the time an invalid signature chain won&#8217;t prevent you from installing software, but given the right security constraints it can. That singular case managed to pop up. What can we/you do about it? Glad you asked.</p>
<ul>
<li>Customers who encounter issues with the digital signature with VSI 4.0 should follow the instructions posted at the following <a href="https://search.thawte.com/support/ssl-digital-certificates/index?page=content&amp;id=AR1492">Thawte knowledge base (KB) article</a>. This particular article also states that the absence of the intermediate CA shouldn&#8217;t prevent the EXE from running, but clearly it can if the security is restrictive enough.</li>
<li>Future versions of VSI 4.0 will include the <em>Thawte Code Signing CA</em> as part of their digital signature&#8217;s certificate chain. This will cause the digital signature to be valid without any action taken on the part of a user since the chain will be valid on their system since they already have the root certificate that issued the intermediate code signing certificate.</li>
</ul>
<p>Both solutions aside, most customers won&#8217;t have this issue. As I mentioned above, the installers were tested quite thoroughly prior to release. This particular error will only occur on a very small sub-set of uber security-conscious users&#8217; systems (I&#8217;m looking at you <a href="http://www.itworld.com/edward-haletky">Ed Haletky</a>!).</p>
<p>If you&#8217;re curious as to why the intermediate CA was not included in 4.0 release&#8217;s digital signatures, the answer is simple &#8212; the <a href="http://msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.80).aspx">signtool.exe</a> utility from Microsoft does not include an option to do so from the command line. It turns out, however, if the PFX container contains the intermediate CA in addition to the public and private key of the signing certificate, or if the Local Computer&#8217;s<em> Intermediate Certificate Authorities</em> store contains the <em>Thawte Code Signing CA</em> at the time of the signing, the intermediate CA is automatically included in the signature. We&#8217;ve added the intermediate CA to the <em>Intermediate Certification Authorities</em> store on our build agent, so future installers will ship with enough of the certificate chain to validate it.</p>
<h3>Conclusion</h3>
<p>Having my first release out the door feels great. Hopefully the lessons I learned from it can benefit others in the future. I had a heck of a time finding the answers to these two problems in particular, so maybe with this blog post out there, Google has been kinder to you if you&#8217;re reading this now.</p>
<p>Hope this helps!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/akutz.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/akutz.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/akutz.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/akutz.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/akutz.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/akutz.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/akutz.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/akutz.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/akutz.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/akutz.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/akutz.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/akutz.wordpress.com/893/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/akutz.wordpress.com/893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/akutz.wordpress.com/893/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=akutz.wordpress.com&amp;blog=3768802&amp;post=893&amp;subd=akutz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://akutz.wordpress.com/2010/12/20/internet-sandboxes-and-digital-signatures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">akutz</media:title>
		</media:content>
	</item>
	</channel>
</rss>
