<?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>The New Old Thing</title>
	<atom:link href="http://newoldthing.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://newoldthing.wordpress.com</link>
	<description>Absurdity in Its Fullest</description>
	<lastBuildDate>Tue, 03 Jan 2012 09:25:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='newoldthing.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>The New Old Thing</title>
		<link>http://newoldthing.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://newoldthing.wordpress.com/osd.xml" title="The New Old Thing" />
	<atom:link rel='hub' href='http://newoldthing.wordpress.com/?pushpress=hub'/>
		<item>
		<title>What Lies Beneath Enum types</title>
		<link>http://newoldthing.wordpress.com/2008/01/11/what-lies-beneath-enum-types/</link>
		<comments>http://newoldthing.wordpress.com/2008/01/11/what-lies-beneath-enum-types/#comments</comments>
		<pubDate>Fri, 11 Jan 2008 20:17:54 +0000</pubDate>
		<dc:creator>newoldthing</dc:creator>
				<category><![CDATA[Code Junky]]></category>

		<guid isPermaLink="false">http://newoldthing.wordpress.com/2008/01/11/what-lies-beneath-enum-types/</guid>
		<description><![CDATA[Enum types are used extensively within .NET framework to represent a group of named constant integers (default underlying type of enum elements is int) that you can use as method arguments, return values, etc; to make your program more readable and maintainable. Once your codes are compiled into IL, all enum(s) that you use in your [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=43&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Enum types are used extensively within .NET framework to represent a group of named constant integers (default underlying type of enum elements is int) that you can use as method arguments, return values, etc; to make your program more readable and maintainable.</p>
<p>Once your codes are compiled into IL, all enum(s) that you use in your codes will be substituted with the underlying value. Therefore, knowing the actual values of enum elements is useful in some scenarios such as when reading the IL of a disassembled assembly.</p>
<p>This can be achieved easily using the reflection facility provided by .NET framework. Let say you want to see what&#8217;s inside the <a title="DataRowState enum documentation" href="http://msdn2.microsoft.com/en-us/library/system.data.datarowstate.aspx" target="_blank">System.Data.DataRowState</a> enum type, you can write and execute the following codes to list all the enum elements and the underlying integer value that each element represents:<br />
<code>Type dt = <span style="color:#0000ff;">typeof</span> (DataRowState);<br /><span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">string</span> s <span style="color:#0000ff;">in</span> Enum.GetNames(dt))<br /> {<br />&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine("{0} = {1}", s, Convert.ToInt32(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enum.Parse(dt, s))); <br />} </code></p>
<p>These codes will basically print the names of all members for the enum type in question, and the underlying integer values next to the names.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/newoldthing.wordpress.com/43/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/newoldthing.wordpress.com/43/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newoldthing.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newoldthing.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newoldthing.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newoldthing.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newoldthing.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newoldthing.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newoldthing.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newoldthing.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newoldthing.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newoldthing.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newoldthing.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newoldthing.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newoldthing.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newoldthing.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=43&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newoldthing.wordpress.com/2008/01/11/what-lies-beneath-enum-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af78fcc74bd91db29f18867b41d8c8c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">newoldthing</media:title>
		</media:content>
	</item>
		<item>
		<title>C# Property Access Modifier</title>
		<link>http://newoldthing.wordpress.com/2007/09/02/c-property-access-modifier/</link>
		<comments>http://newoldthing.wordpress.com/2007/09/02/c-property-access-modifier/#comments</comments>
		<pubDate>Sun, 02 Sep 2007 22:43:24 +0000</pubDate>
		<dc:creator>newoldthing</dc:creator>
				<category><![CDATA[Code Junky]]></category>

		<guid isPermaLink="false">http://newoldthing.wordpress.com/2007/09/02/c-property-access-modifier/</guid>
		<description><![CDATA[C# property can be assigned an access modifier (public, private, protected, or internal) to control the accessibility of that property against an external caller. Prior to .NET 2.0, we could not declare a property with different access modifier for the accessor (get and set). This is somewhat limiting, considering that sometimes we want the set [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=42&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>C# property can be assigned an access modifier (public, private, protected, or internal) to control the accessibility of that property against an external caller. Prior to .NET 2.0, we could not declare a property with different access modifier for the accessor (get and set). This is somewhat limiting, considering that sometimes we want the set operation to be less public than the get operation. If you want to do that in C# 1.x, you have to do this (which is not pretty and defeats the purpose of Property syntax):</p>
<pre><span style="color:blue;">public</span> <span style="color:blue;">string</span> Name
{
    <span style="color:blue;">get</span>
    {
        <span style="color:blue;">return</span> name;
    }
}

<span style="color:blue;">internal string</span> SetName(<span style="color:blue;">string</span> name)
{
    <span style="color:blue;">this</span>.name = name;
}</pre>
<p>Luckily, the problem was recognized and addressed in C# 2.0 with the introduction of &#8220;Asymmetric Accessor Accessibility&#8221;. So now you can do this:</p>
<pre><span style="color:blue;">public</span> <span style="color:blue;">string</span> Name
{
    <span style="color:blue;">get</span>
    {
        <span style="color:blue;">return</span> name;
    }</pre>
<pre>    <span style="color:blue;">internal</span> <span style="color:blue;">set</span>
    {
        name = value;
    }
}</pre>
<p>There are some restrictions for this, the most important ones being:</p>
<ul>
<li>The accessor (get or set) access modifier must be more restrictive than the property access modifier.</li>
<li>Accessor modifier can only be defined when a property has both get and set accessors and the accessor modifier is only permitted on only one of the two accessors.</li>
</ul>
<p>Just in case you&#8217;re not up to date.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/newoldthing.wordpress.com/42/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/newoldthing.wordpress.com/42/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newoldthing.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newoldthing.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newoldthing.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newoldthing.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newoldthing.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newoldthing.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newoldthing.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newoldthing.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newoldthing.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newoldthing.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newoldthing.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newoldthing.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newoldthing.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newoldthing.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=42&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newoldthing.wordpress.com/2007/09/02/c-property-access-modifier/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af78fcc74bd91db29f18867b41d8c8c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">newoldthing</media:title>
		</media:content>
	</item>
		<item>
		<title>Steelcase Leap It Is!</title>
		<link>http://newoldthing.wordpress.com/2007/03/26/steelcase-leap-it-is/</link>
		<comments>http://newoldthing.wordpress.com/2007/03/26/steelcase-leap-it-is/#comments</comments>
		<pubDate>Mon, 26 Mar 2007 22:46:08 +0000</pubDate>
		<dc:creator>newoldthing</dc:creator>
				<category><![CDATA[Gadgetry]]></category>

		<guid isPermaLink="false">http://newoldthing.wordpress.com/2007/03/26/steelcase-leap-it-is/</guid>
		<description><![CDATA[After enduring 3.5 years of poor-ergonomic chairs provided in the office and developing a pretty bad back as a result, I decided to take matter into my own hands. Enough is enough. My back is just getting worst each day and I don&#8217;t know whether I can last 8 hours on a chair by the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=41&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After enduring 3.5 years of poor-ergonomic chairs provided in the office and developing a pretty bad back as a result, I decided to take matter into my own hands. Enough is enough. My back is just getting worst each day and I don&#8217;t know whether I can last 8 hours on a chair by the time I&#8217;m 30 at this rate. <a href="http://www.hermanmiller.com/CDA/SSA/Product/1,1592,a10-c440-p8,00.html" title="Herman Miller Aeron" target="_blank">Herman Miller Aeron</a> chair has been pretty much my dream chair all this time, until last night I was enlightened by breathtaking design of <a href="http://www.steelcase.com/na/leap_products.aspx?f=11852" title="Steelcase Leap" target="_blank">Steelcase Leap</a> chair. In a glimpse, Steelcase Leap looks like regular office chair, but wait until you see <a href="http://www.steelcase.com/na/files/e60e7549615c415694d247b9dd94d02d.swf" title="Steelcase Leap Adjustability" target="_blank">how adjustable it is</a>. You can basically adjust and customize every aspect of the chair and the supports it provide: seat height, seat depth, upper back force, lower back firmness, adjustable arms, back stop, flexible seat edge, and lumbar support height. That&#8217;s something that Aeron chair won&#8217;t be able to provide in a single product.</p>
<p>You see, there&#8217;s something about Aeron chair that a lot of people do not know. Aeron chair comes with 3 different sizes (A, B, C). If you buy the wrong size, there&#8217;s a chance you won&#8217;t feel the maximum comfort and support that you should get from an Aeron. The size you need depends on your height and your height distribution (you know, some people are tall because they have long legs, but sometimes they&#8217;re tall because they&#8217;ve long spine). The Aeron also comes in 3 different basic configurations, the <a href="http://www.hermanmiller.com/hm/content/product_showroom/products/images/EN_AER_P_20061018_004_W.jpg" title="Aeron Basic" target="_blank">Basic Aeron</a> (Aeron with less back support), <a href="http://www.hermanmiller.com/hm/content/product_showroom/products/images/P_AER_E034.jpg" title="Aeron Lumbar" target="_blank">Aeron Lumbar</a> (lower back support), and <a href="http://www.hermanmiller.com/hm/content/product_showroom/products/images/P_AER_D114.jpg" title="Aeron PostureFit" target="_blank">Aeron PostureFit</a> (best back support). If you want to upgrade from Basic to Lumbar, you need to generously <a href="http://www.sit4less.com/aeronchairs/aeronchair.php" title="Sit4Less Price List for Aerons" target="_blank">add an extra $200</a> to your budget. Now, I already have a dilemma choosing the size, since I&#8217;ll be sharing the chair with wifey. She&#8217;s 155 cm (5&#8217;1&#8243;) tall, while I&#8217;m close to 180 cm (5&#8217;11&#8243;); which according to <a href="http://www.officedesigns.com/images/misc/Aeron-sizechart.gif" title="Aeron Sizing Chart" target="_blank">this chart</a>, she&#8217;ll fit better on A-sized Aeron, while I&#8217;ll need a B-sized Aeron. Tough, either the Aeron will spoil me or her, can&#8217;t make both of us equally happy. Buying 2 Aerons will solve the problems, but I don&#8217;t plan to fund any start-up anytime soon. If getting the size is not problematic enough, how about the level of back support we need? My back is worse than hers, but she&#8217; getting there. So what should we choose? Basic is definitely out, so it&#8217;s either Lumbar or PostureFit, which are equally pricey.</p>
<p><img src="http://cdn.www.steelcase.com/images/dyn/eb8269fd33aeecaac8e0ac9c703f943f.jpg" alt="Steelcase Leap Chair" align="left" border="1" height="540" hspace="1" vspace="1" width="396" />So in short, Aeron does not answer our cry for a super chair that will work best for both of us, but Leap does! Leap has one size fits all philosophy due to its superb adjustability. Leap is a result of 4 years research involving 25 scientists and 200 participants (read: human &#8220;guinea pigs&#8221;), of which testing concluded in overall of <a href="http://www.steelcase.com/na/knowledgedesign.aspx?f=10106&amp;c=10130" title="Leap Research" target="_blank">17.8% increase in work productivity</a> (for people who sat on Leap and received office ergonomics training). Most people who have tried both Aeron and Leap <a href="http://www.apartmenttherapy.com/ny/good-questions/good-questions-best-place-to-try-office-chairs-004366" title="Apartment Therapy" target="_blank">have tendency to pick Leap</a>. The warranty is not bad too if not better than Aeron. Aeron has 12 years non-transferrable warranty if you buy from authorized dealers only. Leap has lifetime warranty for frame and structural components, 10 years for seating mechanism, and 5 years for the cushion.</p>
<p>All online authorized dealers charge around $799 for version 2 of this chair (you can get the version 1 for $699 or less), but I managed to find <a href="http://www.office-environments.com">Office Environments</a> which offers 10% instant discount on checkout; plus the online options to totally build custom Leap chair. My projection is I&#8217;ll receive this in about 2 weeks. If you&#8217;re interested in Leap, there&#8217;ll be price increase from the manufacturer on April 1st (some authorized dealers actually put this notification on their sites). I don&#8217;t think it&#8217;s a bogus marketing trick, because they&#8217;re <strong>authorized</strong> dealers.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/newoldthing.wordpress.com/41/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/newoldthing.wordpress.com/41/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newoldthing.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newoldthing.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newoldthing.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newoldthing.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newoldthing.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newoldthing.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newoldthing.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newoldthing.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newoldthing.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newoldthing.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newoldthing.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newoldthing.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newoldthing.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newoldthing.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=41&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newoldthing.wordpress.com/2007/03/26/steelcase-leap-it-is/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af78fcc74bd91db29f18867b41d8c8c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">newoldthing</media:title>
		</media:content>

		<media:content url="http://cdn.www.steelcase.com/images/dyn/eb8269fd33aeecaac8e0ac9c703f943f.jpg" medium="image">
			<media:title type="html">Steelcase Leap Chair</media:title>
		</media:content>
	</item>
		<item>
		<title>How Does Your Browser Know that It&#8217;s Not The Default?</title>
		<link>http://newoldthing.wordpress.com/2007/03/23/how-does-your-browsers-know-that-its-not-the-default-browser/</link>
		<comments>http://newoldthing.wordpress.com/2007/03/23/how-does-your-browsers-know-that-its-not-the-default-browser/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 04:49:28 +0000</pubDate>
		<dc:creator>newoldthing</dc:creator>
				<category><![CDATA[Code Junky]]></category>

		<guid isPermaLink="false">http://newoldthing.wordpress.com/2007/03/23/how-does-your-browsers-know-that-its-not-the-default-browser/</guid>
		<description><![CDATA[On Windows system, how does your browser tell that it&#8217;s currently not the default? Prior to Windows Vista, this information is stored in the registry under HKEY_CLASSES_ROOT hive, the usual place where all shell associations are kept. The default browser is maintained under HKEY_CLASSES_ROOT on per-protocol basis (as well as per file type basis, but [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=39&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="left">On Windows system, how does your browser tell that it&#8217;s currently not the default? Prior to Windows Vista, this information is stored in the registry under HKEY_CLASSES_ROOT hive, the usual place where all shell associations are kept. The default browser is maintained under HKEY_CLASSES_ROOT on per-protocol basis (as well as per file type basis, but I&#8217;m only interested in the protocols since we use browsers most of the time to access online resources, not offline). The convention for registry locations, where protocol-application associations are stored; is &#8220;HKEY_CLASSES_ROOT\[protocol]\shell\open\command &#8220;. Substitute [protocol] here with http, https, ftp, gopher or other protocols commonly supported by your favorite browser.</p>
<p align="left">For example: if I want to know what is the default program for opening http protocol, then I&#8217;ll look at the registry value of &#8220;HKEY_CLASSES_ROOT\http\shell\open\command&#8221;. If I go to Start menu, click Run, type &#8220;http://newoldthing.wordpress.com&#8221; and then hit Enter, the URL will be opened with the application of which command line is registered in this registry value. As simple as that.</p>
<p align="left">The next question will be, whether the default browser is maintained on per-user basis or it&#8217;s a system wide setting. If it&#8217;s maintained on per-user basis, then if user A set his default browser, then it will not change the default browser for user B or C. This would be somewhat the desired behavior, don&#8217;t you think? Imagine a family whose members are computer versed or so they thought, sharing one PC, and they constantly have fight over IE vs Firefox vs Opera. You don&#8217;t want the default browser to be system wide setting in that family&#8217;s PC.</p>
<p align="left">But unfortunately, the answer is not straightforward. The default browser setting can be both per-user and system-wide. To understand this, you need to understand HKEY_CLASSES_ROOT hive. There&#8217;s no better place to start than <a href="http://msdn2.microsoft.com/en-us/library/ms724475.aspx" title="HKEY_CLASSES_ROOT Key" target="_blank">MSDN documentation</a>. In summary, there are 3 important concepts about HKEY_CLASSES_ROOT that we have to keep in mind:</p>
<ol>
<li>The HKEY_CLASSES_ROOT key provides a merged view of &#8220;HKEY_LOCAL_MACHINE\Software\Classes&#8221; (contains default settings that can apply to all users on the local computer) and &#8220;HKEY_CURRENT_USER\Software\Classes&#8221; (contains settings that apply only to the current interactive user).</li>
<li>The user-specific settings have priority over the default settings.</li>
<li>If you write values to a key under HKEY_CLASSES_ROOT, the values will go under:
<ul>
<li>HKEY_CURRENT_USER\Software\Classes; if the key exists under HKEY_CURRENT_USER\Software\Classes.</li>
<li>Otherwise, HKEY_LOCAL_MACHINE\Software\Classes.</li>
</ul>
</li>
</ol>
<p align="left">Windows basically requires browsers to do the right thing to make the settings per-user basis instead of system-wide. In ideal scenario, before writing the default browser settings to HKEY_CLASSES_ROOT, browsers need to check if the key already exists under HKEY_CURRENT_USER or not. If the key exists there, then writing to HKEY_CLASSES_ROOT will be equal to committing to HKEY_CURRENT_USER; meaning that the settings will only affect the current interactive user and not other users. If the key doesn&#8217;t exist, then no question the key must be written under HKEY_CURRENT_USER instead of HKEY_CLASSES_ROOT. However, most (if not all) browsers basically write to HKEY_CLASSES_ROOT blindly, and since the protocol-association registrations do not exist under HKEY_CURRENT_USER by default, that means browsers write the settings to HKEY_LOCAL_MACHINE all the time. That is not only annoying and disruptive, the attempt to overwrite default browser may ultimately fail as well.</p>
<p align="left">Consider the scenario of standard or limited user accounts. They don&#8217;t have write access to HKEY_LOCAL_MACHINE\Software\Classes. So if standard user says &#8220;Yes&#8221; when asked by browser X to set X as default browser, and X writes the settings to HKEY_CLASSES_ROOT which ultimately passed-through to HKEY_LOCAL_MACHINE; the registry write operation will fail. As a result, browser X will ask the same question next time it&#8217;s launched by this standard user. More frustration for the user!</p>
<p align="left">Realizing these bad-eggs and with good intentions to prevent users from stepping on each other&#8217;s toes, Windows Vista introduces new way of registering default browser. It&#8217;s part of the new feature called <strong>Default Programs</strong>. It&#8217;s different to Windows XP&#8217;s SPAD (Set Program Access and Defaults) in that Default Programs is primarily controlled at the per-user level instead of per-machine level (out of the box! And does not rely on 3rd party programs to do the right thing). As part of this <strong>Default Programs</strong>, the default browser settings are now stored under &#8220;HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\ Associations\UrlAssociations\[ftp|http|https]&#8220;. Windows Vista&#8217;s shell will launch a URL with an application associated with the URL&#8217;s protocol based on the value of these registry keys. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=352424" title="Firefox Bug" target="_blank">Browsers that were not aware of this change broke on Vista</a>, they were simply unable to set itself as default browser (they saw themselves as default browser although shell didn&#8217;t think so because the twos were looking at 2 different registry keys).</p>
<p align="left">Windows shell team introduced a new shell object called ApplicationAssociationRegistration to allow application registering itself as default for a particular type or protocol, as well as querying the current default. This shell object is only available on Vista, and therefore incorporating that in the code that is also targeted for previous Windows versions needs to be done with care. Tomorrow I&#8217;ll talk about how to use ApplicationAssociationRegistration shell object in a code base that is not exclusively targeted for Vista.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/newoldthing.wordpress.com/39/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/newoldthing.wordpress.com/39/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newoldthing.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newoldthing.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newoldthing.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newoldthing.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newoldthing.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newoldthing.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newoldthing.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newoldthing.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newoldthing.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newoldthing.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newoldthing.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newoldthing.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newoldthing.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newoldthing.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=39&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newoldthing.wordpress.com/2007/03/23/how-does-your-browsers-know-that-its-not-the-default-browser/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af78fcc74bd91db29f18867b41d8c8c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">newoldthing</media:title>
		</media:content>
	</item>
		<item>
		<title>Gadgets Bonanza</title>
		<link>http://newoldthing.wordpress.com/2007/03/20/gadgets-bonanza/</link>
		<comments>http://newoldthing.wordpress.com/2007/03/20/gadgets-bonanza/#comments</comments>
		<pubDate>Tue, 20 Mar 2007 05:30:25 +0000</pubDate>
		<dc:creator>newoldthing</dc:creator>
				<category><![CDATA[Gadgetry]]></category>

		<guid isPermaLink="false">http://newoldthing.wordpress.com/2007/03/20/gadgets-bonanza/</guid>
		<description><![CDATA[After being clean and sober from gadgets consumerism for more than 1 year, I finally decided it&#8217;s time to go &#8220;wild&#8221; once in awhile and satisfied the craving for cutting edge goodies. Here&#8217;s the shortlist of items I managed to obtain during the past 2 months: Nintendo Wii bare package (no bundled games nor accessories), [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=38&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After being clean and sober from gadgets consumerism for more than 1 year, I finally decided it&#8217;s time to go &#8220;wild&#8221; once in awhile and satisfied the craving for cutting edge goodies. Here&#8217;s the shortlist of items I managed to obtain during the past 2 months:</p>
<ul>
<li>Nintendo Wii bare package (no bundled games nor accessories), which is exactly what I wanted since I can always get a deal on games and accessories whenever I feel the need to get them later. After almost 3 months of drought in Wii stocks everywhere in US market, we finally got some relief from Nintendo on mid-February. Essential accessories such as Wii Remote are still scarce as hen&#8217;s teeth, but I don&#8217;t think it will stay that way for much longer. Demands will eventually subside and consistent supply will eventually prevail. I paid USD $225 for the Wii system ($250 MSRP &#8211; 10% off deal for paying with the retailer&#8217;s card), plus some state tax for a total of around $243. Not bad, still cheaper than what most people pay these days for a Wii. I give this gizmo 5 stars out of 5 for its innovative input devices, the fun games, and the economical console price.</li>
<li>Dell 2407WFP Revision A04. In layman words, the 24&#8243; Dell without the banding problem and with 1:1 pixel mapping. Got this with decent deal of 15% off from an already low USD $699 MSRP, plus additional 3% off for paying with Dell account, came down to total of USD $576.33 + state tax. I have to say that I agreed with <a href="http://www.joelonsoftware.com" title="Joel on Software" target="_blank">Joel Spolsky</a>; that buying from Dell was such a drain of energy for all the pre-purchase price history and discount research. Joel mentioned an irrefutable fact about <a href="http://www.joelonsoftware.com/items/2006/07/31.html" title="Why Dell.com Still Feels Like Buying a Used Car" target="_blank">Dell buying experience</a>: &#8220;<em>Whenever we buy servers from Dell, even though they <strong>eventually</strong> offer us a price that beats the competition, we still have to spend a week or two negotiating, gathering competitive bids, etc. By the time we place our order the price we pay is about 20% to 30% </em><em>less than the price advertised on the web, and we&#8217;re still not sure if we could have paid less.</em>&#8221; I give this beautiful and productivity booster gizmo 5 stars out of 5 (also for passing all my initial tests for new LCD monitor and the generous 3 years warranty out of the box), but I must give Dell 2 thumbs down for making purchase decision difficult with its complicated discount schemes and maze-like automated customer service call center (I was plain lucky to find the right sequence that eventually led me to speak to real person after my 3rd attempt).</li>
<li>iHome iH6 iPod speaker system/radio/alarm/digital desktop clock. In a glance, this model looks exactly the same as its older sibling, iH5. The distinctive features of iH6 over iH5 are the Shuffle dock, the equalizer, the complimentary remote iHR6 (you can purchase remote for iH5 optionally, the model is iHR5), and the 12 stations preset (8 FM + 4 AM). Snatch a decent deal from Costco warehouse for USD $89.99 (Costco&#8217;s everyday wholesale price, which is already cheaper than MSRP of iH5, USD $99.99), and with $20 manufacturer&#8217;s coupon, came down to total of USD $69.99. Not bad since the best deal I found so far for iH5 was around $50, so the $20 is definitely worth the extras.</li>
<li>Garmin Nuvi 350. Not exactly the unit I always wanted since I was targeting its successor, Nuvi 360. Both Nuvis pronounce street names and came with NAVTEQ mapping data, which is extremely important for accuracy in North America region. TomTom maybe cheaper but I&#8217;m not paying several hundred bucks just to find that I&#8217;m still lost with a GPS device that has inaccurate or out-of-date mapping data (TeleAtlas mapping data used in TomTom has strong base in Europe but not in North America unfortunately). Nuvi 360 has some nice to have features over Nuvi 350 such as Bluetooth for in car hands-free calling and Garmin lock (anti-theft feature). But for around $100 bucks less (after tax and shipping), I decided to give Nuvi 350 a go. The TCO for this very useful device is USD $350 plus tax and shipping for a total of USD $390 at Costo.com.</li>
<li>OEM Samsung 18x SATA DVD±RW writer and 12x DVD-RAM writer with LightScribe technology, for a nice USD $37 shipped. I&#8217;m not sure why I bought this one, I think it was just a momentary impulse since I knew the price was quite low.</li>
<li>Microsoft Wireless Entertainment Desktop 7000. I didn&#8217;t intentionally buy this Bluetooth keyboard + mouse bundle. It just happened that I visited Microsoft Company Store at Redmond and they just put this product on display for a decent price of USD $100 (MSRP is USD $150). I tried the display model and was fond of the flat, soft, and compact notebook style keys of the keyboard. It&#8217;s a pity that the keyboard is not rechargeable although the companion laser mouse is. The unreleased sibling of this model (Wireless Entertainment Desktop 8000) should have been the perfect keyboard + mouse set for me, the keyboard is rechargeable, and features a USB hub and keyboard backlight. It wasn&#8217;t meant to be&#8230;</li>
</ul>
<p>Next on the list are the Herman Miller Aeron chair (not really a gadget, but it&#8217;s a must have for people with bad back and with the price comparable to 24&#8243; LCD monitor&#8230;) and the bits and pieces for my desktop PC. Let&#8217;s wait and see the Intel price drop next month. I&#8217;ll update this post with some photos and more reviews later.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/newoldthing.wordpress.com/38/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/newoldthing.wordpress.com/38/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newoldthing.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newoldthing.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newoldthing.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newoldthing.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newoldthing.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newoldthing.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newoldthing.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newoldthing.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newoldthing.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newoldthing.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newoldthing.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newoldthing.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newoldthing.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newoldthing.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=38&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newoldthing.wordpress.com/2007/03/20/gadgets-bonanza/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af78fcc74bd91db29f18867b41d8c8c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">newoldthing</media:title>
		</media:content>
	</item>
		<item>
		<title>Battery Exchange Program For Your MBP</title>
		<link>http://newoldthing.wordpress.com/2006/07/31/battery-exchange-program-for-your-mbp/</link>
		<comments>http://newoldthing.wordpress.com/2006/07/31/battery-exchange-program-for-your-mbp/#comments</comments>
		<pubDate>Mon, 31 Jul 2006 17:39:58 +0000</pubDate>
		<dc:creator>newoldthing</dc:creator>
				<category><![CDATA[Gadgetry]]></category>

		<guid isPermaLink="false">https://newoldthing.wordpress.com/2006/07/31/battery-exchange-program-for-your-mbp/</guid>
		<description><![CDATA[How good is that? My MBP and MBP battery have the matching serial-number family, so I&#8217;ll receive my new battery in 3-5 working days. Be hasty. At least one upside of being an early adopter: getting a new battery after 6 months. Thank you, Apple!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=34&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>How good is that? My MBP and MBP battery have the matching serial-number family, so I&#8217;ll receive my new battery in 3-5 working days. <a target="_blank" href="https://support.apple.com/macbookpro15/batteryexchange/index.html" title="MacBook Pro Battery Exchange Program">Be hasty</a>.</p>
<p>At least one upside of being an early adopter: getting a new battery after 6 months. Thank you, Apple!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/newoldthing.wordpress.com/34/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/newoldthing.wordpress.com/34/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newoldthing.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newoldthing.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newoldthing.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newoldthing.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newoldthing.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newoldthing.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newoldthing.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newoldthing.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newoldthing.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newoldthing.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newoldthing.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newoldthing.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newoldthing.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newoldthing.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=34&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newoldthing.wordpress.com/2006/07/31/battery-exchange-program-for-your-mbp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af78fcc74bd91db29f18867b41d8c8c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">newoldthing</media:title>
		</media:content>
	</item>
		<item>
		<title>The Not So Cool Things About The Great USA</title>
		<link>http://newoldthing.wordpress.com/2006/07/21/the-not-so-cool-things-about-the-great-usa/</link>
		<comments>http://newoldthing.wordpress.com/2006/07/21/the-not-so-cool-things-about-the-great-usa/#comments</comments>
		<pubDate>Fri, 21 Jul 2006 05:22:12 +0000</pubDate>
		<dc:creator>newoldthing</dc:creator>
				<category><![CDATA[Non-Sense]]></category>

		<guid isPermaLink="false">https://newoldthing.wordpress.com/2006/07/21/the-not-so-cool-things-about-the-great-usa/</guid>
		<description><![CDATA[This is a living post. I will add more items as I remember them. Here&#8217;s the not so-short list: Obsolete banking. For some reasons, people in the great United States of America are clingy to the obsolete mean of paying others: checks. Can you believe that? CHECKS! Checks are problematic, slow to process, easy to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=33&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is a living post. I will add more items as I remember them. Here&#8217;s the not so-short list:</p>
<ul>
<li>Obsolete banking. For some reasons, people in the great United States of America are clingy to the obsolete mean of paying others: checks. Can you believe that? CHECKS! Checks are problematic, slow to process, easy to misplace, untrustworthy, killing trees, impractical, and having equal if not greater risks of identity theft. And you know how we pay bills in USA? By checks! Some major banks offer online services called &#8220;Paying Bills Online&#8221;. Great! But coming from a country where <a target="_blank" href="http://www.bpay.com/" title="BPAY System in Australia">we literally wire transfer bill-payment</a>, I set a high expectation on this &#8220;Paying Bills Online&#8221; system. It turned out that this system is merely an order system for the bank to write checks on your behalf and then send the checks to the biller through snail-mail. How primitive and insecure is that? It&#8217;s like the old telephone switching system: cool on the outside (you can talk to anyone as long as you know their number), but not-so-cool in the inside (operators have to literally &#8220;connect&#8221; you to the right port manually in order for you reaching the intended number; and of course, &#8220;wrong numbers&#8221; reply were so common back then). Besides, I have to pay my bills 5-7 days in advance of the due date to ensure &#8220;timely&#8221; payment. That 5-7 days window is the time allowed for the snail mail to reach the biller address, and then it&#8217;ll obviously take the biller another 2-3 days to clear and cut the checks. With BPAY system in Australia, I can pay my bills 1 or 2 business days before the due date and I believe my biller can access the money as soon as the wire arrives. People in US love checks so much, that IKEA warehouses have to tell them off (politely of course). IKEA put posters on every cashier that in a nutshell say something like &#8220;<strong>technology is advance</strong> these days, so we regrettably only like your debit or credit cards; but not your checks&#8221;. Thank you IKEA, you remind these folks how several light-years behind they are. And ooh, US banks actually charge you if you transfer money online to your buddies, but they don&#8217;t charge you if you use checks. It&#8217;s the opposite in Australia.</li>
<li>Power outage. I live in Australia for 7 years and not even once, I experience power outage. I&#8217;ve been in New York only 2 months, and already experienced my first black-out. Unbelievable&#8230;</li>
<li>110 Volts&#8230;, and therefore no electric kettle. Have to go back to whistling stovetop kettle. DARN!</li>
<li>Self-service multibay car-wash with high-pressure water guns is rare as hen&#8217;s teeth.</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/newoldthing.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/newoldthing.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newoldthing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newoldthing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newoldthing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newoldthing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newoldthing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newoldthing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newoldthing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newoldthing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newoldthing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newoldthing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newoldthing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newoldthing.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newoldthing.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newoldthing.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=33&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newoldthing.wordpress.com/2006/07/21/the-not-so-cool-things-about-the-great-usa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af78fcc74bd91db29f18867b41d8c8c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">newoldthing</media:title>
		</media:content>
	</item>
		<item>
		<title>7 Habits of Highly Effective Programmers</title>
		<link>http://newoldthing.wordpress.com/2006/04/12/7-habits-of-highly-effective-programmers/</link>
		<comments>http://newoldthing.wordpress.com/2006/04/12/7-habits-of-highly-effective-programmers/#comments</comments>
		<pubDate>Wed, 12 Apr 2006 00:44:35 +0000</pubDate>
		<dc:creator>newoldthing</dc:creator>
				<category><![CDATA[Code Junky]]></category>

		<guid isPermaLink="false">https://newoldthing.wordpress.com/2006/04/12/7-habits-of-highly-effective-programmers/</guid>
		<description><![CDATA[You heard about&#160;the &#34;7 Habits of Highly Effective People&#34; before, now it&#39;s time to be specific and unfold the secrets of 7 Habits of Highly Effective Programmers. Good read! Check it out.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=31&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>You heard about&nbsp;the &quot;<a target="_blank" href="http://www.amazon.com/gp/product/0743269519/sr=8-1/qid=1144802409/ref=pd_bbs_1/002-0670568-2206428?%5Fencoding=UTF8" title="7 Habits of Highly Effective People">7 Habits of Highly Effective People</a>&quot; before, now it&#39;s time to be specific and unfold the secrets of <a target="_blank" href="http://www.technicat.com/writing/programming.html" title="7 Habits of Highly Effective Programmers">7 Habits of Highly Effective Programmers</a>. Good read! Check it out.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/newoldthing.wordpress.com/31/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/newoldthing.wordpress.com/31/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newoldthing.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newoldthing.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newoldthing.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newoldthing.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newoldthing.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newoldthing.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newoldthing.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newoldthing.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newoldthing.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newoldthing.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newoldthing.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newoldthing.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newoldthing.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newoldthing.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=31&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newoldthing.wordpress.com/2006/04/12/7-habits-of-highly-effective-programmers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af78fcc74bd91db29f18867b41d8c8c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">newoldthing</media:title>
		</media:content>
	</item>
		<item>
		<title>2 Weeks with MacBook Pro</title>
		<link>http://newoldthing.wordpress.com/2006/04/08/2-weeks-with-macbook-pro/</link>
		<comments>http://newoldthing.wordpress.com/2006/04/08/2-weeks-with-macbook-pro/#comments</comments>
		<pubDate>Sat, 08 Apr 2006 16:08:10 +0000</pubDate>
		<dc:creator>newoldthing</dc:creator>
				<category><![CDATA[Gadgetry]]></category>

		<guid isPermaLink="false">https://newoldthing.wordpress.com/2006/04/08/2-weeks-with-macbook-pro/</guid>
		<description><![CDATA[Okay, it&#8217;s been 2 weeks since I got my hand on the beautifully engineered MacBook Pro. I felt guilty I haven&#8217;t documented any photos or the switch experience. But I can tell you that it was surprisingly pleasant and smooth, no big drama, no fuss, no frustation. The first couple of days I left my [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=30&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Okay, it&#8217;s been 2 weeks since I got my hand on the beautifully engineered MacBook Pro. I felt guilty I haven&#8217;t documented any photos or the switch experience. But I can tell you that it was surprisingly pleasant and smooth, no big drama, no fuss, no frustation. The first couple of days I left my MacBook Pro at home, because I couldn&#8217;t stand the high-pitched noise (yes, I got that problem unfortunately!) and I need to use laptop I&#8217;m comfortable to work with, I didn&#8217;t feel it that way at that time. I didn&#8217;t have time to install Windows XP on the MacBook Pro with the hacky method of <a href="http://wiki.onmac.net/index.php/HOWTO" title="OnMac How-To" target="_blank">OnMac</a>, where I have to create a custom Windows XP installation CD with a tweaked boot image and homebrew EFI file to boot Windows. No disrespect to these brilliant people who made it happened, it&#8217;s absolutely great if only Apple didn&#8217;t come up with <a href="http://www.apple.com/macosx/bootcamp/" title="Boot Camp" target="_blank">Boot Camp</a>.</p>
<p>Although Boot Camp is credited for doing the heavy-lifting to set up Mac OS X and Windows dual-boot, it&#8217;s actually the <a href="http://www.apple.com/support/downloads/macbookproearly2006firmwareupdate10.html" title="MacBook Pro Firmware Update" target="_blank">firmware update</a> the does the magic. But Boot Camp is so good, that I could set up dual-boot without baby-sitting it for longer than 15 minutes. After upgrading the firmware, I just need to resize Mac OS partition (graphically) to make room for Windows partition, burnt XP driver CD, then inserted Windows XP SP2 with answer file (for non-interactive install) and rebooted the machine. Checked half an hour later, all done, inserted the driver CD, it installed essential drivers and only left minor devices that you can live without, such as the IR port and iSight. The driver installer also includes handy goodies such as &#8220;Startup Disk&#8221; control panel applet to set default partition to boot, AppleCDEject application for making your Eject key works, and program called Brightness that sits on the tray to help with screen brightness.</p>
<p>While Boot Camp almost perfectly set up my Windows XP to work with MacBook&#8217;s devices, there&#8217;re still some pieces missing:</p>
<ul>
<li>How do you do your Ctrl-Alt-Del on that MacBook keyboard? The delete key on the keyboard is actually a Backspace. To solve this problem, you either attach an external keyboard to the laptop, or remap the Delete key to one of those redundant keys (such as the right Apple/command key or the numeric keypad enter key on the bottom of the keyboard). There&#8217;s a utility to do that called remapkey, which you can download as part of <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&amp;displaylang=en" title="Windows 2003 Resource Kit" target="_blank">Windows 2003 resource kit</a>. The utility will store the key remapping information into [HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode map] registry value. Reboot, and there you go, you got your Delete key.</li>
<li>The built-in trackpad doesn&#8217;t have a right click, and Windows doesn&#8217;t understand Ctrl-Click as right click. To solve that problem, you need the <a href="http://www.geocities.com/pronto4u/applemouse.html" title="Apple Mouse Utility" target="_blank">Apple Mouse Utility</a>. Extract applemou.exe to [%windir%\system32] folder, then add &#8220;%windir%\system32\applemou.exe /s&#8221; to [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] registry key to start it up silently upon Windows logon.</li>
<li>Accessing files on your Mac OS X drive from Windows. Unlike Mac OS X understands NTFS, Windows doesn&#8217;t understand HFS+; but <a href="http://www.mediafour.com/products/macdrive6/" title="MacDrive 6" target="_blank">MacDrive from Mediafour</a> can help with that.</li>
</ul>
<p>By the way, I feel compelled to justify why I &#8220;poison&#8221; my beautiful MacBook with Windows XP. For a start, I wrote applications for Windows for a living. Two, because I work from home sometimes, I need to VPN to the corporate network. Whilst Apani Contivity VPN client works great, my company only provides Contivity VPN Client for Windows.</p>
<p>Now, the Mac OS X experience. First couple of days was a bit challenging. Installed Microsoft Remote Desktop client, and because it&#8217;s not Universal Binary yet, it ran like a snail. Typing onto remote box lagged horribly. So found rdesktop as an alternative, but for mortal Windows users like me, that wasn&#8217;t straightforward to set up. I had to learn using Fink to download and install libs required to compile rdesktop, installed X11 from Tiger CD, and finally compiled rdesktop source code. It&#8217;s all good now, and rdesktop really flies compared to Microsoft Remote Desktop client.</p>
<p>It didn&#8217;t stop there. I thought I need a good UI for rdesktop. Obviously, tsclient is the one, but unfortunately it requires some Gnome libraries that are not available for Mac OS X. So I looked at Automator and saw an opportunity to learn Cocoa by developing Automator Action GUI with XCode and InterfaceBuilder. I&#8217;ll revisit my Cocoa learning experience in near future if I have the time.</p>
<p>One thing from Windows that I missed on Mac OS was the ability to hibernate (safe-sleep) on-demand. I didn&#8217;t even know that Mac OS is capable of doing that until I put my MacBook to sleep for several hours, and when I woke it up, it unusually displayed a progress bar with monochrome background of the last screen state before it was put to sleep. Ok, so Mac OS is capable of hibernating when required, just need to know how to make it do so on-demand. Follow <a href="http://www.andrewescobar.com/archive/2005/11/11/how-to-safe-sleep-your-mac/" title="How to enable safe-sleep" target="_blank">this instruction</a>, and then the next minute, my MacBook couldn&#8217;t boot when I restarted it. Great, the display showed a nice blinking globe. Found <a href="http://www.apple.com/au/support/mac101/help/2/" title="Mac 101 Troubleshooting" target="_blank">this helpful troubleshooting tips</a>, and my MacBook was back in business after I pressed the combo keys (command-option-P-R), and it now hibernates on-demand (actually it now hibernates everytime I put it to sleep). Sad, so I can only have regular sleep or safe-sleep, but not both. Why I need hibernation so desperately? Because I would like to prolong my battery life expectancy, I removed the battery at 50% charge (conforming to <a href="http://www.apple.com/batteries/notebooks.html" title="Apple Batteries" target="_blank">Apple instructions</a>); so if I don&#8217;t hibernate and the so-easily-detached MagSafe decides to come-off, I&#8217;m screwed. And by the way, I hate that MagSafe. I&#8217;ve never tripped on power cable before and I didn&#8217;t live with someone clumsy enought to trip on power cable; so apart from annoying me several times because it easily disconnected power upon contact with my laps, MagSafe is pretty pointless to me. Ah well, can&#8217;t make everybody happy.</p>
<p>One more thing&#8230;, the high-pitched noise in my MacBook is gone when I boot Windows and back when I boot Mac OS X. While I can get rid of the noise on Mac OS X by running Photo Booth, I don&#8217;t see that as an elegant long-term solution. My MacBook has revision C motherboard (serial starts with W8610), and according this, I should be able to <a href="http://www.dailytech.com/article.aspx?newsid=1584" title="Apple Addresses MacBook Pro Issues" target="_blank">swap my MacBook mobo with the latest revision</a>. I&#8217;ll see how it develops before turning in my MacBook. I believe playing waiting game in this case will pay incentive.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/newoldthing.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/newoldthing.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newoldthing.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newoldthing.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newoldthing.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newoldthing.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newoldthing.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newoldthing.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newoldthing.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newoldthing.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newoldthing.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newoldthing.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newoldthing.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newoldthing.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newoldthing.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newoldthing.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=30&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newoldthing.wordpress.com/2006/04/08/2-weeks-with-macbook-pro/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af78fcc74bd91db29f18867b41d8c8c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">newoldthing</media:title>
		</media:content>
	</item>
		<item>
		<title>Oh How Much We Fall from Grace</title>
		<link>http://newoldthing.wordpress.com/2006/03/21/oh-how-much-we-fall-from-grace/</link>
		<comments>http://newoldthing.wordpress.com/2006/03/21/oh-how-much-we-fall-from-grace/#comments</comments>
		<pubDate>Tue, 21 Mar 2006 12:14:39 +0000</pubDate>
		<dc:creator>newoldthing</dc:creator>
				<category><![CDATA[Non-Sense]]></category>

		<guid isPermaLink="false">https://newoldthing.wordpress.com/2006/03/21/oh-how-much-we-fall-from-grace/</guid>
		<description><![CDATA[Great words to ponder from Proverbs: When pride comes, then comes disgrace, but with humility comes wisdom &#8211; Proverbs 11:2  Pride only breeds quarrels, but wisdom is found in those who take advice &#8211; Proverbs 13:10 A man&#8217;s pride brings him low, but a man of lowly spirit gains honor &#8211; Proverbs 29:23 A friend [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=29&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Great words to ponder from Proverbs:</p>
<blockquote><p>When pride comes, then comes disgrace, but with humility comes wisdom &#8211; Proverbs 11:2 </p>
<p>Pride only breeds quarrels, but wisdom is found in those who take advice &#8211; Proverbs 13:10</p>
<p>A man&#8217;s pride brings him low, but a man of lowly spirit gains honor &#8211; Proverbs 29:23</p>
<p>A friend loves at all times, and a brother is born for adversity &#8211; Proverbs 17:17</p>
<p>Like clouds and wind without rain is a man who boasts of gifts he does not give &#8211; Proverbs 25:14</p></blockquote>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/newoldthing.wordpress.com/29/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/newoldthing.wordpress.com/29/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/newoldthing.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/newoldthing.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/newoldthing.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/newoldthing.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/newoldthing.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/newoldthing.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/newoldthing.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/newoldthing.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/newoldthing.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/newoldthing.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/newoldthing.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/newoldthing.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/newoldthing.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/newoldthing.wordpress.com/29/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=newoldthing.wordpress.com&amp;blog=3769&amp;post=29&amp;subd=newoldthing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://newoldthing.wordpress.com/2006/03/21/oh-how-much-we-fall-from-grace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af78fcc74bd91db29f18867b41d8c8c3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">newoldthing</media:title>
		</media:content>
	</item>
	</channel>
</rss>
