<?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>Recursive pondering</title>
	<atom:link href="http://capehart.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://capehart.wordpress.com</link>
	<description>Fractal thoughts</description>
	<lastBuildDate>Tue, 23 Nov 2010 02:56:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='capehart.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Recursive pondering</title>
		<link>http://capehart.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://capehart.wordpress.com/osd.xml" title="Recursive pondering" />
	<atom:link rel='hub' href='http://capehart.wordpress.com/?pushpress=hub'/>
		<item>
		<title>On reduction in force</title>
		<link>http://capehart.wordpress.com/2010/11/19/on-reduction-in-force/</link>
		<comments>http://capehart.wordpress.com/2010/11/19/on-reduction-in-force/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 00:08:40 +0000</pubDate>
		<dc:creator>capehart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capehart.wordpress.com/?p=97</guid>
		<description><![CDATA[Today I was laid off because of a reduction in force at my company. I am not really upset about losing a job; I can get another one. No, what upsets me is losing that particular job. I enjoyed working there; it was a good company, good people, and very cool products. However, this is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=97&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I was laid off because of a reduction in force at my company. I am not really upset about losing a job; I can get another one. No, what upsets me is losing that particular job. I enjoyed working there; it was a good company, good people, and very cool products.</p>
<p>However, this is an excellent opportunity to do something else exciting, find another good job, maybe move somewhere interesting, and work on a new and interesting product.</p>
<p>I am sure the company had trouble with an interesting but troubling dilemma: how to reduce costs without sacrificing the ability to produce the products the company needs to make sales. I am not sure if reducing their development force was really the best idea; who will build the new products and features they need to make sales?</p>
<p>I wish them best of luck in their endeavors, and hope things go well for them. As for me,  it is time to, in the words of Mark Twain, “…throw off the bowlines. Sail away from the safe harbor. Catch the trade winds in your sails. Explore. Dream. Discover.”</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capehart.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capehart.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/capehart.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/capehart.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/capehart.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/capehart.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/capehart.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/capehart.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/capehart.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/capehart.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/capehart.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/capehart.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/capehart.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/capehart.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=97&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capehart.wordpress.com/2010/11/19/on-reduction-in-force/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50fc5e95298af3d1a81a72786c61f2d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capehart</media:title>
		</media:content>
	</item>
		<item>
		<title>On Ruby Hashes</title>
		<link>http://capehart.wordpress.com/2010/11/01/on-ruby-hashes/</link>
		<comments>http://capehart.wordpress.com/2010/11/01/on-ruby-hashes/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 19:09:44 +0000</pubDate>
		<dc:creator>capehart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capehart.wordpress.com/?p=94</guid>
		<description><![CDATA[Suppose we are to create an array of hashes in ruby like so: a = [] h = {:a=&#8221;a&#8221;} a &#60;&#60; h h[:a] = &#8220;b&#8221; a &#60;&#60; h h[:a] = &#8216;c&#8221; a &#60;&#60; h What will the array contain? Interestingly, it will contain [{:a=&#62;"c"}, {:a=&#62;"c"}, {:a=&#62;"c"}]. This shows that appending the hash into the array [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=94&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Suppose we are to create an array of hashes in ruby like so:</p>
<p>a = []<br />
h = {:a=&#8221;a&#8221;}<br />
a &lt;&lt; h<br />
h[:a] = &#8220;b&#8221;<br />
a &lt;&lt; h<br />
h[:a] = &#8216;c&#8221;<br />
a &lt;&lt; h</p>
<p>What will the array contain? Interestingly, it will contain [{:a=&gt;"c"}, {:a=&gt;"c"}, {:a=&gt;"c"}].</p>
<p>This shows that appending the hash into the array is by reference.</p>
<p>When I had to do something like this I used this very simple work around:</p>
<p>a = []<br />
h = {:a=&#8221;a&#8221;}<br />
a &lt;&lt; Hash[h]<br />
h[:a] = &#8220;b&#8221;<br />
a &lt;&lt; Hash[h]<br />
h[:a] = &#8216;c&#8221;<br />
a &lt;&lt; Hash[h]</p>
<p>This causes a new hash to be created and assigned with each append.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capehart.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capehart.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/capehart.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/capehart.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/capehart.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/capehart.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/capehart.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/capehart.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/capehart.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/capehart.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/capehart.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/capehart.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/capehart.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/capehart.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=94&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capehart.wordpress.com/2010/11/01/on-ruby-hashes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50fc5e95298af3d1a81a72786c61f2d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capehart</media:title>
		</media:content>
	</item>
		<item>
		<title>On COMDAT Folding</title>
		<link>http://capehart.wordpress.com/2010/09/22/on-comdat-folding/</link>
		<comments>http://capehart.wordpress.com/2010/09/22/on-comdat-folding/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 20:11:50 +0000</pubDate>
		<dc:creator>capehart</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[breakpoint]]></category>
		<category><![CDATA[COMDAT Folding]]></category>
		<category><![CDATA[disable]]></category>
		<category><![CDATA[disabled]]></category>
		<category><![CDATA[disables]]></category>
		<category><![CDATA[enable]]></category>
		<category><![CDATA[enabled]]></category>
		<category><![CDATA[enables]]></category>
		<category><![CDATA[move]]></category>
		<category><![CDATA[moved]]></category>
		<category><![CDATA[moves]]></category>
		<category><![CDATA[Visual Studio 2008]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[wrong address]]></category>
		<category><![CDATA[wrong function]]></category>
		<category><![CDATA[wrong line]]></category>
		<category><![CDATA[wrong location]]></category>

		<guid isPermaLink="false">http://capehart.wordpress.com/?p=92</guid>
		<description><![CDATA[My father, Nolan Capehart (also a Software Engineer) discovered this Visual Studio bug and wrote up an explanation. Symptoms: You build a project in Visual Studio, set a breakpoint, and execute. However, the breakpoint immediately disappears (completely &#8211; not just temporarily disabled), and a breakpoint appears somewhere else. If execution stops on the new breakpoint, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=92&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My father, Nolan Capehart (also a Software Engineer) discovered this Visual Studio bug and wrote up an explanation.</p>
<p>Symptoms: You build a project in Visual Studio, set a breakpoint, and execute. However, the breakpoint immediately disappears (completely &#8211; not just temporarily disabled), and a breakpoint appears somewhere else. If execution stops on the new breakpoint, examination of the call stack might show that the function in which execution stopped was in fact called, or it might show that instead the function with the original breakpoint was called, or it might even show that a third function was called. If you go up one level in the call stack, and examine the disassembled code, you might see code to call the function in which execution stopped, or you might see code to call the function with the original breakpoint, or you might even see code to call a third function.</p>
<p>Explanation by Way of Demonstration:</p>
<p>Here&#8217;s a fun little demonstration of how to get yourself into trouble by optimizing a debug build, even when you don&#8217;t realize you&#8217;re optimizing. This demonstration works for me in Visual Studio 2008. There is possibly some element of randomness in some choices made by the compiler to cause this, so it might not work in other versions of VS, and it might not even work all the time in VS 2008.</p>
<p>Create a project. Make it a console project. Set these configuration settings for the debug build:<br />
[C/C++].[General].[Debug Information Format] to &#8220;Program Database (/Zi)&#8221;.<br />
[C/C++].[Code Generation].[Enable Function-Level Linking] to &#8220;Yes (/Gm)&#8221;.<br />
[Linker].[Debugging].[Generate Map File] to &#8220;Yes (/MAP)&#8221;.<br />
[Linker].[Optimization].[EnableCOMDAT Folding] = &#8220;Remove Redundant COMDATs (/OPT:ICF)&#8221;</p>
<p>Note that the problem will occur EVEN IF you disable optimization by setting [C/C++].[Optimization].[Optimization] to &#8220;Disabled (/Od)&#8221;.</p>
<p>Replace the contents of the main cpp file with this:<br />
#include &#8220;stdafx.h&#8221;</p>
<p>void ambulate() {<br />
}</p>
<p>class CJumper {<br />
public:<br />
CJumper() : m_NumberOfJumps(0) {}<br />
void jump();<br />
int m_NumberOfJumps;<br />
} Jumper;</p>
<p>void CJumper::jump() {<br />
ambulate();<br />
++m_NumberOfJumps;<br />
}</p>
<p>class CSkipper {<br />
public:<br />
CSkipper() : m_NumberOfSkips(0) {}<br />
void skip();<br />
int m_NumberOfSkips;<br />
} Skipper;</p>
<p>void CSkipper::skip() {<br />
ambulate();<br />
++m_NumberOfSkips;<br />
}</p>
<p>class CHopper {<br />
public:<br />
CHopper() : m_NumberOfHops(0) {}<br />
void hop();<br />
int m_NumberOfHops;<br />
} Hopper;</p>
<p>void CHopper::hop() {<br />
ambulate();<br />
++m_NumberOfHops;<br />
}</p>
<p>int _tmain(int argc, _TCHAR* argv[]) {<br />
Skipper.skip();<br />
return 0;<br />
}</p>
<p>Put a breakpoint on any line of skip().</p>
<p>Build and execute the debug version.</p>
<p>Amazingly, the breakpoint on hop will disappear, and a breakpoint will magically appear on skip, and execution will stop there. But looking at the call stack or the disassembled code, you will see that jump() was called!!!</p>
<p>When COMDAT Folding is enabled, the linker will notice that each function has exactly the same code, so it will make only one function which will be called in all three instances. Unfortunately, this totally confuses the debugger.</p>
<p>Take a look at the addresses of hop, skip, and jump in the map file. They are all the same.</p>
<p>&#8220;But they DON&#8217;T all do the same thing,&#8221; I can hear you say. &#8220;One of them increments a member of CJumper, one increments a member of CSkipper, and the third increments a member of CHopper.&#8221;</p>
<p>&#8216;Tis true, but what does that look like at the machine level? In each case, a call to the function consists of passing into the function a pointer (the &#8220;this&#8221; pointer), which the function will use as a pointer to an integer to be incremented. So they really ARE exactly the same.</p>
<p>Now insert:<br />
int m_NotUsed;<br />
immediately before the declaration of m_NumberOfSkips. Build and execute. This time, it works as expected, hitting the breakpoint in skip(). This happens because now skip is different than the other functions. Instead of incrementing the integer pointed to by its argument, it increments the next integer. So, the linker can no longer have one function to represent all three apparent functions.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capehart.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capehart.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/capehart.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/capehart.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/capehart.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/capehart.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/capehart.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/capehart.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/capehart.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/capehart.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/capehart.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/capehart.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/capehart.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/capehart.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=92&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capehart.wordpress.com/2010/09/22/on-comdat-folding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50fc5e95298af3d1a81a72786c61f2d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capehart</media:title>
		</media:content>
	</item>
		<item>
		<title>On the Acquisition of Skill</title>
		<link>http://capehart.wordpress.com/2009/11/05/on-the-acquisition-of-skill/</link>
		<comments>http://capehart.wordpress.com/2009/11/05/on-the-acquisition-of-skill/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 15:24:24 +0000</pubDate>
		<dc:creator>capehart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capehart.wordpress.com/?p=85</guid>
		<description><![CDATA[I have been reading up on the Dreyfus Model of skill acquisition. I like the model reasonably well. I have always been a big proponent of something along the lines of Reflective Practice; that is, trying to understand your own learning and skill, and use this understanding to improve your skill; similar is meta-cognition (thinking [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=85&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have been reading up on the <a href="http://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition">Dreyfus Model of skill acquisition</a>. I like the model reasonably well. I have always been a big proponent of something along the lines of <a href="http://en.wikipedia.org/wiki/Reflective_practice">Reflective Practice</a>; that is, trying to understand your own learning and skill, and use this understanding to improve your skill; similar is meta-cognition (thinking about thinking).</p>
<p>While moving some wood out to the trash pile (I do some of my best thinking while doing physical work), I had an interesting thought. The Dreyfus model does work well in modeling the acquisition of skill in a given subject, and can be nicely expanded on. Specifically, it can be used to model the acquisition of <strong>general</strong> skill. As you acquire skill in any given subject, you acquire a sort of understanding of the way skill works in general &#8211; unconsciously or, with meta-cognition, very consciously &#8211; and can move up through the levels of understanding much more quickly in other subjects. In fact you can, through certain types of exercises in meta-cognition, acquire this skill even faster. I suppose we could call it <strong>meta-skill</strong>.<br />
I think perhaps the most important thing you must do to acquire this meta-skill is to decompartmentalize your mind; you must learn to connect each of your experiences with the rest, not thinking about something in isolation. Sometimes you have to think about something in isolation, but it needs to be a conscious, temporary thing. After all, if your experiences are disconnected in your mind, how can one field you possess skill in help you acquire skill in another?</p>
<p>The idea of decompartmentalization in meta-cognition is extremely important in even a single field. Take, for example, my primary field: software engineering. To simply believe that understanding syntax and a few maxims like &#8220;write lots of comments&#8221; will give you the ability to be a good software engineer is laughable. However, this is how many students &#8211; and even some professionals &#8211; view things. They ignore the complex and vital relationships between mathematics and programming for instance. Things get even worse when they start to try to work in a problem domain that they are not used to; they have no idea how to apply programming to the problem! It&#8217;s alright to start out like this &#8211; the <em>novice</em> level of the Dreyfus model &#8211; but one needs to move past it to become more skilled.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capehart.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capehart.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/capehart.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/capehart.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/capehart.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/capehart.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/capehart.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/capehart.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/capehart.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/capehart.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/capehart.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/capehart.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/capehart.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/capehart.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=85&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capehart.wordpress.com/2009/11/05/on-the-acquisition-of-skill/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50fc5e95298af3d1a81a72786c61f2d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capehart</media:title>
		</media:content>
	</item>
		<item>
		<title>On interviewing for fun and learning</title>
		<link>http://capehart.wordpress.com/2009/10/24/on-interviewing-for-fun-and-learning/</link>
		<comments>http://capehart.wordpress.com/2009/10/24/on-interviewing-for-fun-and-learning/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 01:45:54 +0000</pubDate>
		<dc:creator>capehart</dc:creator>
				<category><![CDATA[Interviewing]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://capehart.wordpress.com/?p=80</guid>
		<description><![CDATA[A lot of people don&#8217;t like interviews; I think this is a shame. They offer great opportunities for fun and learning. Fun? Well, you are getting the opportunity to talk about the thing you love, programming. And if you don&#8217;t love programming, why are you interviewing for a programming job? And when the interviewers ask [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=80&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A lot of people don&#8217;t like interviews; I think this is a shame. They offer great opportunities for fun and learning.</p>
<p>Fun? Well, you are getting the opportunity to talk about the thing you love, programming. And if you don&#8217;t love programming, why are you interviewing for a programming job? And when the interviewers ask technical question you get to solve a cool puzzle (assuming the interviewer is good). Plus, you get to brag about your accomplishments, and chat about your experiences. How often do you get to this, except when showing vacation pictures to captive family members?</p>
<p>As for learning, the whole thing is rife with possibilities. When they ask a questions you don&#8217;t know the answer too, that just means there is one more cool thing to learn about that is also important to prospective employers. If you can get them to describe it to you, you immediately get to learn about it, and can perhaps impress the interviewers if you grasp the concepts quickly enough.<br />
For example, at my last interview the RAII (Resource Acquisition Is Initialization) idiom was brought up. I feel pretty dumb for not knowing about it, since it is such a simple idea, but I got it pretty quick when it was explained. It is very valuable, and I have read more on it now, and am very glad for it.</p>
<p>Why wouldn&#8217;t you get a kick out of getting to do this?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capehart.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capehart.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/capehart.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/capehart.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/capehart.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/capehart.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/capehart.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/capehart.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/capehart.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/capehart.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/capehart.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/capehart.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/capehart.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/capehart.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=80&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capehart.wordpress.com/2009/10/24/on-interviewing-for-fun-and-learning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50fc5e95298af3d1a81a72786c61f2d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capehart</media:title>
		</media:content>
	</item>
		<item>
		<title>On global objects</title>
		<link>http://capehart.wordpress.com/2009/07/15/on-global-objects/</link>
		<comments>http://capehart.wordpress.com/2009/07/15/on-global-objects/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 17:51:53 +0000</pubDate>
		<dc:creator>capehart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capehart.wordpress.com/?p=76</guid>
		<description><![CDATA[Global objects and variables are usually considered a bit of a no-no in programming. However, sometimes they are unavoidable, and oftentimes the prohibition can cause more troubles then it prevents. The biggest reason for avoiding globals is that it makes it so any function can change them at any time, making it harder to trace [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=76&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Global objects and variables are usually considered a bit of a no-no in programming. However, sometimes they are unavoidable, and oftentimes the prohibition can cause more troubles then it prevents.</p>
<p>The biggest reason for avoiding globals is that it makes it so any function can change them at any time, making it harder to trace execution and debug programs. However, sometimes avoiding them requires passing around a lot of arguments that can increase complexity and reduce understanding much worse than having them! This is especially the case if a function has to accept an argument just because a function that is called by a function that it calls needs it! We don’t always need to do this, and in those cases globals should be avoided like the plague; they should not be used just so you don’t have to be disciplined in argument passing.</p>
<p>However, in those cases where an object/variable is truly needed in a global scope, such as the console in an OS kernel, passing it around would be a nightmare. In these cases globals are something to be used, cautiously.</p>
<p>In the case of global objects in C++, another problem rears its ugly head: order of initialization. When a program is run, all globals are initialized, usually by functions provided by the standard library, or by you in kernels and low level code. The problem is that the <em>order </em>of initialization is undefined. When the program starts, every global object address is considered valid, but has not been initialized. If one object tries to use an uninitialized object in construction, there’s a problem, and it’s usually a run time error. To prevent this, we can use global object functions, like so:</p>
<p>Foo&amp; getGlobalFoo() {<br />
static Foo g_foo;<br />
return f_foo;<br />
}</p>
<p>The first time the function is called the object is created and initialized. Because it is declared static, it is only created once and the same instance is used through the whole program. The best part is that we don’t need to worry about initialization order at all; the function calls will cascade down, creating each function as needed. In a fast response system we may not want this, so then we can call each one, in the correct order, on entering main (or wherever makes sense).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capehart.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capehart.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/capehart.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/capehart.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/capehart.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/capehart.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/capehart.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/capehart.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/capehart.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/capehart.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/capehart.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/capehart.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/capehart.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/capehart.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=76&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capehart.wordpress.com/2009/07/15/on-global-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50fc5e95298af3d1a81a72786c61f2d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capehart</media:title>
		</media:content>
	</item>
		<item>
		<title>On building a C++ kernel</title>
		<link>http://capehart.wordpress.com/2009/07/15/on-building-a-c-kernel/</link>
		<comments>http://capehart.wordpress.com/2009/07/15/on-building-a-c-kernel/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 17:33:58 +0000</pubDate>
		<dc:creator>capehart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capehart.wordpress.com/?p=74</guid>
		<description><![CDATA[It takes a lot of work to get an OS kernel working in C++. I finally fixed the problem in my previous post, which was a linking error. Now, the basics can be done by linking largely the same way as for C, but important features (such as virtual functions!) require more work. Worse yet, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=74&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It takes a lot of work to get an OS kernel working in C++. I finally fixed the problem in my previous post, which was a linking error.</p>
<p>Now, the basics can be done by linking largely the same way as for C, but important features (such as virtual functions!) require more work. Worse yet, there is very little documentation of the subject.</p>
<p>It took me a couple hours of stepping through assembly while watching registers, as well as reading through some LD scripts, but I finally figured out some of the problems.</p>
<p>1. Virtual functions: A virtual function call through a pointer in C++ requires a vtable lookup. This vtable is compiled (at least in GCC) with a linkonce.t label. If LD does not find a reference to this in its script, it will simply toss the whole section and continue as if nothing happened! So, we have to tell LD where to put it, as such:</p>
<p>.text phys : AT(phys) {<br />
code = .;<br />
*(.text)<br />
*(.gnu.linkonce.t.*)<br />
*(.gnu.linkonce.r.*)<br />
*(.rodata)<br />
. = ALIGN(4096);<br />
}</p>
<p>2. Above is also a linkonce.r label. This is used, (possibly for other things as well?) for member functions defined in the class body. Same problem of non-inclusion if not expressly linked.</p>
<p>A good source for information, but far from complete, is: http://wiki.osdev.org/C_PlusPlus</p>
<p>There they discuss some important issues, such as global objects (see my next post!), pure virtual functions, etc.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capehart.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capehart.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/capehart.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/capehart.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/capehart.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/capehart.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/capehart.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/capehart.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/capehart.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/capehart.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/capehart.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/capehart.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/capehart.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/capehart.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=74&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capehart.wordpress.com/2009/07/15/on-building-a-c-kernel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50fc5e95298af3d1a81a72786c61f2d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capehart</media:title>
		</media:content>
	</item>
		<item>
		<title>On OS difficulties</title>
		<link>http://capehart.wordpress.com/2009/06/26/on-os-difficulties/</link>
		<comments>http://capehart.wordpress.com/2009/06/26/on-os-difficulties/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 21:59:51 +0000</pubDate>
		<dc:creator>capehart</dc:creator>
				<category><![CDATA[Assembly]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[System level programming]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://capehart.wordpress.com/?p=72</guid>
		<description><![CDATA[I&#8217;ve been building the C++ OS that I mentioned in a previous post. There are fairly significant difficulties, and now I suspect there are some issues with the build process I was provided with. I&#8217;m using djgpp (a windows port of GNU gcc), including gpp, ld and make. I am using the bochs emulator to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=72&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been building the C++ OS that I mentioned in a previous post. There are fairly significant difficulties, and now I suspect there are some issues with the build process I was provided with. I&#8217;m using djgpp (a windows port of GNU gcc), including gpp, ld and make. I am using the bochs emulator to run the OS.</p>
<p>Well, the big problem is that the system dies when any attempt is made to do an indirect virtual function call; that is, any call to a virtual function through a pointer instead of an object. I have been using the free version of the IDA disassembler to examine to fully linked executable. The full version is over $400, but even the free version is nice!</p>
<p>The best idea I have come up with yet is that the vtable is somehow not being initialized or even allocated. The best indication of this is that when the vtable reference is made the address of the function is supposed to be in the eax register, at least with the compiler and architecture I am using. The problem is that it is not! By the time the function is called, eax contains 0&#215;0, which is quite bad.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capehart.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capehart.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/capehart.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/capehart.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/capehart.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/capehart.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/capehart.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/capehart.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/capehart.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/capehart.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/capehart.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/capehart.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/capehart.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/capehart.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=72&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capehart.wordpress.com/2009/06/26/on-os-difficulties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50fc5e95298af3d1a81a72786c61f2d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capehart</media:title>
		</media:content>
	</item>
		<item>
		<title>On operating system education</title>
		<link>http://capehart.wordpress.com/2009/05/20/on-operating-system-education/</link>
		<comments>http://capehart.wordpress.com/2009/05/20/on-operating-system-education/#comments</comments>
		<pubDate>Wed, 20 May 2009 15:31:51 +0000</pubDate>
		<dc:creator>capehart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capehart.wordpress.com/?p=70</guid>
		<description><![CDATA[The CS department here at A&#38;M has recently gone through a complete program redesign. I will be on of the first students to complete the new program. Now, a certain class, a capstone, is required for graduation. However, this class does not exist, and will not exist until the semester after I am slated to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=70&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The CS department here at A&amp;M has recently gone through a complete program redesign. I will be on of the first students to complete the new program. Now, a certain class, a capstone, is required for graduation. However, this class does not exist, and will not exist until the semester <em>after</em> I am slated to graduate. So, the adviser gave me the option of doing an undergraduate research project instead. While I am not as interested in research as practical work, the subject is not without its benefit, and I found a project of interest.</p>
<p>I am to design and implement the machine problems (projects) for the senior level operating system class here at A&amp;M. The professor in charge of the class asked me to do this because he does not have the time, and does not get a TA early enough; especially since it will take a couple months. He wants it to be designed in an extremely modular fashion, so the students can take out a module and replace it with their own. I will implement these modules (such as paging management, non-blocking keyboard I/O, etc.) with naive algorithms and techniques. The students will be assigned to remove my module and code in their own, using appropriate algorithms. This has some pretty nifty benefits:  the students will have a largely working operating system in which to test their algorithms; the professor can pick and choose which aspects of the OS he wants to teach; and the simple design will allow the students to learn from the whole system, not just the assigned parts.</p>
<p>To allow this modularity the professor would like me to build the OS in C++. I am not completely convinced this can be done well, but I have some ideas and am certainly going to try. I am currently learning the about the C++ object model implementation so that I can work with it to get the results I need.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capehart.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capehart.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/capehart.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/capehart.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/capehart.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/capehart.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/capehart.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/capehart.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/capehart.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/capehart.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/capehart.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/capehart.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/capehart.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/capehart.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=70&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capehart.wordpress.com/2009/05/20/on-operating-system-education/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50fc5e95298af3d1a81a72786c61f2d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capehart</media:title>
		</media:content>
	</item>
		<item>
		<title>On Colorado</title>
		<link>http://capehart.wordpress.com/2009/03/25/on-colorado/</link>
		<comments>http://capehart.wordpress.com/2009/03/25/on-colorado/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 14:41:28 +0000</pubDate>
		<dc:creator>capehart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://capehart.wordpress.com/?p=68</guid>
		<description><![CDATA[Lauren and I spent spring break in Denver and the surrounding area, snowshoeing around mountains and hiking in Canyons. It was immense fun, and good relaxation, but was also to see if the Denver area was somewhere I might like to live. I still need to do a bit of research on cost of living, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=68&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Lauren and I spent spring break in Denver and the surrounding area, snowshoeing around mountains and hiking in Canyons. It was immense fun, and good relaxation, but was also to see if the Denver area was somewhere I might like to live. I still need to do a bit of research on cost of living, taxes, etc., but I really like it so far. Denver is a much nicer city than Houston or Austin. It feels less crowded, even during rush hour, and a bit cleaner. There are lots of people into outdoor activities (how could you not be, with the mountains right there?) There area around Denver is a little odd though: everything east, mostly north and south as well, is extremely dry and brown in the early spring. However, to the West are beautiful mountains, with lush green trees on the Western side.</p>
<p>I think if I lived there, I would want to live West of Denver, maybe South-West, and drive into work. My top interest in a job right now is Lockheed Martin in Denver. They are a great company, I could work there I would love on exciting projects, live in a beautiful place, and I could hopefully even work at the space systems company, my greatest interest of all.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/capehart.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/capehart.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/capehart.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/capehart.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/capehart.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/capehart.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/capehart.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/capehart.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/capehart.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/capehart.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/capehart.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/capehart.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/capehart.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/capehart.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=capehart.wordpress.com&amp;blog=5021277&amp;post=68&amp;subd=capehart&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://capehart.wordpress.com/2009/03/25/on-colorado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50fc5e95298af3d1a81a72786c61f2d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">capehart</media:title>
		</media:content>
	</item>
	</channel>
</rss>
