<?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>Game Programming, Etc.</title>
	<atom:link href="http://jgiors.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jgiors.wordpress.com</link>
	<description>Games, programming, and related topics -- by John Giors</description>
	<lastBuildDate>Fri, 27 Mar 2009 08:43:11 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='jgiors.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/d190b1bbf80e7a3140bd1ec8df6dff8f?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Game Programming, Etc.</title>
		<link>http://jgiors.wordpress.com</link>
	</image>
			<item>
		<title>#ifdef vs #if (part 1)</title>
		<link>http://jgiors.wordpress.com/2009/03/27/ifdef-vs-if-part-1/</link>
		<comments>http://jgiors.wordpress.com/2009/03/27/ifdef-vs-if-part-1/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 08:43:11 +0000</pubDate>
		<dc:creator>jgiors</dc:creator>
				<category><![CDATA[C Preprocessor series]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://jgiors.wordpress.com/?p=126</guid>
		<description><![CDATA[In C/C++, it is common to compile some sections of code conditionally, e.g. debugging code, new untested features, cross-platform support, etc. The most common way to conditionally compile code is to use the #define preprocessor directive, then bracket conditionally compiled code with either #ifdef or #if.
Here is a simple #ifdef example:

#define DEBUG_SYSTEMX  //remove this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=126&subd=jgiors&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In C/C++, it is common to compile some sections of code conditionally, e.g. debugging code, new untested features, cross-platform support, etc. The most common way to conditionally compile code is to use the <code>#define</code> preprocessor directive, then bracket conditionally compiled code with either <code>#ifdef</code> or <code>#if</code>.</p>
<p>Here is a simple <code>#ifdef</code> example:</p>
<blockquote>
<pre>#define DEBUG_SYSTEMX  //remove this #define to disable (e.g. comment-out this line).
//...
#ifdef DEBUG_SYSTEMX
    //... system x debugging code ...
#endif</pre>
</blockquote>
<p>And, here is a simple <code>#if</code> example:</p>
<blockquote>
<pre>#define NEW_FEATURE  1  //change 1 to 0 to disable
//...
#if NEW_FEATURE
    //... new feature code ...
#endif</pre>
</blockquote>
<p>Both of the above accomplish the same thing (conditional compilation), but they have different implications, e.g. the following will cause a compiler error when <code>DEBUG_SYSTEMX</code> is defined:</p>
<blockquote>
<pre>#if DEBUG_SYSTEMX  //BAD! #if WHEN IT SHOULD BE #ifdef
    // ... system x debugging code ...
#endif</pre>
</blockquote>
<p>However, when <code>DEBUG_SYSTEMX</code> is not defined, the code will be compiled out because the preprocessor treats undefined macros as 0 in conditional tests (which just so happens to match expectation).</p>
<p>The following would not work as intended, either:</p>
<blockquote>
<pre>#ifdef NEW_FEATURE  //BAD! #ifdef WHEN IT SHOULD BE #if
    // ... new feature code ...
#endif</pre>
</blockquote>
<p>Because <code>NEW_FEATURE</code> is always defined (to either 1 or 0), <code>#ifdef NEW_FEATURE</code> is always true, and the supposedly &#8220;conditional&#8221; code is always compiled.</p>
<p>So, both cases (<code>#ifdef</code> and <code>#if</code>) have problems if you accidentally use the incorrect test.</p>
<p>Of the two problems, using <code>#ifdef</code> when it should be <code>#if</code> appears to be the more serious error, since it can result in unintended code being included in a build, and no compiler errors or warnings will be generated (unless the conditional code happens to depend on other code which gets compiled out).</p>
<p>However, using <code>#if</code> when it should be <code>#ifdef</code> does the correct thing when the macro is undefined, and it generates a compiler error when the macro is defined (making it simpler to track down).</p>
<p>In this regard, <code>#ifdef</code> appears superior, but there are other considerations which should be taken into account. I&#8217;ll delve into some of those considerations (and cases you can&#8217;t do much about) in following posts.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jgiors.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jgiors.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jgiors.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jgiors.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jgiors.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jgiors.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jgiors.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jgiors.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jgiors.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jgiors.wordpress.com/126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=126&subd=jgiors&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jgiors.wordpress.com/2009/03/27/ifdef-vs-if-part-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3c5f75c0d12a0d99c847ba51462f367?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jgiors</media:title>
		</media:content>
	</item>
		<item>
		<title>How do you pronounce &#8220;Linux&#8221;?</title>
		<link>http://jgiors.wordpress.com/2009/02/07/how-do-you-pronounce-linux/</link>
		<comments>http://jgiors.wordpress.com/2009/02/07/how-do-you-pronounce-linux/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 09:17:10 +0000</pubDate>
		<dc:creator>jgiors</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jgiors.wordpress.com/?p=115</guid>
		<description><![CDATA[I used to pronounce &#8220;Linux&#8221; with a hard &#8220;i&#8221; [as in "Aye, aye, captain!"], since it rhymes with the way we pronounce &#8220;Linus&#8221; in English.
Seems natural, doesn&#8217;t it?  I mean, considering that the creator&#8217;s name is &#8220;Linus&#8221;, right?
However, Linus Torvalds is Finnish, and in Finnish, the pronunciation of the &#8220;i&#8221; in his name is closer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=115&subd=jgiors&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I used to pronounce &#8220;Linux&#8221; with a hard &#8220;i&#8221; <em>[as in "Aye, aye, captain!"]</em>, since it rhymes with the way we pronounce &#8220;Linus&#8221; in English.</p>
<p>Seems natural, doesn&#8217;t it?  I mean, considering that the creator&#8217;s name is &#8220;Linus&#8221;, right?</p>
<p>However, Linus Torvalds is Finnish, and in Finnish, the pronunciation of the &#8220;i&#8221; in his name is closer to a hard &#8220;e&#8221; (not a hard &#8220;i&#8221; as in English &#8212; his name is more like &#8220;Lee-noose&#8221; than the English &#8220;Lie-nuhs&#8221;), so he says that Linux is pronounced with a soft &#8220;i&#8221;.  I assume that he feels a soft &#8220;i&#8221; is closer to a hard &#8220;e&#8221;, and I would agree &#8212; not that it matters at all what I think &#8212; he&#8217;s the creator of &#8220;Linux&#8221; and can pronounce it any way he wants &#8212; even if he decides the correct pronunciation is &#8220;Eunuchs&#8221;.</p>
<p>Did I go there?  Yes, I did.  Sorry, but look up more info on &#8220;Unix&#8221;, and you might be surprised&#8230;</p>
<p>On that note, <a href="http://www.youtube.com/watch?v=5IfHm6R5le0" target="_blank">Linus tells us how to pronounce Linux with a soft &#8220;i&#8221; in this YouTobe</a> (and also his name &#8212; in 3 languages, no less &#8212; show off!  j/k).  Not that this is anything new, but at least I&#8217;m glad I finally understand it.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jgiors.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jgiors.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jgiors.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jgiors.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jgiors.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jgiors.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jgiors.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jgiors.wordpress.com/115/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jgiors.wordpress.com/115/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jgiors.wordpress.com/115/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=115&subd=jgiors&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jgiors.wordpress.com/2009/02/07/how-do-you-pronounce-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3c5f75c0d12a0d99c847ba51462f367?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jgiors</media:title>
		</media:content>
	</item>
		<item>
		<title>Concurrent programming (part 1)</title>
		<link>http://jgiors.wordpress.com/2008/06/09/concurrent-programming-part-1/</link>
		<comments>http://jgiors.wordpress.com/2008/06/09/concurrent-programming-part-1/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 05:27:12 +0000</pubDate>
		<dc:creator>jgiors</dc:creator>
				<category><![CDATA[Concurrent programming series]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://jgiors.wordpress.com/?p=108</guid>
		<description><![CDATA[Intro
This is the first in a series of &#8220;thought pieces&#8221; about concurrent programming, especially as it relates to realtime applications.  The motivation is for use in games, but this series is not game-specific.
The concurrent programming debate
There is a lot of interest (and griping) these days about the problems of writing efficient bug-free concurrent code [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=108&subd=jgiors&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>Intro</h3>
<p>This is the first in a series of &#8220;thought pieces&#8221; about concurrent programming, especially as it relates to realtime applications.  The motivation is for use in games, but this series is not game-specific.</p>
<h3>The concurrent programming debate</h3>
<p>There is a lot of interest (and griping) these days about the problems of writing efficient bug-free concurrent code (especially in the context of multicore systems).  If you&#8217;re reading this, you probably already know why it has become a hot topic, so I&#8217;ll skip the explanation.</p>
<p>In any case, many people seem to feel the same way as guru <a href="http://en.wikipedia.org/wiki/Donald_knuth">Donald Knuth</a>, author of the highly regarded <a href="http://www.amazon.com/Art-Computer-Programming-Volumes-Boxed/dp/0201485419/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1211606399&amp;sr=8-1" target="_blank">The Art of Computer Programming series</a>.  This is what he said in <a href="http://www.informit.com/articles/article.aspx?p=1193856" target="_blank">a recent interview</a>.</p>
<blockquote><p>&#8230;I might as well flame a bit about my personal unhappiness with the current trend toward multicore architecture. To me, it looks more or less like the hardware designers have run out of ideas, and that they’re trying to pass the blame for the future demise of Moore’s Law to the software writers by giving us machines that work faster only on a few key benchmarks!</p></blockquote>
<p>However, some people feel differently.  Contrast Knuth&#8217;s statement with the following quote <em>[from <a href="http://www.stanford.edu/class/cs242/readings/backus.pdf" target="_blank">a lecture</a> given in 1977] </em>of another guru, <a href="http://en.wikipedia.org/wiki/John_Backus" target="_blank">John Backus</a>, famous for being the &#8220;Backus&#8221; in <a href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form" target="_blank">BNF</a> (Backus Normal Form, aka Backus Naur Form) formal language specification:</p>
<blockquote><p>Surely there must be a less primitive way of making big changes in the <em>[data] </em>store than by pushing vast numbers of words back and forth through the von Neumann bottleneck. Not only is this tube a literal bottleneck for the data traffic of a problem, but, more importantly, it is an intellectual bottleneck that has kept us tied to word-at-a-time thinking instead of encouraging us to think in terms of the larger conceptual units of the task at hand. Thus programming is basically planning and detailing the enormous traffic of words through the von Neumann bottleneck, and much of that traffic concerns not significant data itself but where to find it.</p></blockquote>
<p>To be fair, Backus was talking about changes in programming paradigms (specifically, proposing the use of <a href="http://en.wikipedia.org/wiki/Functional_programming" target="_blank">functional programming</a>), not parallel processing, but his point that there must be better methods of programming that transcend &#8220;word-at-a-time thinking&#8221; still seems relevant today.</p>
<h3>Is the debate moot?</h3>
<p>It may seem that debating concurrency is pointless.  After all, we&#8217;ve started down the multicore path, and it seems like there is no turning back. That is probably true.  For the foreseeable future, hardware will continue to increase in concurrency.</p>
<p>However, it is conceivable that software might remain procedural/imperative (e.g. if someone solves the long-standing problem of automating parallelization of sequential code). In addition, deciding how to approach the problem of concurrency depends on how we perceive the advantages and disadvantages of mimicking sequential code.</p>
<p>So, I do not think the debate is entirely moot.  It is largely moot for hardware, but not for software, especially insofar as it affects our perception.</p>
<h3>What&#8217;s my take on concurrency?</h3>
<p>I agree with John Backus&#8217;s sentiment about the state of programming.  A lot has changed in the 30+ years since his lecture, but even now, the status-quo of programming languages and methodologies feels limited by the intellectual &#8220;von Neumann bottleneck&#8221;.</p>
<p>In fact, I believe concurrent hardware will lead us to languages and methodologies which more naturally express solutions to realtime application problems. After all, realtime applications are about simulating large numbers of simultaneous activities. Simulation is naturally concurrent. All this time, we&#8217;ve been trying to simulate concurrency with sequential programs.</p>
<p>But, if simulation is naturally concurrent, why is concurrent programming so difficult?</p>
<p>The problem is that we don&#8217;t yet have adequate languages, tools, and methodologies for dealing with processor concurrency.  Once those are developed, concurrency will be liberating.  We will finally be able to write realtime applications the way we always wanted to (but didn&#8217;t know how).</p>
<p>Fortunately, the development of those languages, tools, and methodologies will be expedited by the fact that no one can ignore concurrency any longer.</p>
<p><em>[to be continued....]</em></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jgiors.wordpress.com/108/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jgiors.wordpress.com/108/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jgiors.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jgiors.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jgiors.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jgiors.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jgiors.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jgiors.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jgiors.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jgiors.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jgiors.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jgiors.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=108&subd=jgiors&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jgiors.wordpress.com/2008/06/09/concurrent-programming-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3c5f75c0d12a0d99c847ba51462f367?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jgiors</media:title>
		</media:content>
	</item>
		<item>
		<title>Your prototype is your final product (part 1)</title>
		<link>http://jgiors.wordpress.com/2008/05/14/your-prototype-is-your-final-product-part-1/</link>
		<comments>http://jgiors.wordpress.com/2008/05/14/your-prototype-is-your-final-product-part-1/#comments</comments>
		<pubDate>Thu, 15 May 2008 06:08:01 +0000</pubDate>
		<dc:creator>jgiors</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Your prototype is your final product]]></category>

		<guid isPermaLink="false">https://jgiors.wordpress.com/?p=102</guid>
		<description><![CDATA[About 5 years ago, I worked at a division of Brooks Automation which built semiconductor wafer-sorting robots.  My most interesting project was creating an experimental image-processing algorithm to detect a reference notch on a silicon wafer (which is used as a reference position for etching &#8212; we used it to locate ID numbers and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=102&subd=jgiors&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>About 5 years ago, I worked at a division of <a href="http://www.brooks.com/" target="_blank">Brooks Automation</a> which built semiconductor wafer-sorting robots.  My most interesting project was creating an experimental image-processing algorithm to detect a reference notch on a silicon wafer (which is used as a reference position for etching &#8212; we used it to locate ID numbers and barcodes).  It was a challenging project &#8212; the reference notch is a rather small feature that only occupies a few pixels in a wafer image.</p>
<p>I was excited to demonstrate that the project should work in principle, so I threw together a prototype as quickly as I could.  I made it very clear to everyone (including management) that this would be a prototype only, that it was unsuitable for mass-distribution, and that I would need some time after the demonstration to rewrite the code.</p>
<p>So, after about 3 weeks and with the help of some hardware tweaks (to provide a high-contrast image) I got it to detect the notch location about 90% of the time.  Not bad for a first pass, but clearly it would need a lot of work to get that up to production quality (somewhere above 99%).</p>
<p>But, there was a problem&#8230;I had used a lot of &#8220;rapid prototyping&#8221; techniques (and hacking) to get things done as quickly as possible.  I had used smart pointers instead of proper memory management, and as a consequence, there was a lot of memory waste (holding on to unnecessary images in the image processing chain) and thrashing/fragmentation (caused by allocation/deallocation of image buffers which could have been reused).  The algorithm worked, but it was slow.  I don&#8217;t recall exactly, but I think it took about 3 seconds to process an image.</p>
<p>But I thought <em>&#8220;Not to worry, with some additional time to rewrite proper memory management routines, plus optimizations, that will easily reduce to half a second or less.&#8221;</em></p>
<p><strong>The next day, my boss told me that we would use the code as-is.</strong></p>
<p>I explained that the code was not ready for production, that I needed time to rewrite. I explained about the memory management problems and how optimization would require a different code structure.  I also reminded him again that I had been upfront about the need to spend extra time for a rewrite (I had reminded him almost daily because I anticipated such a problem).  He still wouldn&#8217;t budge and insisted that I continue with the current code base.</p>
<p>That&#8217;s when I learned the lesson which became the title of this post:  <strong><em>Your prototype is your final product.</em></strong></p>
<p>It&#8217;s a good thing to remember.  Whenever you work on code (or engineer any product), what you think of as a prototype is likely to be seen as a final product by management.  Once management sees visible results, they want it right away.  And, in many cases, they just don&#8217;t understand the value of improving things that are &#8220;under the hood&#8221;.  After all, what they see seems just fine to them, so what value could there possibly be in improvements?</p>
<p><em>[to be continued...]</em></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jgiors.wordpress.com/102/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jgiors.wordpress.com/102/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jgiors.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jgiors.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jgiors.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jgiors.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jgiors.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jgiors.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jgiors.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jgiors.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jgiors.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jgiors.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=102&subd=jgiors&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jgiors.wordpress.com/2008/05/14/your-prototype-is-your-final-product-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3c5f75c0d12a0d99c847ba51462f367?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jgiors</media:title>
		</media:content>
	</item>
		<item>
		<title>Tryin&#8217; ta git back ta duh bloggin&#8230;</title>
		<link>http://jgiors.wordpress.com/2008/05/14/tryin-ta-git-back-ta-duh-bloggin/</link>
		<comments>http://jgiors.wordpress.com/2008/05/14/tryin-ta-git-back-ta-duh-bloggin/#comments</comments>
		<pubDate>Thu, 15 May 2008 05:44:19 +0000</pubDate>
		<dc:creator>jgiors</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jgiors.wordpress.com/?p=110</guid>
		<description><![CDATA[As you can tell, there was a really long gap in my posting.  During that interim, I had worked on several posts, but none of them were completed.  There are a few reasons for that:

I like to make my posts as clean and clear as possible, so I tend to spend a lot [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=110&subd=jgiors&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As you can tell, there was a really long gap in my posting.  During that interim, I had worked on several posts, but none of them were completed.  There are a few reasons for that:</p>
<ol>
<li>I like to make my posts as clean and clear as possible, so I tend to spend a lot of time writing them.</li>
<li>The posts I had been working on are quite long, so there is a lot that needs to be edited.</li>
<li>I&#8217;ve been trying to delve into topics that are not yet &#8220;solved&#8221; (e.g. parallel programming).  I&#8217;m still trying to formulate my own thoughts on those topics, so I&#8217;m never sure how to present them.</li>
<li>I also write on topics that go against the grain of &#8220;accepted practice&#8221;.  That requires compelling arguments to keep people from thinking I&#8217;ve gone bananas, e.g. a post about why innovation isn&#8217;t always a good thing&#8230; See, bet you&#8217;re thinking &#8220;bananas&#8221; already <em>[you'll understand when I get to it].</em></li>
</ol>
<p>Anyway, the end result is that I haven&#8217;t posted anything.</p>
<p>So, I&#8217;m going to get back to it by breaking up long articles into series of posts.  That will probably be better, anyway.  Who really wants to read a gigantic article all at once?</p>
<p>Now I just have to figure out a good way to link series together so they can be found as a unit (on the off chance you do like reading gigantic articles after all).</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jgiors.wordpress.com/110/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jgiors.wordpress.com/110/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jgiors.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jgiors.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jgiors.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jgiors.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jgiors.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jgiors.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jgiors.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jgiors.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jgiors.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jgiors.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=110&subd=jgiors&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jgiors.wordpress.com/2008/05/14/tryin-ta-git-back-ta-duh-bloggin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3c5f75c0d12a0d99c847ba51462f367?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jgiors</media:title>
		</media:content>
	</item>
		<item>
		<title>There is no rum in frustum</title>
		<link>http://jgiors.wordpress.com/2008/04/30/there-is-no-rum-in-frustum/</link>
		<comments>http://jgiors.wordpress.com/2008/04/30/there-is-no-rum-in-frustum/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 22:51:17 +0000</pubDate>
		<dc:creator>jgiors</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jgiors.wordpress.com/?p=109</guid>
		<description><![CDATA[One of my co-workers has been finding (and sometimes correcting) typos in our code.  One of the typos (which is in almost every game engine at one time or another) is &#8220;frustrum&#8221; instead of &#8220;frustum&#8221;.  I suggested that we compile a list of common typos and title it &#8220;There is no rum in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=109&subd=jgiors&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One of my co-workers has been finding (and sometimes correcting) typos in our code.  One of the typos (which is in almost every game engine at one time or another) is &#8220;frustrum&#8221; instead of &#8220;frustum&#8221;.  I suggested that we compile a list of common typos and title it &#8220;There is no rum in frustum&#8221;.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jgiors.wordpress.com/109/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jgiors.wordpress.com/109/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jgiors.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jgiors.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jgiors.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jgiors.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jgiors.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jgiors.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jgiors.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jgiors.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jgiors.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jgiors.wordpress.com/109/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=109&subd=jgiors&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jgiors.wordpress.com/2008/04/30/there-is-no-rum-in-frustum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3c5f75c0d12a0d99c847ba51462f367?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jgiors</media:title>
		</media:content>
	</item>
		<item>
		<title>The last bug</title>
		<link>http://jgiors.wordpress.com/2007/03/26/the-last-bug/</link>
		<comments>http://jgiors.wordpress.com/2007/03/26/the-last-bug/#comments</comments>
		<pubDate>Tue, 27 Mar 2007 03:01:01 +0000</pubDate>
		<dc:creator>jgiors</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://jgiors.wordpress.com/2007/03/26/the-last-bug/</guid>
		<description><![CDATA[Coworker:  Hey, John.  How&#8217;s that code going?
Me:  Well, it&#8217;s looking pretty good.  I just fixed the last bug we know about &#8230; And you know what that means, right?
Coworker:  It&#8217;s done?
Me:  Well, no &#8230; Not quite.
Coworker:  What&#8217;s it mean, then? 
Me:  It means there&#8217;s a lot we [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=105&subd=jgiors&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Coworker:  <em>Hey, John.  How&#8217;s that code going?</em></p>
<p>Me:  <em>Well, it&#8217;s looking pretty good.  I just fixed the last bug we know about &#8230; And you know what that means, right?</em></p>
<p>Coworker:  <em>It&#8217;s done?</em></p>
<p>Me:  <em>Well, no &#8230; Not quite.</em></p>
<p>Coworker:  <em>What&#8217;s it mean, then? </em></p>
<p>Me:  <em>It means there&#8217;s a lot we don&#8217;t know.</em></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jgiors.wordpress.com/105/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jgiors.wordpress.com/105/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jgiors.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jgiors.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jgiors.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jgiors.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jgiors.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jgiors.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jgiors.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jgiors.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jgiors.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jgiors.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=105&subd=jgiors&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jgiors.wordpress.com/2007/03/26/the-last-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3c5f75c0d12a0d99c847ba51462f367?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jgiors</media:title>
		</media:content>
	</item>
		<item>
		<title>So, what&#8217;s the difference&#8230;engine?</title>
		<link>http://jgiors.wordpress.com/2007/03/08/so-whats-the-differenceengine/</link>
		<comments>http://jgiors.wordpress.com/2007/03/08/so-whats-the-differenceengine/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 23:06:05 +0000</pubDate>
		<dc:creator>jgiors</dc:creator>
				<category><![CDATA[Quotes]]></category>

		<guid isPermaLink="false">http://jgiors.wordpress.com/2007/03/08/so-whats-the-differenceengine/</guid>
		<description><![CDATA[Today, I found this quote by Charles Babbage on Wikipedia:
On two occasions I have been asked &#8230; &#8220;Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?&#8221; &#8230; I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
Now, there&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=107&subd=jgiors&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Today, I found this quote by Charles Babbage on Wikipedia:</p>
<blockquote><p><em>On two occasions I have been asked &#8230; &#8220;Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?&#8221; &#8230; I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.</em></p></blockquote>
<p>Now, there&#8217;s something any programmer can sympathize with!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jgiors.wordpress.com/107/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jgiors.wordpress.com/107/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jgiors.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jgiors.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jgiors.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jgiors.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jgiors.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jgiors.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jgiors.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jgiors.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jgiors.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jgiors.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=107&subd=jgiors&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jgiors.wordpress.com/2007/03/08/so-whats-the-differenceengine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3c5f75c0d12a0d99c847ba51462f367?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jgiors</media:title>
		</media:content>
	</item>
		<item>
		<title>USB Flash Drive</title>
		<link>http://jgiors.wordpress.com/2007/01/25/usb-flash-drive/</link>
		<comments>http://jgiors.wordpress.com/2007/01/25/usb-flash-drive/#comments</comments>
		<pubDate>Fri, 26 Jan 2007 05:45:47 +0000</pubDate>
		<dc:creator>jgiors</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://jgiors.wordpress.com/2007/01/25/usb-flash-drive/</guid>
		<description><![CDATA[I finally picked up a 1 GB USB flash drive [actually, it was a few months ago, but I digress].
Maybe it&#8217;s because I&#8217;m an &#8220;old timer&#8221;, but 1GB in a tiny package at an &#8220;impulse buy&#8221; price point is just incredible.  No wonder the 1.44 MB floppy disk is dead.  This little flash [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=98&subd=jgiors&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I finally picked up a 1 GB USB flash drive <em>[actually, it was a few months ago, but I digress]</em>.</p>
<p>Maybe it&#8217;s because I&#8217;m an &#8220;old timer&#8221;, but 1GB in a tiny package at an &#8220;impulse buy&#8221; price point is just incredible.  No wonder the 1.44 MB floppy disk is dead.  This little flash drive holds almost as much data as 700 of those floppies, it&#8217;s small enough to leave on your keychain, and it&#8217;s far more durable.</p>
<p>Thinking even farther back, I remember when I loaded programs for my Atari 800 from a cassette tape!  It took several minutes just to load a few dozen K of data.   It was a big deal when I finally got a 5-1/4&#8243; floppy drive.  I got a special &#8220;double-density&#8221; drive which held about 180KB (you could flip the disk over to get another 180KB, for a total of 360KB)&#8230;So my flash drive holds almost as much as 3000 of those old floppies!  Wow.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jgiors.wordpress.com/98/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jgiors.wordpress.com/98/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jgiors.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jgiors.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jgiors.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jgiors.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jgiors.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jgiors.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jgiors.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jgiors.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jgiors.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jgiors.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=98&subd=jgiors&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jgiors.wordpress.com/2007/01/25/usb-flash-drive/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3c5f75c0d12a0d99c847ba51462f367?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jgiors</media:title>
		</media:content>
	</item>
		<item>
		<title>My &#8220;Production Diary&#8221; entry posted on Mercs 2 website</title>
		<link>http://jgiors.wordpress.com/2006/10/25/my-production-diary-entry-posted-on-mercs-2-website/</link>
		<comments>http://jgiors.wordpress.com/2006/10/25/my-production-diary-entry-posted-on-mercs-2-website/#comments</comments>
		<pubDate>Wed, 25 Oct 2006 20:00:37 +0000</pubDate>
		<dc:creator>jgiors</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jgiors.wordpress.com/2006/10/25/my-production-diary-entry-posted-on-mercs-2-website/</guid>
		<description><![CDATA[My &#8220;production diary&#8221; entry was posted on the Mercs 2 website about an hour ago.  I tried to have a little fun with it, so we&#8217;ll see what people think&#8230;
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=103&subd=jgiors&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.mercs2.com/diary.php?diaryid=10" target="_blank">My &#8220;production diary&#8221; entry</a> was posted on the Mercs 2 website about an hour ago.  I tried to have a little fun with it, so we&#8217;ll see what people think&#8230;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jgiors.wordpress.com/103/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jgiors.wordpress.com/103/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jgiors.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jgiors.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jgiors.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jgiors.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jgiors.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jgiors.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jgiors.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jgiors.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jgiors.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jgiors.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jgiors.wordpress.com&blog=65000&post=103&subd=jgiors&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jgiors.wordpress.com/2006/10/25/my-production-diary-entry-posted-on-mercs-2-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d3c5f75c0d12a0d99c847ba51462f367?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jgiors</media:title>
		</media:content>
	</item>
	</channel>
</rss>