<?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>blacktriangles</title>
	<atom:link href="http://www.blacktriangles.com/wp/personal/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blacktriangles.com/wp/personal</link>
	<description>http://www.blacktriangles.com/</description>
	<lastBuildDate>Sun, 18 Mar 2012 08:27:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Sorting Header and Sources with Python</title>
		<link>http://www.blacktriangles.com/wp/personal/2012/03/296/</link>
		<comments>http://www.blacktriangles.com/wp/personal/2012/03/296/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 08:23:22 +0000</pubDate>
		<dc:creator>hsmith</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.blacktriangles.com/wp/personal/?p=296</guid>
		<description><![CDATA[I have on more than one occasion been given a homogenous folder of code with sources and headers mixed together, and needed to break them up into more library-friendly include and src folders. Instead of manually sorting them, I wrote this little python script: #!/usr/bin/python import os import sys import shutil if len( sys.argv ) [...]]]></description>
			<content:encoded><![CDATA[<p>I have on more than one occasion been given a homogenous folder of code with sources and headers mixed together, and needed to break them up into more library-friendly include and src folders.  Instead of manually sorting them, I wrote this little python script:</p>
<pre>
<code>
#!/usr/bin/python

import os
import sys
import shutil

if len( sys.argv ) < 3:
	sys.stderr.write( 'Usage: ' + sys.argv[0] + ' [inputDir] [outputDir]\n' )
else:
	rootPath = sys.argv[1];
	outDir = sys.argv[2];

	headers = []
	sources = []
	unknown = []

	for root, dirs, files in os.walk( rootPath ):
		for filename in files:
			if filename.endswith( '.h' ):
				headers.append( [ root, filename ] )
			elif filename.endswith( '.cpp' ) or filename.endswith( '.c' ):
				sources.append( [ root, filename ] )
			else:
				unknown.append( [ root, filename ] )

	def getTargetPath( root, folder, filename ):
		newRoot = root.replace( rootPath, '' )
		if newRoot.startswith( '/' ):
			newRoot = newRoot[1:]
		targetDir = os.path.join( outDir, folder, newRoot )
		if not os.path.exists( targetDir ):
			os.makedirs( targetDir )

		return os.path.join( targetDir, filename )

	for file in headers:
		fromPath = os.path.join( file[0], file[1] )
		toPath = getTargetPath( file[0], 'include', file[1] )
		shutil.copyfile( fromPath, toPath )

	for file in sources:
		fromPath = os.path.join( file[0], file[1] )
		toPath = getTargetPath( file[0], 'src', file[1] )
		shutil.copyfile( fromPath, toPath )

	for file in unknown:
		fromPath = os.path.join( file[0], file[1] )
		toPath = getTargetPath( file[0], 'unknown', file[1] )
		shutil.copyfile( fromPath, toPath )		

</code>
</pre>
<p>The results would be something like this:</p>
<pre>
Input:
/aardvark.h
/stuff.h
/stuff.cpp
/main.cpp
/widgets/doodad.h
/widgets/doodad.cpp
</pre>
<pre>
Output:
/include/aardvark.h
/include/stuff.h
/include/widgets/doodad.h
/src/stuff.cpp
/src/main.cpp
/src/widgets/doodad.cpp
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.blacktriangles.com/wp/personal/2012/03/296/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spicy Seitan + Swiss Chard</title>
		<link>http://www.blacktriangles.com/wp/personal/2012/01/294/</link>
		<comments>http://www.blacktriangles.com/wp/personal/2012/01/294/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 20:58:04 +0000</pubDate>
		<dc:creator>hsmith</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.blacktriangles.com/wp/personal/?p=294</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2012/01/test.jpg"><img src="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2012/01/test-300x225.jpg" alt="" title="test" width="300" height="225" class="aligncenter size-medium wp-image-295" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blacktriangles.com/wp/personal/2012/01/294/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spicy Seitan Stirfry</title>
		<link>http://www.blacktriangles.com/wp/personal/2012/01/291/</link>
		<comments>http://www.blacktriangles.com/wp/personal/2012/01/291/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 14:42:47 +0000</pubDate>
		<dc:creator>hsmith</dc:creator>
				<category><![CDATA[Cooking]]></category>
		<category><![CDATA[Vegan]]></category>

		<guid isPermaLink="false">http://www.blacktriangles.com/wp/personal/?p=291</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img title="" class="alignnone" alt="image" src="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2012/01/wpid-20120111_084157.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blacktriangles.com/wp/personal/2012/01/291/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tuckered Out</title>
		<link>http://www.blacktriangles.com/wp/personal/2012/01/289/</link>
		<comments>http://www.blacktriangles.com/wp/personal/2012/01/289/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 16:57:31 +0000</pubDate>
		<dc:creator>hsmith</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Sophie]]></category>

		<guid isPermaLink="false">http://www.blacktriangles.com/wp/personal/2012/01/289/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img title="" class="alignnone" alt="image" src="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2012/01/wpid-20120109_105612.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blacktriangles.com/wp/personal/2012/01/289/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Need a haircut.</title>
		<link>http://www.blacktriangles.com/wp/personal/2012/01/287/</link>
		<comments>http://www.blacktriangles.com/wp/personal/2012/01/287/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 01:15:19 +0000</pubDate>
		<dc:creator>hsmith</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.blacktriangles.com/wp/personal/2012/01/287/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img title="20120104_191339.jpg" class="alignnone" alt="image" src="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2012/01/wpid-20120104_191339.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blacktriangles.com/wp/personal/2012/01/287/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hard Living</title>
		<link>http://www.blacktriangles.com/wp/personal/2012/01/285/</link>
		<comments>http://www.blacktriangles.com/wp/personal/2012/01/285/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 17:12:14 +0000</pubDate>
		<dc:creator>hsmith</dc:creator>
				<category><![CDATA[Sophie]]></category>

		<guid isPermaLink="false">http://www.blacktriangles.com/wp/personal/2012/01/285/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img title="20120104_111129.jpg" class="alignnone" alt="image" src="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2012/01/wpid-20120104_111129.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blacktriangles.com/wp/personal/2012/01/285/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The girls</title>
		<link>http://www.blacktriangles.com/wp/personal/2011/12/283/</link>
		<comments>http://www.blacktriangles.com/wp/personal/2011/12/283/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 02:01:50 +0000</pubDate>
		<dc:creator>hsmith</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.blacktriangles.com/wp/personal/2011/12/283/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img title="20111227_103726.jpg" class="alignnone" alt="image" src="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2011/12/wpid-20111227_103726.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blacktriangles.com/wp/personal/2011/12/283/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nap Time!</title>
		<link>http://www.blacktriangles.com/wp/personal/2011/12/281/</link>
		<comments>http://www.blacktriangles.com/wp/personal/2011/12/281/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 20:21:30 +0000</pubDate>
		<dc:creator>hsmith</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.blacktriangles.com/wp/personal/2011/12/281/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img title="20111227_141819.jpg" class="alignnone" alt="image" src="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2011/12/wpid-20111227_141819.jpg" /></p>
<p><img title="20111227_141929.jpg" class="alignnone" alt="image" src="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2011/12/wpid-20111227_141929.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blacktriangles.com/wp/personal/2011/12/281/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oh Deer</title>
		<link>http://www.blacktriangles.com/wp/personal/2011/12/278/</link>
		<comments>http://www.blacktriangles.com/wp/personal/2011/12/278/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 19:52:17 +0000</pubDate>
		<dc:creator>hsmith</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.blacktriangles.com/wp/personal/2011/12/278/</guid>
		<description><![CDATA[Another fun perk of working from home.]]></description>
			<content:encoded><![CDATA[<p><img title="20111226_135001.jpg" class="alignnone" alt="image" src="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2011/12/wpid-20111226_135001.jpg" /></p>
<p>Another fun perk of working from home.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blacktriangles.com/wp/personal/2011/12/278/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tofu +1</title>
		<link>http://www.blacktriangles.com/wp/personal/2011/12/276/</link>
		<comments>http://www.blacktriangles.com/wp/personal/2011/12/276/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 01:06:36 +0000</pubDate>
		<dc:creator>hsmith</dc:creator>
				<category><![CDATA[Cooking]]></category>
		<category><![CDATA[Vegan]]></category>

		<guid isPermaLink="false">http://www.blacktriangles.com/wp/personal/2011/12/276/</guid>
		<description><![CDATA[￼]]></description>
			<content:encoded><![CDATA[<p><img title="20111223_190401.jpg" class="alignnone" alt="image" src="http://www.blacktriangles.com/wp/personal/wp-content/uploads/2011/12/wpid-20111223_190401.jpg" />￼</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blacktriangles.com/wp/personal/2011/12/276/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

