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

<channel>
	<title>ursecta.com &#187; Windows</title>
	<atom:link href="http://ursecta.com/wp/category/windows/feed/" rel="self" type="application/rss+xml" />
	<link>http://ursecta.com/wp</link>
	<description>J. Martin Wehlou on Security, Software Development, and Medicine</description>
	<lastBuildDate>Sun, 05 Sep 2010 11:27:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>iPad: the lowest common denominator</title>
		<link>http://ursecta.com/wp/2010/03/ipad-the-lowest-common-denominator/</link>
		<comments>http://ursecta.com/wp/2010/03/ipad-the-lowest-common-denominator/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 09:00:36 +0000</pubDate>
		<dc:creator>martin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[OSX Dev]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iota]]></category>

		<guid isPermaLink="false">http://ursecta.com/wp/?p=538</guid>
		<description><![CDATA[After watching Apple vs Predator, a short YouTube video, I had a blinding flash of the somewhat obvious and this is it: no other interface but the iPhone/iPad interface can seamlessly transfer to a virtual surface and gestures. Let&#8217;s expand on this. If you&#8217;ve seen &#8220;Minority Report&#8221;, the movie, you must remember the interface Tom [...]]]></description>
			<content:encoded><![CDATA[<p>After watching <a href="http://ursecta.com/wp/go.php?http://www.youtube.com/watch?v=HWeZOS8ta04" target="_blank" title="(45 hits)">Apple vs Predator</a>, a short YouTube video, I had a blinding flash of the somewhat obvious and this is it: no other interface but the iPhone/iPad interface can seamlessly transfer to a virtual surface and gestures. Let&#8217;s expand on this.</p>
<p>If you&#8217;ve seen &#8220;Minority Report&#8221;, the movie, you must remember the interface Tom Cruise uses to access files. He pulls on gloves, then works the displays as if he touches a virtual surface in space. There are a number of projects doing gloves like this, such as the <a href="http://ursecta.com/wp/go.php?http://www.anthrotronix.com/index.php?option=com_content&amp;view=article&amp;id=87&amp;Itemid=138" target="_blank" title="(28 hits)">AcceleGlove</a> by AnthroTronix.</p>
<p>It&#8217;s obvious, to me at least, that you can&#8217;t usefully move just any graphical interface to a virtual surface like in &#8220;Minority Report&#8221;. There are UI elements that work and others that don&#8217;t work. Obviously, you can&#8217;t use a mouse, there&#8217;s nowhere to let it rest, there&#8217;s just air. You can&#8217;t use a pen. The only thing you can use is your fingers. In other words, it&#8217;s a multi-touch interface, albeit virtually and in the middle of the air.</p>
<p>Could you imagine if you developed a useful virtual surface like this and you wanted to use the same user interface on a hard, real surface device. How would that look? Surprise, surprise, it would look exactly like the iPad. Not like Windows for Tablets, not like any other smartphone UI I&#8217;ve ever seen, but exactly like the iPhone and iPad UI.</p>
<p>I don&#8217;t think this is accidental. I think this is the fundamental reason that the iPhone and iPad have never had, and never will have, a pen or other pointing device. As long as they are entirely useable using only one or more fingers, the UI translates seamlessly to a virtual surface in the air.</p>
<p>There are signs one can do using a glove and a virtual surface that aren&#8217;t useable on a real surface with multi-touch. Example: making the &#8220;ok&#8221; sign using your thumb and index finger could work with a glove, but not with an iPad. On the other hand, it seems such signs are rarely used even in science fiction movies, and I think there&#8217;s a fundamental reason why not, simply because they are less suitable for an intuitive command interface. This leads to the rule that one should probably not introduce any visual signs in virtual surfaces that cannot be translated to gestures using a hardware device surface.</p>
<p>For medicine, all this is great news. This means that if you develop a medical records interface, or the interface to any other medical system, on an iPad, it will automatically be just right for a virtual interface, such as those we will need in operating theatres and bedside.</p>
<p>That makes the iPad user interface the lowest common denominator. If you develop for this UI, your medical app is future proof. MS Windows based medical apps, on the other hand, are living on borrowed time.</p>
]]></content:encoded>
			<wfw:commentRss>http://ursecta.com/wp/2010/03/ipad-the-lowest-common-denominator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS patch of&#8230; Firefox?</title>
		<link>http://ursecta.com/wp/2009/06/ms-patch-of-firefox/</link>
		<comments>http://ursecta.com/wp/2009/06/ms-patch-of-firefox/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 09:36:36 +0000</pubDate>
		<dc:creator>martin</dc:creator>
				<category><![CDATA[Dotnet]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://ursecta.com/wp/?p=238</guid>
		<description><![CDATA[To quote an article on annoyances.org about the new ClickOnce install support that MS has added to .NET: The Microsoft .NET Framework 3.5 Service Pack 1 update, pushed through the Windows Update service to all recent editions of Windows in February 2009, installs the Microsoft .NET Framework Assistant firefox extension without asking your permission. This [...]]]></description>
			<content:encoded><![CDATA[<p>To quote an <a href="http://ursecta.com/wp/go.php?http://annoyances.org/exec/show/article08-600" target="_blank" title="(91 hits)">article on annoyances.org</a> about the new ClickOnce install support that MS has added to .NET:</p>
<blockquote><p>The <a href="http://ursecta.com/wp/go.php?http://support.microsoft.com/kb/951847" target="_blank" title="(90 hits)">Microsoft .NET Framework 3.5 Service Pack 1</a> update, pushed through the Windows Update service to all recent editions of Windows in February 2009, installs the Microsoft .NET Framework Assistant firefox extension without asking your permission.<br />
This update adds to Firefox one of the most dangerous vulnerabilities present in all versions of Internet Explorer: the ability for websites to easily and quietly install software on your PC. Since this design flaw is one of the reasons you may&#8217;ve originally choosen to abandon IE in favor of a safer browser like Firefox, you may wish to remove this extension with all due haste.</p>
<p>Unfortunately, Microsoft in their infinite wisdom has taken steps to make the removal of this extension particularly difficult &#8211; open the Add-ons window in Firefox, and you&#8217;ll notice the Uninstall button next to their extension is grayed out! Their reasoning, according to <a href="http://ursecta.com/wp/go.php?http://blogs.msdn.com/brada/archive/2009/02/27/uninstalling-the-clickonce-support-for-firefox.aspx" target="_blank" title="(115 hits)">Microsoft blogger Brad Abrams</a>, is that the extension needed &#8220;support at the machine level in order to enable the feature for all users on the machine,&#8221; which, of course, is precisely the reason this add-on is bad news for all Firefox users.</p></blockquote>
<p>And then follows a convoluted procedure to hack the crap out of the registry. <a href="http://ursecta.com/wp/go.php?http://annoyances.org/exec/show/article08-600" target="_blank" title="(91 hits)">Go there, read it</a>, do it, if you run Windows, this service pack, and Firefox.</p>
<p>Tech Republic put it like this:</p>
<blockquote><p>In a surprise move this year, Microsoft has decided to quietly install what amounts to a massive security vulnerability in Firefox without informing the user. Find out what Microsoft has to say about it, and how you can undo the damage.</p></blockquote>
<p>Read the entire <a href="http://ursecta.com/wp/go.php?http://blogs.techrepublic.com.com/security/?p=1716&amp;tag=nl.e019" target="_blank" title="(78 hits)">Tech Republic article</a>.</p>
<p><em>PS: this isn&#8217;t exactly news (the annoyances.org article is dated February 27, 2009), but I only just noticed through a posting by Rob S on a private list.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://ursecta.com/wp/2009/06/ms-patch-of-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You choose</title>
		<link>http://ursecta.com/wp/2009/01/you-choose/</link>
		<comments>http://ursecta.com/wp/2009/01/you-choose/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 11:16:12 +0000</pubDate>
		<dc:creator>martin</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://ursecta.com/wp/?p=185</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://ursecta.com/wp/go.php?http://ursecta.com/wp/wp-content/uploads/2009/01/423.jpg" title="(71 hits)"><img class="alignnone size-medium wp-image-186" title="Dubious dialog box" src="http://ursecta.com/wp/wp-content/uploads/2009/01/423-300x125.jpg" alt="" width="300" height="125" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ursecta.com/wp/2009/01/you-choose/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A feature?</title>
		<link>http://ursecta.com/wp/2009/01/a-feature/</link>
		<comments>http://ursecta.com/wp/2009/01/a-feature/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 13:29:18 +0000</pubDate>
		<dc:creator>martin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Dotnet]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://ursecta.com/wp/?p=170</guid>
		<description><![CDATA[Had to use the Directory.GetFiles() method in .NET, so I read the description. Now, take a moment and read the following about how an asterisk wildcard character works in the search pattern parameter. Then tell me if this description is of a feature or of a bug. Windows, largely due to legacy, is full of [...]]]></description>
			<content:encoded><![CDATA[<p>Had to use the Directory.GetFiles() method in .NET, so I read the description. Now, take a moment and read the following about how an asterisk wildcard character works in the search pattern parameter. Then tell me if this description is of a feature or of a bug. Windows, largely due to legacy, is full of this crap.</p>
<p style="padding-left: 30px;"><em>When using the asterisk wildcard character in a searchPattern, such as &#8220;*.txt&#8221;, the matching behavior when the extension is exactly three characters long is different than when the extension is more or less than three characters long. A searchPattern with a file extension of exactly three characters returns files having an extension of three or more characters, where the first three characters match the file extension specified in the searchPattern. A searchPattern with a file extension of one, two, or more than three characters returns only files having extensions of exactly that length that match the file extension specified in the searchPattern. When using the question mark wildcard character, this method returns only files that match the specified file extension. For example, given two files, &#8220;file1.txt&#8221; and &#8220;file1.txtother&#8221;, in a directory, a search pattern of &#8220;file?.txt&#8221; returns just the first file, while a search pattern of &#8220;file*.txt&#8221; returns both files.</em></p>
<p>and:</p>
<p style="padding-left: 30px;"><em>Because this method checks against file names with both the 8.3 file name format and the long file name format, a search pattern similar to &#8220;*1*.txt&#8221; may return unexpected file names. For example, using a search pattern of &#8220;*1*.txt&#8221; returns &#8220;longfilename.txt&#8221; because the equivalent 8.3 file format is &#8220;LONGFI~1.TXT&#8221;.</em></p>
<p>The conclusion must be that this function is worse than useless and bound to cause excruciating bugs in your apps. Better use the GetFiles() method without any search pattern and then filter using a regex.</p>
]]></content:encoded>
			<wfw:commentRss>http://ursecta.com/wp/2009/01/a-feature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The end of .NET? I can&#8217;t wait.</title>
		<link>http://ursecta.com/wp/2008/12/the-end-of-net-i-cant-wait/</link>
		<comments>http://ursecta.com/wp/2008/12/the-end-of-net-i-cant-wait/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 13:43:54 +0000</pubDate>
		<dc:creator>martin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Dotnet]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[OSX Dev]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[MSDN]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[XCode]]></category>

		<guid isPermaLink="false">http://ursecta.com/wp/?p=167</guid>
		<description><![CDATA[Ok, I admit, that title is a bit over the edge, but still that is how I feel. Developing for .NET is increasingly becoming not fun and far too expensive. The only reason to do it is because customers expect products for .NET, but under slowly increasing pressure from developers, that is going to change. [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, I admit, that title is a bit over the edge, but still that is how I feel. Developing for .NET is increasingly becoming not fun and far too expensive. The only reason to do it is because customers expect products for .NET, but under slowly increasing pressure from developers, that is going to change. It may take a while, but it will happen. There are a number of reasons for this.</p>
<p>.NET development is single platform. Admittedly the largest platform, but a platform that is increasingly having to share the market with other platforms. And already, according to some, there&#8217;s more sales potential for small developers in the OSX market than in the Windows market, due to a number of factors like customers that are more willing to buy and to pay for software, less competition in each market segment, etc.</p>
<p>.NET development is also entirely dependent on Microsoft&#8217;s development tools and those are increasingly expensive. For reasonable development, you need an IDE, a good compiler, version control, bug handler, coverage analysis, profiling, and a few more. We used to have most of that in the regular Visual Studio, but recently MS has removed all the goodies and plugged them into the Team system only, which carries an obscene pricetag (in Sweden around USD 13,000 + VAT for the first year&#8230;). This means that a regular one-man development shop can barely afford the crippled Visual Studio Professional at USD 1,500 for the first year. Sadly, there aren&#8217;t even any decent and affordable third party products to complement the VS Pro so it becomes a &#8220;real&#8221; development suite. And with every version of Visual Studio this only gets worse. More and more features are added to the Team suite and removed from the Pro. This is not the way to breed a happy following.</p>
<p>Meanwhile, OSX comes with XCode, which is almost as good as Visual Studio Pro, and is free. Objective-C is also a much more modern language with more depth than any .NET language, even though it is actually older. But, sadly, it&#8217;s not cross platform either and I don&#8217;t see how you can get the Windows fanboys of the Scandiavian healthcare scene to even consider another platform. Same probably goes for most other industries.</p>
<p>I&#8217;m no fan of Java, but on the other hand I&#8217;ve never worked much with it so that opinion doesn&#8217;t count. Eclipse, the IDE often used for Java development, is cross platform, very capable, and open for other languages such as Python, Flex, and many more. Yes, I know, in theory so is Visual Studio, but how many real languages do you have there? You&#8217;ve got one: Basic, masquerading as C#, J#, and, um, Basic.</p>
<p>Using Eclipse on any platform, you&#8217;ve got a real good chance of covering the line of tools you need, profilers, coverage, version control, without much pain and without breaking the bank. And you can write crossplatform integrated larger systems.</p>
<p>So, I guess it&#8217;s time to bite the bullet. I really like XCode and OSX, I really know C# and .NET, but I really only believe in Java, Flex, Python, Perl, C++ under Eclipse for enterprise development in vertical markets. And in XCode under OSX for regular shrinkwrapped desktop apps.</p>
<p>Not even Silverlight is very attractive and that is largely due to the marketing and pricing of the tools for it. A small developer organisation can&#8217;t afford it. Flex and AIR looks like serious contenders, though.</p>
]]></content:encoded>
			<wfw:commentRss>http://ursecta.com/wp/2008/12/the-end-of-net-i-cant-wait/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GotoMeeting runs on the Mac!</title>
		<link>http://ursecta.com/wp/2008/12/gotomeeting-runs-on-the-mac/</link>
		<comments>http://ursecta.com/wp/2008/12/gotomeeting-runs-on-the-mac/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 23:00:45 +0000</pubDate>
		<dc:creator>martin</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Gotomeeting]]></category>
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://ursecta.com/wp/?p=146</guid>
		<description><![CDATA[I love GotoMeeting, but until now I had to run it under Windows. You could only run it as a viewer under OSX before, but the latest version has a full function Mac client. I opened GotoMeeting under OSX (Firefox) then under XP (Firefox) on the same machine in a full screen virtual window, and [...]]]></description>
			<content:encoded><![CDATA[<p>I love <a href="http://ursecta.com/wp/go.php?http://www.gotomeeting.com" target="_blank" title="(92 hits)">GotoMeeting</a>, but until now I had to run it under Windows. You could only run it as a viewer under OSX before, but the latest version has a full function Mac client. I opened GotoMeeting under OSX (Firefox) then under XP (Firefox) on the same machine in a full screen virtual window, and I got this beautiful effect as the image was recursively drawn out into the distance. Looks a bit like a very deep cinema with the rows populated by Mac icons up front and in the back. Click for a larger image.</p>
<p><a href="http://ursecta.com/wp/go.php?http://ursecta.com/images/20081206/389ps.jpg" title="(56 hits)"><img class="alignnone" title="Recursive screen image" src="/images/20081206/389ps25p.jpg" alt="" width="480" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ursecta.com/wp/2008/12/gotomeeting-runs-on-the-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>x2c source</title>
		<link>http://ursecta.com/wp/2008/12/x2c-source/</link>
		<comments>http://ursecta.com/wp/2008/12/x2c-source/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 15:46:12 +0000</pubDate>
		<dc:creator>martin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Dotnet]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[code generator]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[x2c]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://ursecta.com/wp/?p=136</guid>
		<description><![CDATA[I finally got around to putting up the source code for x2c under GPL. No, you haven&#8217;t heard of this thing and it may not seem immediately useful, but when it is useful, it&#8217;s incredibly useful. The hardest thing is coming up with full samples of what it can do, so I&#8217;ll just outline it [...]]]></description>
			<content:encoded><![CDATA[<p>I finally got around to putting up the <a title="Page on wehlou.com with download link (74 hits)" href="http://ursecta.com/wp/go.php?http://www.wehlou.com/x2c/index.htm" target="_blank">source code for x2c</a> under GPL. No, you haven&#8217;t heard of this thing and it may not seem immediately useful, but when it is useful, it&#8217;s incredibly useful. The hardest thing is coming up with full samples of what it can do, so I&#8217;ll just outline it right here.</p>
<p>x2c stands for &#8220;XML to Code&#8221;, and it&#8217;s an interpreter for a little language I made with built-in commands to handle XML documents and write to plain text output files.</p>
<p>It started life as a tool to create VB and C# source code for data access layer classes, based on XML descriptions of an Oracle database. Another possibility is generating language tables from Excel spreadsheets, and I&#8217;ll tell you how:</p>
<p>Imagine an Excel spreadsheet with one sentence per row. In each column, the same sentence is written in another language, like Swedish, English, French, etc. Save the spreadsheet as an XML document. Now you can write a pretty short x2c script that reads these languages, column by column, and then produces a C++ header file with the right strings declared as constants. Great for products you want to recompile for a number of human languages.</p>
<p><img class="alignnone" title="x2c source for language example" src="/images/20081205/387.jpg" alt="" width="500" height="606" /></p>
<p>Especially for this last use, I recently adapted the text output file command in x2c to allow output to ASCII, unicode (default), or any codepage you have installed on the Windows system you&#8217;re running this thing on. In the above script example, you see codepage 1251 used for Russian. In this case this was necessary since the C++ compiler used (Borland) couldn&#8217;t use unicode header files. This script runs under US or Swedish XP and Vista, as long as codepage 1251 is also installed on the system, and then produces the right MBCS file for Borland C++, resulting in binaries that will look real to russians running russian versions of Windows. Note that above is the <em>complete</em> script that is needed to convert the excel spreadsheet to four different C++ header files and it can easily be run from a build script.</p>
<p>The source is C++ in a VS 2008 solution. Have a go at it.</p>
]]></content:encoded>
			<wfw:commentRss>http://ursecta.com/wp/2008/12/x2c-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS is blazing the trail&#8230;</title>
		<link>http://ursecta.com/wp/2008/11/ms-is-blazing-the-trail/</link>
		<comments>http://ursecta.com/wp/2008/11/ms-is-blazing-the-trail/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 09:17:18 +0000</pubDate>
		<dc:creator>martin</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[BOL]]></category>
		<category><![CDATA[books on line]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[msi]]></category>
		<category><![CDATA[network error]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://ursecta.com/wp/?p=112</guid>
		<description><![CDATA[&#8230;on new innovative ways to make an install fail. After upgrading my SQL server to 2005 SP2, I went to download the update for the Books On Line using the recommended link from the SP2 installer. Downloaded the msi to my desktop, double-clicked it and ran it. Then, after a while, got this message: &#8220;A [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;on new innovative ways to make an install fail.</p>
<p>After upgrading my SQL server to 2005 SP2, I went to download the update for the Books On Line using the <a title="SQL Server 2005 BOL update (39 hits)" href="http://ursecta.com/wp/go.php?http://technet.microsoft.com/sv-se/sqlserver/bb428874(en-us).aspx" target="_blank">recommended link</a> from the SP2 installer. Downloaded the msi to my desktop, double-clicked it and ran it. Then, after a while, got this message: &#8220;A network error occurred while attempting to read from the file:&#8230;.&#8221;</p>
<div class="wp-caption alignnone" style="width: 511px"><img title="Network error dialog" src="/images/20081126/371.jpg" alt="Network error dialog" width="501" height="383" /><p class="wp-caption-text">Network error dialog</p></div>
<p>&#8220;Network error&#8221;? Which &#8220;network&#8221;? The one between the screen and the desktop? Searched the web, found nothing. Started thinking deep. Read that message again and again and started noticing something weird about the filename. The file in the error message is called SqlServer2K5_BOL_Sep2007[1].msi, while the file on disk is called SqlServer2K5_BOL_Sep2005.msi, no &#8220;[1]&#8221; in there. So I renamed the file accordingly:</p>
<p><img class="alignnone" title="Old filename on desktop" src="/images/20081126/372.jpg" alt="" width="118" height="116" /> <img class="alignnone" title="New filename on desktop" src="/images/20081126/373.jpg" alt="" width="118" height="116" /></p>
<p>And lo and behold, the installer ran fine now! At a certain point while cleaning up temp files, it sits there spinning like forever, but that&#8217;s ok, normal MS behaviour, so don&#8217;t panic, it gets its knickers untwisted in due time:</p>
<div class="wp-caption alignnone" style="width: 514px"><img title="The point of eternal wait" src="/images/20081126/370.jpg" alt="The point of seemingly eternal wait" width="504" height="388" /><p class="wp-caption-text">The point of seemingly eternal wait</p></div>
]]></content:encoded>
			<wfw:commentRss>http://ursecta.com/wp/2008/11/ms-is-blazing-the-trail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Strongly typed constant parameters in C#</title>
		<link>http://ursecta.com/wp/2008/10/strongly-typed-parameters-in-c/</link>
		<comments>http://ursecta.com/wp/2008/10/strongly-typed-parameters-in-c/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 12:53:04 +0000</pubDate>
		<dc:creator>martin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Dotnet]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[constants]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[enum]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[static]]></category>
		<category><![CDATA[strongly typed parameter]]></category>

		<guid isPermaLink="false">http://ursecta.com/wp/?p=110</guid>
		<description><![CDATA[After a bit of searching, I found a way to have strongly typed constant parameters for C# functions. You know the situation, where you need to pass one of a limited set of strings or chars or other values to a function and you want to make sure somebody doesn&#8217;t just go and pass any [...]]]></description>
			<content:encoded><![CDATA[<p>After a bit of searching, I found a way to have strongly typed constant parameters for C# functions. You know the situation, where you need to pass one of a limited set of strings or chars or other values to a function and you want to make sure somebody doesn&#8217;t just go and pass any old thing they find laying around the place. Enums are pretty good for this kind of thing, but it gets hairy if you need to translate it to anything else, like a string or a char.</p>
<p>Any solution also needs to pander to intellisense, making it easy to use and kinda idiot safe (I&#8217;m talking about myself a couple of hours after defining any constant, which usually leads to me behaving like the idiot user I had a hard time envisioning just hours earlier).</p>
<p>I think I found a good system for doing this, and as an example, I&#8217;ll invent a function that takes a string parameter, but it has to be just the right kind of string. To do that, I first declare the constant strings in a separate module this way:</p>
<p><img src="/images/20081029/336.jpg" alt="" /></p>
<p>Then I write my function, the fictional &#8220;Rechandler&#8221; that takes a parameter of the ConstRecTypeValue kind. And then I write a function that calls it. Now, while writing the caller, I want intellisense to do its thing, and it does:</p>
<p><img src="/images/20081029/334.jpg" alt="" /></p>
<p>As you can see, it obediently pops up a tooltip to tell me only a ConstRecTypeValue is accepted here. As soon as I start to type that, it recognizes the ConstRecType static class name and it intellisensively lets me choose which constant member I want:</p>
<p><img src="/images/20081029/333.jpg" alt="" /></p>
<p>&#8230;which I complete the usual way:</p>
<p><img src="/images/20081029/335.jpg" alt="" /></p>
<p>The callee (Rechandler) then easily recovers the string that is hiding inside the passed value (in this case &#8220;DELETED&#8221;) and continues its merry ways.</p>
<p>Naturally, you can use chars, doubles or entire collections of values instead of the string value in this example and still achieve the same effect.</p>
<p>You can also take it one step further along the path to universality, by using a generic base class for the value type:</p>
<p><img src="/images/20081029/337.jpg" alt="" /></p>
<p>If you have this guy in reach in your project somewhere, you can now simplify the definition of the value class like so:</p>
<p><img src="/images/20081029/338.jpg" alt="" /></p>
<p>&#8230;while everything else stays just the same.</p>
<p>I love it.</p>
]]></content:encoded>
			<wfw:commentRss>http://ursecta.com/wp/2008/10/strongly-typed-parameters-in-c/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>I found FindPart</title>
		<link>http://ursecta.com/wp/2008/09/i-found-findpart/</link>
		<comments>http://ursecta.com/wp/2008/09/i-found-findpart/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 22:02:12 +0000</pubDate>
		<dc:creator>martin</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://ursecta.com/wp/?p=105</guid>
		<description><![CDATA[Today I helped a neighbor recover data from his laptop. It wouldn&#8217;t boot and it ran (or failed to run) Windows XP. Checking it with a low level utility showed that the MBR and partition table were shot. Now, Windows repair didn&#8217;t find the drive. Fixmbr didn&#8217;t fix the MBR. Fixboot didn&#8217;t fix the boot. [...]]]></description>
			<content:encoded><![CDATA[<p>Today I helped a neighbor recover data from his laptop. It wouldn&#8217;t boot and it ran (or failed to run) Windows XP. Checking it with a low level utility showed that the MBR and partition table were shot.</p>
<p>Now, Windows repair didn&#8217;t find the drive. Fixmbr didn&#8217;t fix the MBR. Fixboot didn&#8217;t fix the boot. Knoppix couldn&#8217;t mount the drive. Nothing worked.</p>
<p>So I pulled the drive from the laptop, hooked it up to my old, crappy, Dell Optimus, Octopus, or whatever it&#8217;s called, since it had SATA. Got the <a title="Link to partitionsupport.com (49 hits)" href="http://ursecta.com/wp/go.php?http://www.partitionsupport.com/utilities.htm" target="_blank">FindPart utility</a> package, and man does that thing work right! The instructions aren&#8217;t exactly clear, but you can figure it out with a little patience. That stuff rocks! Highly, highly recommended.</p>
]]></content:encoded>
			<wfw:commentRss>http://ursecta.com/wp/2008/09/i-found-findpart/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
