<?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"
	>

<channel>
	<title>sides of march &#187; Technology</title>
	<atom:link href="http://www.sidesofmarch.com/index.php/archive/category/technology/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sidesofmarch.com</link>
	<description>Thoughts on life, liberty, and information technology</description>
	<pubDate>Tue, 02 Mar 2010 15:21:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Forcing users to choose a browser other than Internet Explorer doesn&#8217;t help them</title>
		<link>http://www.sidesofmarch.com/index.php/archive/2010/03/02/forcing-users-to-choose-a-browser-other-than-internet-explorer/</link>
		<comments>http://www.sidesofmarch.com/index.php/archive/2010/03/02/forcing-users-to-choose-a-browser-other-than-internet-explorer/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 15:15:05 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Browsers]]></category>

		<category><![CDATA[Internet Explorer]]></category>

		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.sidesofmarch.com/?p=423</guid>
		<description><![CDATA[In the news this morning, I stumbled across an article, EU: 100 million Microsoft users to choose browser. Reading this, there were a few instances of questionable logic.
The first instance (emphasis added):
Microsoft is starting this month to send updates to Windows computers in Europe so that when computer users log on, they will see a [...]]]></description>
			<content:encoded><![CDATA[<p>In the news this morning, I stumbled across an article, <em><a href="http://www.google.com/hostednews/ap/article/ALeqM5hG2CfCNAqdPhFu-F-Ubnx7ZCBNhgD9E6GL7G0">EU: 100 million Microsoft users to choose browser</a></em>. Reading this, there were a few instances of questionable logic.</p>
<p>The first instance (emphasis added):</p>
<blockquote><p>Microsoft is starting this month to send updates to Windows computers in Europe so that when computer users log on, they will see a pop-up screen asking them to <strong>pick one or more of 12 free Web browsers</strong> to download and install, including Microsoft.</p></blockquote>
<p>Microsoft is allowing users to choose one of more than 12 <strong>free</strong> web browsers, because the EU didn’t like Microsoft bundling its own <strong>free</strong> web browser into Windows. Call me strange, but punishing a company to give something away for free because it blocks out other companies from giving their own products away for free strikes me as odd.</p>
<p>The second instance (emphasis added):</p>
<blockquote><p>The EU&#8217;s executive commission said giving consumers the chance to try an alternative to Microsoft&#8217;s Internet Explorer browser that comes with the widely used Windows operating system would &#8220;<strong>bring more competition and innovation in this important area</strong>.&#8221;</p></blockquote>
<p>Wait, didn’t we just read that there are “more than 12 free web browsers”? That doesn&#8217;t sound like lack of competition and innovation to me at all. How many industries offer a choice of over a dozen free items? None that I can think of.</p>
<p><a href="http://www.sidesofmarch.com/wp-content/uploads/webbrowsermarketshare.png"><img style="border-bottom: 0px; border-left: 0px; margin: 8px 0px 16px 16px; display: inline; border-top: 0px; border-right: 0px" title="web-browser-market-share" src="http://www.sidesofmarch.com/wp-content/uploads/webbrowsermarketshare-thumb.png" border="0" alt="web-browser-market-share" width="424" height="164" align="right" /></a>I am aware of Microsoft’s predatory practices in the web browser arena, particularly related to the <a title="Browser wars (Wikipedia)" href="http://en.wikipedia.org/wiki/Browser_wars">browser wars</a> between them and Netscape. Microsoft muscled out Netscape by giving away its browser for free, something <a title="Netscape cuts prices on retail products (CNet News)" href="http://news.cnet.com/2100-1001-207681.html">Netscape didn’t do until early 1998</a>. Isn’t that a good thing for consumers? Further, client software (such as Navigator) was a small portion of Netscape’s revenues, and at the time, “Netscape has successfully shifted its business over the past year toward enterprise software sales and to revenues from its Web site business, and away from standalone client revenues” (<a title="January 22, 1998 — the Beginning of Mozilla (Mitchell's Blog)" href="http://blog.lizardwrangler.com/2008/01/22/january-22-1998-the-beginning-of-mozilla/">source: Mitchell&#8217;s Blog</a>). If Netscape was successful in transitioning away from a client product, but ultimately failed in the enterprise marketplace, why is Microsoft being punished?</p>
<p>In the end, Microsoft was penalized for providing a product for free – and forcing the market leader to ultimately transform their business (“successfully”) and offer their own (similar) product for free. The fact is, <strong>Microsoft’s efforts were largely responsible for the explosion of free web browser alternatives</strong> – yet the EU still feels a need to punish them because there is “[not enough] competition and innovation in this area,” as they say.</p>
<p>Final point: let’s not mention the <strong>pain and suffering that novice users will have</strong> after installing other browsers, wondering where their bookmarks went, and wondering why they are being prompted to <a title="The video won't play: Video Player Issues (YouTube Help)" href="http://www.google.com/support/youtube/bin/answer.py?hl=en&amp;answer=56115">(re-)install Adobe Flash so they can play YouTube videos</a>.</p>
<p>Some things are better left alone. This is one of them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sidesofmarch.com/index.php/archive/2010/03/02/forcing-users-to-choose-a-browser-other-than-internet-explorer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Technology quote of the Day</title>
		<link>http://www.sidesofmarch.com/index.php/archive/2009/11/19/technology-quote-of-the-day/</link>
		<comments>http://www.sidesofmarch.com/index.php/archive/2009/11/19/technology-quote-of-the-day/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 03:40:46 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.sidesofmarch.com/index.php/archive/2009/11/19/technology-quote-of-the-day/</guid>
		<description><![CDATA[“Optimize your code for maintainability before optimizing for performance.” – Matthew Cochran, Microsoft MVP
So true… it deserves its place right next to YAGNI!
]]></description>
			<content:encoded><![CDATA[<p>“Optimize your code for maintainability before optimizing for performance.” – Matthew Cochran, <a href="https://mvp.support.microsoft.com/profile=0310062F-27D8-40B8-AF1C-FA809A338173">Microsoft MVP</a></p>
<p>So true… it deserves its place right next to <a href="http://en.wikipedia.org/wiki/You_ain%27t_gonna_need_it">YAGNI</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sidesofmarch.com/index.php/archive/2009/11/19/technology-quote-of-the-day/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Visual Studio hosting process and 64-bit Windows</title>
		<link>http://www.sidesofmarch.com/index.php/archive/2009/11/02/the-visual-studio-hosting-process-and-64-bit-windows/</link>
		<comments>http://www.sidesofmarch.com/index.php/archive/2009/11/02/the-visual-studio-hosting-process-and-64-bit-windows/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 13:50:24 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[COM]]></category>

		<category><![CDATA[debugging]]></category>

		<category><![CDATA[MSTest]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.sidesofmarch.com/?p=395</guid>
		<description><![CDATA[I&#8217;ve recently started working with Outlook Redemption, an excellent alternative to direct MAPI calls. Some of the other devs on my team wrote some libraries that use it, complete with unit tests. All the code and unit tests run fine on my machine (VS2008, 64-bit Windows).

          [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently started working with <a href="http://www.dimastr.com/redemption">Outlook Redemption</a>, an excellent alternative to direct MAPI calls. Some of the other devs on my team wrote some libraries that use it, complete with unit tests. All the code and unit tests run fine on my machine (VS2008, 64-bit Windows).</p>
<div style="float:right; margin: 1em 0 1em 1em;">
<pre>                     /"\
                    |\./|
                    |   |
                    |   |
                    |&gt;~&lt;|
                    |   |
                 /'\|   |/'\..
             /~\|   |   |   | \
            |   =[@]=   |   |  \
            |   |   |   |   |   \
            | ~   ~   ~   ~ |`   )
            |                   /
             \                 /
              \               /
               \    _____    /
                |&#8211;//&#8221;`\&#8211;|
                | (( +==)) |
                |&#8211;\_|_//&#8211;|</pre>
</div>
<p>In order to illustrate some functionality, I needed to write a simple console application that used the code that these other devs wrote, so I referenced it and tried it&#8230; and was given an exception (the computer version of the middle finger):</p>
<blockquote><p>Unhandled Exception: System.Runtime.InteropServices.COMException (0&#215;80040154): Retrieving the COM class factory for component with CLSID {29AB7A12-B531-450E-8F7A-EA94C2F3C05F} failed due to the following error: 80040154.</p></blockquote>
<p>My first instinct was to search through the registry for the CLSID. Sure enough, it was there, and everything looked right. It has to be &#8212; otherwise, the unit tests (which use the <em>exact same code</em>) wouldn&#8217;t work.</p>
<p>The next thing I tried was unregistering and re-registering Redemption.dll (using regsvr32). No luck; unit tests work, console app fails.</p>
<p>Reboot? No luck; unit tests work, console app fails.</p>
<p>I did some reading, and apparently MSTest runs as a 32-bit application (though <a href="http://blogs.msdn.com/danielvl/archive/2009/03/28/run-mstest-exe-as-native-64-bit-process.aspx">it can be run as 64-bit</a>). I tried forcing Visual Studio to compile in x86? No luck; unit tests work, console app fails. Forcing Visual Studio to compile in x64 didn&#8217;t help either.</p>
<p>More reading, and I started to understand more about <a href="http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx">what the &#8220;Any CPU&#8221; platform compilation means, and the trials and tribulations of programming for 64-bit Windows</a>. Now I am smarter, but I still can&#8217;t get my damn simple console application to work!</p>
<p>Seemingly out of options, I found myself staring at the Debug output directory, and noticed something:</p>
<blockquote><p><code>SimplePstExtraction.exe<br />
SimplePstExtraction.vshost.exe</code></p></blockquote>
<p>I went ahead and turned off the Visual Studio hosting process, and viola! Everything works fine. I don&#8217;t know why, exactly (though I&#8217;m sure it&#8217;s related to the difference between 32- and 64-bit processes), but it fixed my issue, so if you have the same problem, hopefully it&#8217;ll fix yours.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sidesofmarch.com/index.php/archive/2009/11/02/the-visual-studio-hosting-process-and-64-bit-windows/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What&#8217;s broken in the new Republican web site, gop.com? Nearly everything!</title>
		<link>http://www.sidesofmarch.com/index.php/archive/2009/10/13/whats-broken-in-the-new-republican-web-site-gopcom-nearly-everything/</link>
		<comments>http://www.sidesofmarch.com/index.php/archive/2009/10/13/whats-broken-in-the-new-republican-web-site-gopcom-nearly-everything/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 19:00:48 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.sidesofmarch.com/index.php/archive/2009/10/13/whats-broken-in-the-new-republican-web-site-gopcom-nearly-everything/</guid>
		<description><![CDATA[While scanning Google News, I saw an article that mentioned the re-launched Republican National Committee web site, gop.com, and decided to take a look at it. The verdict, in short: if they are the party of new ideas, they are also the party that makes the same old stupid mistakes on their web sites.
First, let’s [...]]]></description>
			<content:encoded><![CDATA[<p>While scanning Google News, I <a title="PostPartisan - Michael Steele's New Domain (WashingtonPost.com)" href="http://voices.washingtonpost.com/postpartisan/2009/10/michael_steele_finds_a_new_pla.html?hpid=opinionsbox1">saw an article</a> that mentioned the re-launched Republican National Committee web site, <a href="http://www.gop.com">gop.com</a>, and decided to take a look at it. The verdict, in short: if they are the party of new ideas, they are also the party that makes the same old stupid mistakes on their web sites.</p>
<p>First, let’s look at the problems.</p>
<p><strong>Problem #1: A database error message is my first experience. </strong>Granted, the site is probably getting hammered by all the excited young Republicans, but that’s still no excuse for getting the following message on my first request: “Database Error: Unable to connect to your database. Your database appears to be turned off or the database connection settings in your config file are not correct. Please contact your hosting provider if the problem persists.” <a href="http://www.sidesofmarch.com/wp-content/uploads/gophomer.jpg"><strong><img style="border-right-width: 0px; margin: 16px 8px 16px 16px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="gop-homer" src="http://www.sidesofmarch.com/wp-content/uploads/gophomer-thumb.jpg" border="0" alt="gop-homer" width="240" height="128" align="right" /></strong></a>Come on, is it that hard to write a <a title="User-friendly error messages: 7 tips (The Web Usasbility Blog)" href="http://webusability-blog.com/user-friendly-error-messages-7-tips/">friendly error message</a>?</p>
<p><strong>Problem #2: Hearing someone talk as soon as the home page opens.</strong> Having <a title="3 annoying things you need to avoid in website design ($480 Web Design)" href="http://www.123triad.com/web-design-articles/3-annoying-avoid-website-design/">sound play automatically on your first visit to a web site is bad enough</a>. Having that sound being <em>someone’s voice</em> is worse than that. In this case, it’s RNC Chairman Michael Steele telling us about the new web site. I bet that the majority of visitors who don’t immediately hit the BACK or CLOSE button probably spend more time looking for the MUTE or STOP button than they do paying attention to what Mr. Steele is saying. (I know I did.)</p>
<p><strong>Problem #3: Doesn’t scale to 800 pixels.</strong> Sure, 800 pixels is so yesterday, and many developers (myself included) don’t bother supporting it. But this web site is quite clearly aimed at the general public, and <a title="Browser Display Statistics (W3Schools.org)" href="http://www.w3schools.com/browsers/browsers_display.asp">roughly 4% of the general public still have monitors that display at 800-pixel wide resolutions</a>. Considering the Republican party needs all the support it can get, it shouldn’t alienate these people by forcing them to scroll horizontally.</p>
<p><strong>Problem #4: Branding a face that has no brand meaning.</strong> You can’t miss the “faces” in the GOP logo on the top left of the web page. Each refresh loads a different page. (See <a href="http://wonkette.com/411594/a-childrens-treasury-of-gop-faces-from-the-hot-new-gop-website">A Children’s Treasury Of ‘GOP Faces’ From The Hot New GOP Website</a>.) Why are you focusing so much of the visible screen, and so much of your user’s attention, on faces that have no brand value? Shrink the damn header to no more than 120 pixels high and give people what they need: functionality and information, not a bunch of meaningless faces.</p>
<p><strong>Problem #5:</strong> It just doesn’t work. I refreshed the home page, and now all my connection attempts are failing.</p>
<p>I’ll say more if/when I can actually re-connect. Why such a problem? It’s not like launching new web sites is something new.</p>
<p>A little digging identifies the hosting provider for gop.com as <a href="http://smartechcorp.net/index.php">Smartech</a>, and they seem like a reasonably sound hosting company. So, is it a hosting issue, or a software architecture issue? I’d bet on the latter.</p>
<p>Hey, finally got back in! I’ll continue the blog post now.</p>
<p><strong>Problem #6: Pretty useless without JavaScript.</strong> Disabling JavaScript helped me avoid seeing the nameless faces (Problem #4) and hearing sound (Problem #2), but improve beyond that. Now I can’t click in the SEARCH box in the header, or on the DONATE button. Similar to Problem #3 (scaling to low resolutions), few people have JavaScript disabled, but why blatantly exclude even 2% of your audience? At least handle the lack of JavaScript gracefully.</p>
<p>Sorry, got kicked out of the GOP web site again. I’ll continue this post when I can reconnect…</p>
<p>Ah, back in… sort of…</p>
<p><strong>Problem #7: Republican Faces doesn’t work.</strong> Apparently the focal point of the web site (or, at least, the faces described in Problem #4) is “<a href="http://www.gop.com/index.php/learn/republican_faces/">Republican Faces</a>.” Go to that section of the web site for this error:</p>
<blockquote><p>PHP has encountered an Access Violation at 7C82A38B</p></blockquote>
<p>Hmpf. Well, until that’s fixed, let’s see what else we can find.</p>
<p><strong>Problem #8: Dropdown menus that are longer than the height of the screen.</strong> I’m looking at the site on a relatively mainstream 768-pixel height laptop screen. Due to the excessive height of the header (Problem #4) and the excessive length of some of the drop-down menus (one has 10 items), I can’t see the entire menu without scrolling. One positive: the menu is “sticky” – it doesn’t disappear when it loses focus – which makes such scrolling possible. Still, I wonder how many people will never go to the <a title="Research Briefings (GOP.com)" href="http://www.gop.com/index.php/learn/research_briefing/">Research Briefings</a> or <a title="Future Leaders (GOP.com)" href="http://www.gop.com/index.php/learn/future_leaders/">Future Leaders</a> pages (among others) as a result.</p>
<p>Sorry, can’t continue: <strong>Service Unavailable</strong>. Fortunately, while waiting, the Republican Faces site came up.</p>
<p style="text-align: center"><a href="http://www.sidesofmarch.com/wp-content/uploads/faceshomer.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="faces-homer" src="http://www.sidesofmarch.com/wp-content/uploads/faceshomer-thumb.jpg" border="0" alt="faces-homer" width="660" height="329" /></a><br />
<em><strong>Have this many people really been able to use the new GOP.com today?<br />
Certainly I wasn&#8217;t!</strong></em></p>
<p>Hey, RNC, if you need to hire a web guy who actually knows how to make web sites work, drop me a line!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sidesofmarch.com/index.php/archive/2009/10/13/whats-broken-in-the-new-republican-web-site-gopcom-nearly-everything/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cool feature: Balsamiq&#8217;s auto &#8216;lorem ipsum&#8217; generator</title>
		<link>http://www.sidesofmarch.com/index.php/archive/2009/09/16/cool-feature-balsamiqs-auto-lorem-ipsum-generator/</link>
		<comments>http://www.sidesofmarch.com/index.php/archive/2009/09/16/cool-feature-balsamiqs-auto-lorem-ipsum-generator/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 20:46:23 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Balsamiq]]></category>

		<category><![CDATA[lorem ipsum]]></category>

		<category><![CDATA[mockups]]></category>

		<guid isPermaLink="false">http://www.sidesofmarch.com/?p=386</guid>
		<description><![CDATA[Every now and then I stumble across a feature in an application or web site that is just too good not to mention. Today, it happened when using Balsamiq Mockups.
Like many people, I use lorem ipsum placeholder text. When I want large, random blocks of &#8216;lorem ipsum&#8217; text, I use the Lipsum Generator; today, I [...]]]></description>
			<content:encoded><![CDATA[<p>Every now and then I stumble across a feature in an application or web site that is just <em>too good</em> not to mention. Today, it happened when using <a href="http://www.balsamiq.com/products/mockups">Balsamiq Mockups</a>.</p>
<p>Like many people, I use <a title="lorem ipsum (Wikipedia)" href="http://en.wikipedia.org/wiki/Lorem_ipsum">lorem ipsum</a> placeholder text. When I want large, random blocks of &#8216;lorem ipsum&#8217; text, I use the <a title="Lorem Ipsum generator" href="http://www.lipsum.com/">Lipsum Generator</a>; today, I only needed a few words, so I figured I&#8217;d just type it.</p>
<p>As soon as I finished typing the word &#8220;Lorem,&#8221; Balsamiq sprang into action and populated my text box with the following text: <em>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</em></p>
<p>Now that is an awesome, useful feature. Hats off to <a title=" New Release: Balsamiq Mockups 1.5 (Balsamiq company blog)" href="http://www.balsamiq.com/blog/2008/12/19/new-release-balsamiq-mockups-15/">whoever thought of adding it</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sidesofmarch.com/index.php/archive/2009/09/16/cool-feature-balsamiqs-auto-lorem-ipsum-generator/feed/</wfw:commentRss>
		</item>
		<item>
		<title>You know there&#8217;s a shortage of 64-bit software when&#8230;</title>
		<link>http://www.sidesofmarch.com/index.php/archive/2009/09/16/you-know-theres-a-shortage-of-64-bit-software-when/</link>
		<comments>http://www.sidesofmarch.com/index.php/archive/2009/09/16/you-know-theres-a-shortage-of-64-bit-software-when/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 12:50:58 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[x64]]></category>

		<guid isPermaLink="false">http://www.sidesofmarch.com/?p=384</guid>
		<description><![CDATA[You know there&#8217;s a shortage of 64-bit software when&#8230;

You do a Google search for 64 bit applications.
You go to the first hit: Catalogue of 64-bit Software.
You look at the search results and see this:


Of course, the lack of 64-bit software is not the fault of the proprietors of this web site (which is, of its [...]]]></description>
			<content:encoded><![CDATA[<p><em>You know there&#8217;s a shortage of 64-bit software when&#8230;</em></p>
<ul>
<li>You do a Google search for <em><a title="Search for '64 bit applications' (Google)" href="http://www.google.com/search?q=64+bit+applications">64 bit applications</a></em>.</li>
<li>You go to the first hit: <a title="Catalogue of 64-bit Software (64xsoft.com)" href="http://www.64xsoft.com"><em>Catalogue of 64-bit Software</em></a>.</li>
<li>You look at the search results and see this:</li>
</ul>
<p><a href="http://www.sidesofmarch.com/wp-content/uploads/64xsoft-less-than-zero-business-apps.png"><img class="aligncenter size-full wp-image-385" title="Less than zero 64 bit business applications (64xsoft.com)" src="http://www.sidesofmarch.com/wp-content/uploads/64xsoft-less-than-zero-business-apps.png" alt="" width="462" height="250" /></a></p>
<p>Of course, the lack of 64-bit software is not the fault of the proprietors of this web site (which is, of its own admission, a beta, and from the looks of things, not heavily monitored or maintained), but it is telling of the state of native 64-bit software.</p>
<p>Of course, all is not lost: one of the first programs I install on my computer is <a href="http://www.7-zip.org/">7-zip</a>, and it has a native 64-bit version.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sidesofmarch.com/index.php/archive/2009/09/16/you-know-theres-a-shortage-of-64-bit-software-when/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Can&#8217;t install TFS, or the .Net Framework, or almost anything? Check your security policies!</title>
		<link>http://www.sidesofmarch.com/index.php/archive/2009/09/14/cant-install-tfs-or-the-net-framework-or-almost-anything-check-your-security-policies/</link>
		<comments>http://www.sidesofmarch.com/index.php/archive/2009/09/14/cant-install-tfs-or-the-net-framework-or-almost-anything-check-your-security-policies/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 19:21:26 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[errors]]></category>

		<category><![CDATA[Windows]]></category>

		<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://www.sidesofmarch.com/?p=380</guid>
		<description><![CDATA[On a newly-rebuild Windows 2003 server, I set out to install TFS 2008. After installing SQL 2005, and SQL Reporting Services, and SQL Analysis Services, and SQL 2005 Service Pack 3, I fired up the TFS installer, only to ultimately get the dreaded &#8220;Send Report/Don&#8217;t Send Report&#8221; dialog box.

Nice! Looking at the install log was [...]]]></description>
			<content:encoded><![CDATA[<p>On a newly-rebuild Windows 2003 server, I set out to <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=FF12844F-398C-4FE9-8B0D-9E84181D9923&amp;displaylang=en">install TFS 2008</a>. After installing SQL 2005, and SQL Reporting Services, and SQL Analysis Services, and SQL 2005 Service Pack 3, I fired up the TFS installer, only to ultimately get <a title="Microsoft: What we do with a bug report (neowin.net)" href="http://www.neowin.net/news/main/09/08/10/microsoft-what-we-do-with-a-bug-report">the dreaded &#8220;Send Report/Don&#8217;t Send Report&#8221; dialog box</a>.</p>
<p><a href="http://www.sidesofmarch.com/wp-content/uploads/tfs-install-unexpected-error.png"><img class="aligncenter size-medium wp-image-381" title="Team Foundation Server 2008 setup error" src="http://www.sidesofmarch.com/wp-content/uploads/tfs-install-unexpected-error-300x260.png" alt="Team Foundation Server encountered a problem during setup" width="300" height="260" /></a></p>
<p>Nice! Looking at the install log was so much more revealing.</p>
<p style="padding-left: 30px;"><code>[09/14/09,13:33:33] Microsoft .NET Framework 3.5: ***ERRORLOG EVENT*** : Error code 1603 for this component means &#8220;Fatal error during installation.&#8221;<br />
[09/14/09,13:33:33] Setup.exe: AddGlobalCustomProperty<br />
[09/14/09,13:33:33] Microsoft .NET Framework 3.5: ***ERRORLOG EVENT*** : Setup Failed on component Microsoft .NET Framework 3.5</code></p>
<p>Odd, why won&#8217;t the .Net Framework 3.5 install? Shouldn&#8217;t be hard to fix by <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;displaylang=en">downloading the .Net 3.5 installer</a> and installing it manually. Or should it? That didn&#8217;t work, either. Again from the install log.</p>
<p style="padding-left: 30px;"><code>[09/14/09,13:42:31] WIC Installer: [2] Error code 1603 for this component means &#8220;Fatal error during installation.&#8221;<br />
[09/14/09,13:42:31] WIC Installer: [2] Setup Failed on component WIC Installer<br />
[09/14/09,13:42:33] WapUI: [2] DepCheck indicates WIC Installer is not installed.</code></p>
<p>What does <a title="Windows Imaging Component (MSDN)" href="http://msdn.microsoft.com/en-us/library/ms735422%28VS.85%29.aspx">Windows Imaging Component</a> have to do with anything? Probably nothing, but Windows Installer does, so let&#8217;s take that route. I download <a title="Windows Installer 4.5 download (Microsoft)" href="http://www.microsoft.com/downloadS/details.aspx?familyid=5A58B56F-60B6-4412-95B9-54D056D6F9F4&amp;displaylang=en">the latest Windows Installer installer</a> (!) and attempt to install (!!) manually. Too bad that didn&#8217;t help, either &#8212; but at least this time I got an error message seemed to point me in the right direction.</p>
<p><a href="http://www.sidesofmarch.com/wp-content/uploads/error-no-permissions-to-update.png"><img class="aligncenter size-full wp-image-382" title="Error screenshot: Don\'t have permissions to update Windows" src="http://www.sidesofmarch.com/wp-content/uploads/error-no-permissions-to-update.png" alt="Setup Error: You do not have permissions to update Windows Server 2003." width="370" height="121" /></a></p>
<p>Now we&#8217;re getting somewhere. <a href="http://www.lmgtfy.com/?q=you+do+not+have+permission+to+update+windows+server+2003">Googling that exact error message</a> brought me to a Microsoft knowledge base article (<a href="http://support.microsoft.com/kb/888791">KB888791</a>) which told me:</p>
<blockquote><p>Update.exe version 5.4.1.0 and later versions require that the user who installs the software update is an administrator with certain user rights.</p></blockquote>
<p>A quick look at the policy settings on the server showed me that the Administrators group didn&#8217;t have the &#8220;<a title="Back up files and directories: Security (TechNet)" href="http://technet.microsoft.com/en-us/library/cc787956%28WS.10%29.aspx">Back up files and directories</a>&#8221; right, as shown below.</p>
<p><a href="http://www.sidesofmarch.com/wp-content/uploads/windows-back-up-files-policy-missing.png"><img class="aligncenter size-full wp-image-383" title="\" src="http://www.sidesofmarch.com/wp-content/uploads/windows-back-up-files-policy-missing.png" alt="" width="500" height="101" /></a></p>
<p>A quick request to IT to grant the Administrators group the missing right, and viola! TFS, and other software, is finally installing.</p>
<p>Apparently, this may have been the root cause issue for software not installing or uninstalling properly a week or so ago, when I put in the original request to have the server rebuilt, which leads me to wonder. <em><strong>If Update.exe knows what rights it requires, why doesn&#8217;t it check for them, why doesn&#8217;t it provide a clear error message indicating what is missing, and why doesn&#8217;t this information bubble up appropriately to MSI installers that use Update.exe?</strong></em></p>
<p>The world may never know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sidesofmarch.com/index.php/archive/2009/09/14/cant-install-tfs-or-the-net-framework-or-almost-anything-check-your-security-policies/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Everything you ever wanted to know about an enum (well, almost everything)</title>
		<link>http://www.sidesofmarch.com/index.php/archive/2009/07/08/everything-you-ever-wanted-to-know-about-an-enum-well-almost-everything/</link>
		<comments>http://www.sidesofmarch.com/index.php/archive/2009/07/08/everything-you-ever-wanted-to-know-about-an-enum-well-almost-everything/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 15:59:51 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[enum]]></category>

		<guid isPermaLink="false">http://www.sidesofmarch.com/?p=374</guid>
		<description><![CDATA[The enum, what a lovely creature available to us in C#. They help make our code more readable and bug-resistant. They also have some tricks up their sleeves.
Take a sample enum declaration:


public enum Level
{
	Unknown = 0,
	Low,
	Medium,
	High
}

If you want a string representation of an enum, you simply use the ToString() method.


Console.WriteLine(Level.Unknown.ToString());
/* output:
Unknown
*/

If you want the numeric [...]]]></description>
			<content:encoded><![CDATA[<p>The <code>enum</code>, what a lovely creature available to us in C#. They help make our code more readable and bug-resistant. They also have some tricks up their sleeves.</p>
<p>Take a sample enum declaration:</p>
<pre class="brush: csharp; ">

public enum Level
{
	Unknown = 0,
	Low,
	Medium,
	High
}
</pre>
<p>If you want a string representation of an enum, you simply use the <code>ToString()</code> method.</p>
<pre class="brush: csharp; ">

Console.WriteLine(Level.Unknown.ToString());
/* output:
Unknown
*/
</pre>
<p>If you want the numeric value of an enum, cast it to an <code>int</code>. (By default, an <code>enum</code> is an <code>int</code>, though <a href="http://www.geekpedia.com/KB6_How-do-I-set-the-type-of-an-enumeration.html">you can specify other numeric values</a> for them.)</p>
<pre class="brush: csharp; ">

int i = (int)Level.Low;
Console.WriteLine(i);
/* output:
1
*/
</pre>
<p>If you have a string and want to convert it to an <code>enum</code>, use the <code>Enum.Parse()</code> method. Pass the <code>enum</code> type, the string value to parse, and an optional <code>boolean</code> parameter to note if you want the parsing to be case-insensitive. (By default, parsing is case-sensitive.)</p>
<pre class="brush: csharp; ">

Level lvl;

// case-insensitive parsing
lvl = (Level)Enum.Parse(typeof(Level), &quot;medium&quot;, true);
Console.WriteLine(i);
/* output:
Medium
*/

// default, case-sensitive parsing
lvl = (Level)Enum.Parse(typeof(Level), &quot;high&quot;);
/* throws an exception:
System.ArgumentException: Requested value &#039;high&#039; was not found.
*/
</pre>
<p>If you have a numeric value and want to convert it to an <code>enum</code>, simply typecast the number to the <code>enum</code> type. Remember, an <code>enum</code> is just a number!</p>
<pre class="brush: csharp; ">

int val = 3;
Level lvl = (Level)val;
Console.WriteLine(lvl);
/* output:
High
*/
</pre>
<p>What about a set of enums that are not mutually exclusive (i.e. a sets of flags)? A &#8220;flags&#8221; enum can have multiple values, and is decorated with the <code>[Flags]</code> attribute, as shown below. Note that a these enums should have values defined in powers of two (1, 2, 4, 8, etc.). See below for a sporting example.</p>
<pre class="brush: csharp; ">

[Flags]
public enum Bases
{
	Empty = 0,
	First = 1,
	Second = 2,
	Third = 4,
	FirstAndSecond = Bases.First + Bases.Second,
	FirstAndThird = Bases.First + Bases.Third,
	SecondAndThird = Bases.Second + Bases.Third,
	Loaded = Bases.First + Bases.Second + Bases.Third
}
</pre>
<p>Many of the previously defined operations work on these enums. String output is as you would expect when using <code>ToString()</code>:</p>
<pre class="brush: csharp; ">

Console.WriteLine(Bases.Empty.ToString());
Console.WriteLine(Bases.FirstAndSecond.ToString());
/* output:
Empty
FirstAndSecond
*/
</pre>
<p>Getting the numeric value is the same, too:</p>
<pre class="brush: csharp; ">

int i = (int)Bases.First;
int j = (int)Bases.SecondAndThird;
Console.WriteLine(i);
Console.WriteLine(j);
/* output:
1
6
*/
</pre>
<p>Parsing &#8212; yes, the same.</p>
<pre class="brush: csharp; ">

Bases b1 = (Bases)Enum.Parse(typeof(Bases), &quot;second&quot;, true);
Bases b2 = (Bases)Enum.Parse(typeof(Bases), &quot;Loaded&quot;);
Console.WriteLine(b1);
Console.WriteLine(b2);
/* output:
Second
Loaded
*/
</pre>
<p>Numeric values? The same as well.</p>
<pre class="brush: csharp; ">

int val = 5;
Bases bases = (Bases)val;
Console.WriteLine(bases);
/* output:
FirstAndThird
*/
</pre>
<p>One thing you&#8217;d want to do with a flagg enum is to detect if a particular flag is set. It&#8217;s easy to do using the AND operator (<code>&#038;</code>).</p>
<pre class="brush: csharp; ">

bool isFirstOnSecondOrThird = (Bases.First &amp; Bases.SecondAndThird) == Bases.First;
bool isFirstOnLoaded = (Bases.First &amp; Bases.Loaded) == Bases.First;

/* output:
False
True
*/
</pre>
<p>There&#8217;s lots more that you can do with enums &#8212; check out some of the following links for more info:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/system.enum.aspx">MSDN documentation on the Enum Class</a></li>
<li><a href="http://www.csharp-station.com/Tutorials/Lesson17.aspx">C# Station Enums tutorial</a></li>
<li><a href="http://en.csharp-online.net/enum">enum at C# Online.Net</a></li>
<li><a href="http://dotnetperls.com/enum-value">C# Enum Tips and Examples</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sidesofmarch.com/index.php/archive/2009/07/08/everything-you-ever-wanted-to-know-about-an-enum-well-almost-everything/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wanted: Talented .Net Web/Windows developer</title>
		<link>http://www.sidesofmarch.com/index.php/archive/2009/06/18/wanted-talented-net-webwindows-developer/</link>
		<comments>http://www.sidesofmarch.com/index.php/archive/2009/06/18/wanted-talented-net-webwindows-developer/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 16:44:49 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.sidesofmarch.com/?p=368</guid>
		<description><![CDATA[My current employer is looking for a solid .Net/C# developer with experience programming web sites (ASP.Net, MVC, AJAX, JavaScript, etc.) and Windows applications (WinForms, WPF, etc.). If you&#8217;re interested in working for a great company located in downtown Manhattan, shoot me an email with your resume.
Check out the craigslist posting for more details.
]]></description>
			<content:encoded><![CDATA[<p>My <a href="http://www.biaprotect.com">current employer</a> is looking for a solid .Net/C# developer with experience programming web sites (ASP.Net, MVC, AJAX, JavaScript, etc.) and Windows applications (WinForms, WPF, etc.). If you&#8217;re interested in working for a great company located in downtown Manhattan, <a href="mailto:bdemarzo@biaprotect.com">shoot me an email with your resume</a>.</p>
<p>Check out the <a href="http://newyork.craigslist.org/mnh/sof/1207185323.html">craigslist posting</a> for more details.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sidesofmarch.com/index.php/archive/2009/06/18/wanted-talented-net-webwindows-developer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>John Dvorak apparently can&#8217;t use Google to find the right spelling for a tech product</title>
		<link>http://www.sidesofmarch.com/index.php/archive/2009/06/04/john-dvorak-apparently-can-use-google-to-find-the-right-spelling-for-a-tech-product/</link>
		<comments>http://www.sidesofmarch.com/index.php/archive/2009/06/04/john-dvorak-apparently-can-use-google-to-find-the-right-spelling-for-a-tech-product/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 18:09:03 +0000</pubDate>
		<dc:creator>brian</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.sidesofmarch.com/?p=367</guid>
		<description><![CDATA[ John C. Dvorak, the legendary PC Magazine columnist, recently wrote a column about open source software (from the angle of Sun/Oracle and open source licensing). In it, he called PostgreSQL a MySQL killer – and every time misspelled it as PostgrSQL.

Come on, John, it’s not like PostgrSQL accidentally came up in your spell check… [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.postgresql.com"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 0px 0px 8px 16px; border-left: 0px; border-bottom: 0px" title="postgrsql" src="http://www.sidesofmarch.com/wp-content/uploads/postgrsql.png" border="0" alt="postgrsql" width="212" height="46" align="right" /></a> <a href="http://www.pcmag.com/category2/0,2806,3574,00.asp">John C. Dvorak</a>, the legendary <a href="http://www.pcmag.com/">PC Magazine</a> columnist, recently wrote a column about open source software (from the angle of <a href="http://www.sun.com/third-party/global/oracle/">Sun/Oracle</a> and open source licensing). In it, he called <a href="http://www.postgresql.org/">PostgreSQL</a> a <a href="http://www.mysql.com">MySQL</a> killer – and every time <a href="http://www.pcmag.com/article2/0,2817,2348080,00.asp">misspelled it as <em>PostgrSQL</em></a>.</p>
<p><a href="http://www.pcmag.com/article2/0,2817,2348080,00.asp"><img style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" title="dvorak-misspels-postgresql" src="http://www.sidesofmarch.com/wp-content/uploads/dvorakmisspelspostgresql.png" border="0" alt="dvorak-misspels-postgresql" width="324" height="165" /></a></p>
<p>Come on, John, it’s not like <em>PostgrSQL</em> accidentally came up in your spell check… or that you don’t have editors who know the proper spelling of common tech companies. Do you?</p>
<p>What’s next? Will Dvorak lament the failure of the next operating system to come out of MicroSoft?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sidesofmarch.com/index.php/archive/2009/06/04/john-dvorak-apparently-can-use-google-to-find-the-right-spelling-for-a-tech-product/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
