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

<channel>
	<title>James Wynn &#187; technology</title>
	<atom:link href="http://jameswynn.com/tag/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://jameswynn.com</link>
	<description>Technology, Programming, Games, Religion, Rants</description>
	<lastBuildDate>Wed, 02 Jun 2010 21:06:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GNU Patch in Windows 7 or Vista</title>
		<link>http://jameswynn.com/2010/03/gnu-patch-in-windows-7-or-vista/</link>
		<comments>http://jameswynn.com/2010/03/gnu-patch-in-windows-7-or-vista/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 15:09:26 +0000</pubDate>
		<dc:creator>james</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://jameswynn.com/?p=186</guid>
		<description><![CDATA[I just had a little fight with Windows 7 about permissions. It seems that it demands that any executable with the word "patch" in the name must be run with administrative privileges. After fighting with it for a few minutes about the absurdity of the problem, I resorted to a simple hack.

Rename patch.exe to patsh.exe.
Then [...]]]></description>
			<content:encoded><![CDATA[<p>I just had a little fight with Windows 7 about permissions. It seems that it demands that any executable with the word "<em>patch</em>" in the name must be run with administrative privileges. After fighting with it for a few minutes about the absurdity of the problem, I resorted to a simple hack.</p>
<ol>
<li>Rename <em>patch.exe</em> to <em>pat<strong>s</strong>h.exe</em>.</li>
<li>Then create patch.bat in the same directory containing the following command:<br />
<span style="font-family: monospace;">@patsh.exe %*</span></li>
</ol>
<p>You will never notice a difference, and Windows 7 can go politely F*** itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswynn.com/2010/03/gnu-patch-in-windows-7-or-vista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Barefoot Running</title>
		<link>http://jameswynn.com/2009/10/barefoot-running/</link>
		<comments>http://jameswynn.com/2009/10/barefoot-running/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 15:13:56 +0000</pubDate>
		<dc:creator>james</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[health]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://jameswynn.com/?p=174</guid>
		<description><![CDATA[A while back I read an interesting article about the Tarahumara in Mexico and their running style. Seems they are widely reputed for there ability to run for extreme distances. They are known to run hundreds of miles, or for days on end. More amazing than that though, is the fact that they do it [...]]]></description>
			<content:encoded><![CDATA[<p>A while back I read an interesting article about the <a href="http://en.wikipedia.org/wiki/Tarahumara" onclick="javascript:pageTracker._trackPageview('/outbound/article/en.wikipedia.org');">Tarahumara </a>in Mexico and their running style. Seems they are widely reputed for there ability to run for extreme distances. They are known to run hundreds of miles, or for days on end. More amazing than that though, is the fact that they do it all barefoot. No hi-tech Nike's for them, just the amazing machine that is the human foot.</p>
<p>The basic style is that you run on the balls of your feet instead of landing on your heels and rolling to your toes. Modern shoes prevent running on your toes, unless you are perhaps at a full sprint. Interestingly, the barefoot running style allegedly also helps prevent many common running related injuries. People who run barefoot generally have fewer problems with shin splints, ankle problems and knee problems.</p>
<p><span style="background-color: #ffffff; "><img class="size-medium wp-image-175 alignleft" title="Vibram FiveFinger KSO" src="http://jameswynn.com/wp-content/uploads/2009/10/vibram_kso_m148-300x199.jpg" alt="Vibram FiveFinger KSO" width="300" height="199" /></span></p>
<p><span style="background-color: #ffffff; ">Recently I started mulling over the concept again, and wondered what a shoe would look like that allowed you to run as though you were barefoot, but still gave you some protection. I played with the idea a bit, and then searched to see if anyone had made it yet. Turns out the awesome people at <a href="http://www.vibramfivefingers.com/index.cfm" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.vibramfivefingers.com');">Vibram</a> beat me to it with the <a href="http://www.vibramfivefingers.com/products/products_KSO_m.cfm" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.vibramfivefingers.com');">Five Finge</a>r.</span></p>
<p><span style="background-color: #ffffff;">I haven't been able to jog in about a year, because of back problems that are aggravated by the impact of traditional jogging styles. Wearing these shoes, though, I have been able to run 10x as far and still no back pains. Best. Purchase. Ever.</span></p>
<p><span style="background-color: #ffffff;"><a href="http://www.google.com/search?q=define:IANAMD" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');">IANAMD</a>, but if you cannot run because of chronic pains in your ankles/knees/back then perhaps you should give them a shot.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://jameswynn.com/2009/10/barefoot-running/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accessing SQLite databases in C++ using SOCI</title>
		<link>http://jameswynn.com/2009/10/accessing-sqlite-databases-in-c-using-soci/</link>
		<comments>http://jameswynn.com/2009/10/accessing-sqlite-databases-in-c-using-soci/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 19:31:59 +0000</pubDate>
		<dc:creator>james</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://jameswynn.com/?p=163</guid>
		<description><![CDATA[I recently decided to use SOCI and SQLite at work and found that neither there is not a super straight forward path for setting this up. As of SOCI version 3.0.0 there is no support for Visual Studio 2008, so I had to convert and fix a few bugs resulting from that. There were some [...]]]></description>
			<content:encoded><![CDATA[<p>I recently decided to use <a href="http://soci.sourceforge.net" onclick="javascript:pageTracker._trackPageview('/outbound/article/soci.sourceforge.net');">SOCI</a> and <a href="http://www.sqlite.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.sqlite.org');">SQLite</a> at work and found that neither there is not a super straight forward path for setting this up. As of SOCI version 3.0.0 there is no support for <strong>Visual Studio 2008</strong>, so I had to convert and fix a few bugs resulting from that. There were some path issues as well. Also they don't package the SQLite interface with SOCI so you have to checkout the repo to get access to it. After getting that there are still a few snags, not to mention actually setting up SQLite as a library.</p>
<p>[Updated: 10/13/2009]<br />
After writing this article the SOCI team has resolved some of these issues, so some of these steps are no longer necessary.</p>
<h2><span id="more-163"></span></h2>
<h2>Step 1: Setup SQLite</h2>
<h3>Step 1.1</h3>
<p>Download the SQLite 3.6.18 source and library files.</p>
<ul>
<li><a href="http://www.sqlite.org/sqlite-amalgamation-3_6_18.zip" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.sqlite.org');">Source</a></li>
<li><a href="http://www.sqlite.org/sqlitedll-3_6_18.zip" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.sqlite.org');">Libraries</a></li>
</ul>
<h3>Step 1.2:</h3>
<p>Unarchive the SQLite archives into a directory, mine will be <em>c:\usr\sqlite3</em></p>
<h3>Step 1.3:</h3>
<p>Create the sqlite3.lib file by using Visual Studio's lib command:</p>

<div class="wp_syntax"><div class="code"><pre class="batch" style="font-family:monospace;">LIB /DEF:sqlite3.def</pre></div></div>

<h2><strong>Step 2: Setup SOCI</strong></h2>
<h3>Step 2.1:</h3>
<p>Download the <a href="http://soci.git.sourceforge.net/git/gitweb.cgi?p=soci/soci;a=snapshot;h=ed12736cf7418abcef7a5b2230c745adaa9aaaa3;sf=tgz" onclick="javascript:pageTracker._trackPageview('/outbound/article/soci.git.sourceforge.net');">head of SOCI's git repository</a></p>
<h3>Step 2.2:</h3>
<p>Decompress the file into another directory, mine will be <em>c:\usr\soci</em></p>
<h3>Step 2.3:</h3>
<p>Soci requires <em>stdint.h</em> but Visual Studio 2008 does not provide it, so simply download <a href="http://www.azillionmonkeys.com/qed/pstdint.h" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.azillionmonkeys.com');">pstdint.h</a> and rename it to <em>stdint.h</em> in the <em>soci\src\core</em> directory.</p>
<h3>Step 2.4:</h3>
<p>Open the directory<em> soci\build</em> and copy <em>msvc80</em> to <em>msvc90</em>.</p>
<p>Now open the msvc90\dll directory.</p>
<p>Through Visual Studio 2008, open the <em>soci_dll.sln</em> file and allow it to convert it with the default parameters.</p>
<h3>Step 2.5: Build SOCI's Core and SQLite3</h3>
<p>SOCI's core project should build without errors, but the sqlite project will have several.</p>
<h3>Step 2.6: Fixing Build Errors</h3>
<p>Now SOCI's core project should build without errors, but the sqlite3 project will definitely fail. It will give two specific errors:</p>
<blockquote>
<pre>fatal error C1083: Cannot open include file: 'sqlite3.h': No such file or directory</pre>
</blockquote>
<p>and</p>
<blockquote>
<pre>error C3163: '_vsnprintf': attributes inconsistent with previous declaration</pre>
</blockquote>
<p>Both are relatively easy to fix.</p>
<h4>Step 2.6.1: Fixing SQLite3 include paths</h4>
<p>In Visual Studio, navigate to View-&gt;Property Manager, then in the pane that shows up, expand the sqlite3 project, then expand "Debug | Win32" then "soci_dll" then double-click on the "soci" object. Select "User Macros" on the sheet you find there.</p>
<p>Find SQLITE3_INCLUDE_DIR and SQLITE_LIB_DIR and change them to the directory created earlier, "c:\usr\sqlite3"</p>
<h4>Step 2.6.2: Fixing _vsnprintf</h4>
<p>[Update 10/13/2009]<br />
This step is no longer needed.</p>
<p>Expand the <strong>core</strong> project and look for soci-platform.h and find a line that says "HAVE_VSNPRINTF"</p>
<p>This is redefining something that VS2008 provides already and confuses the hell out of the compiler. Just comment it out, or change it to look like:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp cpp" style="font-family:monospace;"><span style="color: #666666;">// Define if you have the vsnprintf variants.</span>
<span style="color: #339900;">#if _MSC_VER &amp;lt; 1500</span>
<span style="color: #339900;">#	define HAVE_VSNPRINTF 1</span>
<span style="color: #339900;">#	define vsnprintf _vsnprintf</span>
<span style="color: #339900;">#endif</span></pre></div></div>

<h3>Step 2.7 Building SOCI's sqlite3_test project</h3>
<p>This project will be riddled with errors unless you have boost installed. I personally don't use it, so had to comment out large chunks of <em>common-tests.h</em>.  Specifically, comment out the area at the top where it includes the boost headers. Also comment out the contents of test26, test28 and test30.</p>
<p>Also add this line at the bottom of <em>soci-platform.h:</em></p>

<div class="wp_syntax"><div class="code"><pre class="cpp cpp" style="font-family:monospace;"><span style="color: #339900;">#undef SOCI_USE_BOOST</span></pre></div></div>

<h2>Finished</h2>
<p>Now you should have a working copy of SOCI 3.0.0 with SQLite3 support in Visual Studio 2008. Congratulations!</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswynn.com/2009/10/accessing-sqlite-databases-in-c-using-soci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Please stop cluttering inboxes, start blogging</title>
		<link>http://jameswynn.com/2009/06/please-stop-cluttering-inboxes-start-blogging/</link>
		<comments>http://jameswynn.com/2009/06/please-stop-cluttering-inboxes-start-blogging/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 20:54:07 +0000</pubDate>
		<dc:creator>james</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://jameswynn.com/?p=155</guid>
		<description><![CDATA[There are still lots of people out there who continue to send far too many emails to friends, coworkers, family, etc.  Many of these emails are usually mass-forwards to laundry lists of people.  While I'm sure some of these are quite amusing/interesting/inflammatory, they all frequently have the same effect:  clutterying up inboxes.
To these [...]]]></description>
			<content:encoded><![CDATA[<p>There are still lots of people out there who continue to send far too many emails to friends, coworkers, family, etc.  Many of these emails are usually mass-forwards to laundry lists of people.  While I'm sure some of these are quite amusing/interesting/inflammatory, they all frequently have the same effect:  <em>clutterying up inboxes</em>.</p>
<p>To these people, I would like to  suggest they do what so many other net-savvy people have done, specifically <em>blogging</em>. Blogging is essentially the same thing as sending out that armada of email, except that it is seen when and how the end user desires. If you haven't quite figured out the whole blog thing, or think that its too technical, rest assured its actually quite simple. In fact, websites like <a href="http://www.wordpress.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.wordpress.com');">Wordpress</a>, <a href="http://www.blogspot.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.blogspot.com');">blogspot</a>, and <a href="http://www.livejournal.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.livejournal.com');">livejournal</a> do all the work for you. And this <a title="Start a Blog at Blogspot" href="http://www.blogspottutorial.com/2007/11/strart-to-blogging.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.blogspottutorial.com');">tutorial</a> explains how to get started on your new blogging adventure.</p>
<p>After you've created your new blog, don't immediately send out a barrage of 'Check out my new Intarweb!' emails.  First try to find your friends' blogs and comment on them, leaving a link to your own.  Its a little more polite.</p>
<p>Don't think you need to abandon your friendly emails though, these can still be quite pleasant when not sent in bulk. A few rules of thumb for writing a blog instead of an email:</p>
<ol>
<li>Is your mailing list large enough that you need to use BCC?</li>
<li>Do you have to think about to whom you want to write the email?</li>
<li>Does it envolve sending an image or video?</li>
<li>Are there more people than just your recipients that might find the email interesting?</li>
</ol>
<p>If you found this useful, then you might also do a quick google on RSS or go take a peek at Google Reader. Most blog platforms allow you to subscribe using RSS and use software like Google Reader to read all your blogs in one simple interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswynn.com/2009/06/please-stop-cluttering-inboxes-start-blogging/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Demoing Mind Control Game Controller for Fox</title>
		<link>http://jameswynn.com/2009/05/demoing-mind-control-game-controller-for-fox/</link>
		<comments>http://jameswynn.com/2009/05/demoing-mind-control-game-controller-for-fox/#comments</comments>
		<pubDate>Fri, 22 May 2009 13:52:53 +0000</pubDate>
		<dc:creator>james</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://jameswynn.com/?p=152</guid>
		<description><![CDATA[Recently the local Fox affiliat approached me about helping with an article about the new game controllers that use mind control.  The device we reviewed is the Neural Impulse Actuator or NIA by OCZ Technology.  It works by sensing the electrical signals given off by your brain and facial muscles.  Its a fantastic piece of [...]]]></description>
			<content:encoded><![CDATA[<p>Recently the local <a title="KOKH Fox 25" href="http://www.kokh.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.kokh.com');">Fox affiliat</a> approached me about helping with an article about the new game controllers that use mind control.  The device we reviewed is the <a title="Neural Impulse Actuator" href="http://www.ocztechnology.com/products/ocz_peripherals/nia-neural_impulse_actuator" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.ocztechnology.com');">Neural Impulse Actuator</a> or NIA by OCZ Technology.  It works by sensing the electrical signals given off by your brain and facial muscles.  Its a fantastic piece of technology, though rough around the corners, and I think in another couple of years we may see wide spread use of such devices.</p>
<p>Cool though they may be, I don't see technology like this replacing current mainstays like the joystick and keyboard/mouse. More likely, they will fall into the "add on" category like the gaming keypads and 6 button mice. </p>
<p>That said, it is truely a piece of interesting technology and I look forward to playing with them in the future.</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/UR2vzZah15I&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/UR2vzZah15I&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://jameswynn.com/2009/05/demoing-mind-control-game-controller-for-fox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FileWatcher now supports OSX/BSD via kqueue</title>
		<link>http://jameswynn.com/2009/03/filewatcher-now-supports-osxbsd-via-kqueue/</link>
		<comments>http://jameswynn.com/2009/03/filewatcher-now-supports-osxbsd-via-kqueue/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 23:46:10 +0000</pubDate>
		<dc:creator>james</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FileWatcher]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[SimpleFileWatcher]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://jameswynn.com/?p=139</guid>
		<description><![CDATA[Now not only does FileWatcher support Win32 and Linux, but it supports OSX/BSD/anything else using kqueue.  This should cover 90% of the cases where this functionality is needed and I'm planning on a fallback mode that will just use directory scans and file timestamps to determine changes.
Get the new version here:
FileWatcher 2009.03.04
]]></description>
			<content:encoded><![CDATA[<p>Now not only does FileWatcher support Win32 and Linux, but it supports OSX/BSD/anything else using kqueue.  This should cover 90% of the cases where this functionality is needed and I'm planning on a fallback mode that will just use directory scans and file timestamps to determine changes.</p>
<p>Get the new version here:<br />
<a href="http://jameswynn.com/files/FileWatcher-2009.03.04.zip" onclick="javascript:pageTracker._trackPageview('/downloads/files/FileWatcher-2009.03.04.zip');">FileWatcher 2009.03.04</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jameswynn.com/2009/03/filewatcher-now-supports-osxbsd-via-kqueue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cable TV is broken</title>
		<link>http://jameswynn.com/2009/02/cable-tv-is-broken/</link>
		<comments>http://jameswynn.com/2009/02/cable-tv-is-broken/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 14:46:42 +0000</pubDate>
		<dc:creator>james</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://jameswynn.com/?p=136</guid>
		<description><![CDATA[I recently got a cable TV package when I switched my service and decided to try it out.  Mind you, I never watch TV and haven't watched it regularly since I was a kid.  After playing around with the service for a few minutes I became convinced that the product is faulty and [...]]]></description>
			<content:encoded><![CDATA[<p>I recently got a cable TV package when I switched my service and decided to try it out.  Mind you, I never watch TV and haven't watched it regularly since I was a kid.  After playing around with the service for a few minutes I became convinced that the product is faulty and here is why.</p>
<ol>
<li>There are over 500 channels listed, and I only have access to around 50.  This is fine in itself, but there is no way to determine if I have access until I try to view the channel.  There is no option to filter out the channels that are inaccessable</li>
<li>There is no way to search through the shows except manually.  Scrolling through pages upon pages of listings just to find one thing to watch is extremely tedious, especially when trying to relax.</li>
<li>Once I finally found a show, I had to watch it from somewhere in the middle.  Why is it starting halfway through?  Wait, I need an additional, expensive piece of equipment to fix this?  Bad business.  Sell a broken product, and then sell another product which fixes the original flaws.</li>
<li>Commercials are far too long, I have to watch about 5 minutes of commercials for each 20 minutes of show.  There is something wrong with this.</li>
<li>Overpriced.  I'm paying ~$25 / month for this service with all these failings and I <strong>still</strong> have to watch commercials.</li>
</ol>
<p>How can such a service compete with the likes of <a href="http://www.hulu.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.hulu.com');">Hulu</a>, <a href="http://www.youtube.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.youtube.com');">youtube</a>, <a href="http://www.megavideo.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.megavideo.com');">megavideo</a> and <a href="http://www.sidereel.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.sidereel.com');">sidereel</a>?  I suppose it will die off as soon as people realize how broken it is.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswynn.com/2009/02/cable-tv-is-broken/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FileWatcher library watches files while you play</title>
		<link>http://jameswynn.com/2009/02/filewatcher-library-watches-files-while-you-play/</link>
		<comments>http://jameswynn.com/2009/02/filewatcher-library-watches-files-while-you-play/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 13:14:31 +0000</pubDate>
		<dc:creator>james</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FileWatcher]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[SimpleFileWatcher]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://jameswynn.com/?p=118</guid>
		<description><![CDATA[Spurred by an article a while back in Game Developer Magazine, I decided to write a little cross platform library for detecting changes in files.  The library works in both Windows and Linux (tested in ubuntu 8.10, but should work in anything with inotify) with support soon coming to OSX.  The library is [...]]]></description>
			<content:encoded><![CDATA[<p>Spurred by an article a while back in Game Developer Magazine, I decided to write a little cross platform library for detecting changes in files.  The library works in both Windows and Linux (tested in ubuntu 8.10, but should work in anything with inotify) with support soon coming to OSX.  The library is great for automatically updating game resources during development.  Most real game engines have this these days, and now everyone else can too!</p>
<p>The library comes with two samples.  OgreDemo.cpp shows a simple example of reloading textures on the fly using the <a href="http://www.ogre3d.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.ogre3d.org');">Ogre3D</a> engine.  SimpleDemo.cpp just watches a directory and outputs the file names when a file changes.</p>
<p>Some example code:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp cpp" style="font-family:monospace;"><span style="color: #666666;">// Create the object</span>
FW<span style="color: #008080;">::</span><span style="color: #007788;">FileWatcher</span><span style="color: #000040;">*</span> fileWatcher <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> FW<span style="color: #008080;">::</span><span style="color: #007788;">FileWatcher</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>;
&nbsp;
<span style="color: #666666;">// add a directory watch</span>
FW<span style="color: #008080;">::</span><span style="color: #007788;">WatchID</span> watchid <span style="color: #000080;">=</span> fileWatcher<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>addWatch<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;..<span style="color: #666666; font-weight: bold;">\\</span>media&quot;</span>, <span style="color: #0000dd;">new</span> UpdateListener<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>;
&nbsp;
...
&nbsp;
<span style="color: #666666;">// somewhere in your update loop call update</span>
fileWatcher<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>update<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>;
&nbsp;
<span style="color: #666666;">// where UpdateListener is defined as such</span>
<span style="color: #0000ff;">class</span> UpdateListener <span style="color: #008080;">:</span> <span style="color: #0000ff;">public</span> FW<span style="color: #008080;">::</span><span style="color: #007788;">FileWatchListener</span>
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
    UpdateListener<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">void</span> handleFileAction<span style="color: #008000;">&#40;</span>FW<span style="color: #008080;">::</span><span style="color: #007788;">WatchID</span> watchid, <span style="color: #0000ff;">const</span> String<span style="color: #000040;">&amp;</span> dir,
                                    <span style="color: #0000ff;">const</span> String<span style="color: #000040;">&amp;</span> filename,
                                    FW<span style="color: #008080;">::</span><span style="color: #007788;">FileWatcher</span><span style="color: #008080;">::</span><span style="color: #007788;">Action</span> action<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        std<span style="color: #008080;">::</span><span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;File (&quot;</span> <span style="color: #000080;">&lt;&lt;</span> dir <span style="color: #000040;">+</span> \\ <span style="color: #000040;">+</span> filename <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;) has event &quot;</span>
                        <span style="color: #000080;">&lt;&lt;</span> action <span style="color: #000080;">&lt;&lt;</span> std<span style="color: #008080;">::</span><span style="color: #007788;">endl</span>;
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>;</pre></div></div>

<p><a href="http://jameswynn.com/files/FileWatcher-2009.02.17.zip" onclick="javascript:pageTracker._trackPageview('/downloads/files/FileWatcher-2009.02.17.zip');">Download version 2009.02.17</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jameswynn.com/2009/02/filewatcher-library-watches-files-while-you-play/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XBox 360 Development with XNA</title>
		<link>http://jameswynn.com/2008/03/xbox-360-development-with-xna/</link>
		<comments>http://jameswynn.com/2008/03/xbox-360-development-with-xna/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 15:22:17 +0000</pubDate>
		<dc:creator>james</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://jameswynn.com/2008/03/xbox-360-development-with-xna/</guid>
		<description><![CDATA[Not that its news, but XNA along with a membership to the XNA Creators Club allows developers to create games in a unified system for both Windows and XBox 360. Although XNA uses C#, which I personally had reservations against, it is actually quite easy to develop on and even fun to use.  XNA [...]]]></description>
			<content:encoded><![CDATA[<p>Not that its news, but <a title="XNA" href="http://www.xna.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.xna.com');">XNA </a>along with a membership to the <a title="XNA Creators Club" href="http://creators.xna.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/creators.xna.com');">XNA Creators Club</a> allows developers to create games in a unified system for both Windows and XBox 360. Although XNA uses C#, which I personally had reservations against, it is actually quite easy to develop on and even fun to use.  XNA has now abated these reservations about C# and has persuaded me to try to port my project to the 360.</p>
<p>With sound, networking, a solid widely used gamepad interface, and excellent graphics capabilities the XNA platform seems ideal for small games development.  The only reservations still present are against the relative immaturity of the community (as opposed to <a title="Ogre Rendering Engine" href="http://ogre3d.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/ogre3d.org');">Ogre</a>'s which is superb) and the lack of distribution mechanisms.  The distribution problem is slated to be resolved with a rating system within the developer community, but this just comes back to the other problem.</p>
<p>There is, still, a significant amount of community generated content for learning and using XNA, but I worry about the platform if it does not attract a higher concentration of mature developers. We shall see.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswynn.com/2008/03/xbox-360-development-with-xna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Late-Binding Data for Ogre</title>
		<link>http://jameswynn.com/2008/02/late-binding-data-for-ogre/</link>
		<comments>http://jameswynn.com/2008/02/late-binding-data-for-ogre/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 05:23:14 +0000</pubDate>
		<dc:creator>james</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://jameswynn.com/2008/02/late-binding-data-for-ogre/</guid>
		<description><![CDATA[The Feb '05 edition of Game Developer Magazine had an article titled "Late-Binding Data" and described an extremely useful mechanism for automatically reloading data into a game engine dynamically when the data has been changed.  It detects when a file has been updated and repopulates the data throughout the system.  So, an image/model can be [...]]]></description>
			<content:encoded><![CDATA[<p>The Feb '05 edition of <a title="Game Developer Magazine" href="http://www.gdmag.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.gdmag.com');">Game Developer Magazine</a> had an article titled "<a title="Late-Binding Data by Sean Barrett" href="http://www.gdmag.com/archive/feb05.htm" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.gdmag.com');">Late-Binding Data</a>" and described an extremely useful mechanism for automatically reloading data into a game engine dynamically when the data has been changed.  It detects when a file has been updated and repopulates the data throughout the system.  So, an image/model can be exported from some other program and the results will be immediately visible in the game. No reloading!</p>
<p>This sounds like a huge time saver in the long run, but right now its turning into a significant time sink.  I figure if this functionality would be useful in my personal project, it would likely be valuable to others as well, so I'm going to try to integrate it into <a title="Ogre3D" href="http://www.ogre3d.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.ogre3d.org');">Ogre</a>.  Should also prove a useful exercise in using Ogre as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswynn.com/2008/02/late-binding-data-for-ogre/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
