<?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>It Seemed Like a Good Idea at the Time &#187; Uncategorized</title>
	<atom:link href="http://blog.willdonnelly.net/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.willdonnelly.net</link>
	<description>Coding, Mostly</description>
	<lastBuildDate>Fri, 20 Aug 2010 15:33:00 +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>Useful Shell Trick</title>
		<link>http://blog.willdonnelly.net/2009/08/06/useful-shell-trick/</link>
		<comments>http://blog.willdonnelly.net/2009/08/06/useful-shell-trick/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 03:40:41 +0000</pubDate>
		<dc:creator>Will Donnelly</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://willdonnelly.wordpress.com/?p=272</guid>
		<description><![CDATA[Sometimes, when doing a bunch of data munging in the sh [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes, when doing a bunch of data munging in the shell, I want to pass the contents of a file through a shell pipeline, and then directly out into the file again. Unfortunately, doing this the naive way will obliterate the file's contents.</p>
<p>So a while back, I saw a neat little utility called "sponge" which simply buffered data until it ended, and then output it. While useful, this wasn't a standard Unix tool, so I couldn't very well rely on having it available.</p>
<p>Well today, after literally <strong>minutes</strong> of searching, I have found a command that seems to work just as well:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">tail -n +0</div></div>
<p>It outputs all lines in the input, beginning with line zero. Due, I suppose, to the way tail is implemented, it buffers all input before outputting anything.</p>
<p>Not exactly groundbreaking or anything, but a useful little trick to know when playing around in the shell.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F&amp;title=Useful+Shell+Trick" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F&amp;title=Useful+Shell+Trick" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F&amp;title=Useful+Shell+Trick" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F&amp;headline=Useful+Shell+Trick" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Useful+Shell+Trick&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Useful+Shell+Trick&amp;u=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Useful+Shell+Trick&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Useful+Shell+Trick&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Useful+Shell+Trick&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F&amp;title=Useful+Shell+Trick&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F08%2F06%2Fuseful-shell-trick%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.willdonnelly.net/2009/08/06/useful-shell-trick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What the Hell, XDG?</title>
		<link>http://blog.willdonnelly.net/2009/07/18/what-the-hell-xdg/</link>
		<comments>http://blog.willdonnelly.net/2009/07/18/what-the-hell-xdg/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 21:36:23 +0000</pubDate>
		<dc:creator>Will Donnelly</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://willdonnelly.wordpress.com/?p=264</guid>
		<description><![CDATA[Take a look at the XDG Base Directory Specification. It [...]]]></description>
			<content:encoded><![CDATA[<p>Take a look at the <a href="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG Base Directory Specification</a>. It looks good, doesn't it? It really makes sense to have some "official" directories to store this kind of stuff in. Now look at the default locations listed:</p>
<p>$XDG_CONFIG_HOME - Looks like they nailed that pretty well. I might rather see some user-editable config files placed directly in '~/.app/', but '~/.config/app' is alright as a second choice.</p>
<p>$XDG_CACHE_HOME - Dead on. It is <strong>incredibly</strong> nice to have a single home for all those nasty little cache files that are a little too persistent to place in '/tmp'.</p>
<p>$XDG_DATA_HOME - Okay, it's a little bit ugly to store extra data in '~/.local/share', why couldn't they just put it in '~/.local'? But on the other hand, most applications don't even need extra data of that sort anyway, and it will rarely, if ever, be edited by a human, so it's at least a little bit acceptable.</p>
<p>$XDG_DATA_DIRS - Yeah, they're back on form for this one. Those two default directories cover basically every app in existence, so not a single fault can be found there.</p>
<p>$XDG_CONFIG_DIRS - WHAT THE FUCK! Why the hell do they decide every application needs to store their system-wide configuration in a special '/etc/xdg' directory? On my system, I count a grand total of <strong>three</strong> applications in there, of which I use <strong>one</strong> and have configured <strong>zero</strong>. For comparison, I count <strong>157</strong> files and directories in '/etc', other than '/etc/xdg'. Obviously, people will kind of expect to see their system-wide config files placed directly in '/etc'</p>
<p>What reason can there be for that kind of annoyance? When I have to go in and manually edit a system-wide config file, I will look for it in '/etc'. It would never even have <strong>occurred</strong> to me to look in '/etc/xdg'. At the very least, couldn't the default search path have been '/etc/xdg', followed by '/etc'?</p>
<p>This kind of trivial little issue weakens the entire specification, because such a seemingly inconsequential little rough edge can completely sour people's opinions of the whole document. And it would be a shame if that happened, because I would rather see the majority of these things become common convention.</p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.11';
var flattr_uid = '19057';
var flattr_url = 'http://blog.willdonnelly.net';
var flattr_lng = 'en_GB';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'It Seemed Like a Good Idea at the Time';
var flattr_dsc = 'Coding, Mostly';
</script>
<script src="http://api.flattr.com/button/load.js?v=0.2" type="text/javascript"></script><div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F&amp;title=What+the+Hell%2C+XDG%3F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F&amp;title=What+the+Hell%2C+XDG%3F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F&amp;title=What+the+Hell%2C+XDG%3F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F&amp;headline=What+the+Hell%2C+XDG%3F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=What+the+Hell%2C+XDG%3F&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=What+the+Hell%2C+XDG%3F&amp;u=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=What+the+Hell%2C+XDG%3F&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=What+the+Hell%2C+XDG%3F&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=What+the+Hell%2C+XDG%3F&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F&amp;title=What+the+Hell%2C+XDG%3F&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F07%2F18%2Fwhat-the-hell-xdg%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.willdonnelly.net/2009/07/18/what-the-hell-xdg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Escaping Strings in a Shell Pipeline</title>
		<link>http://blog.willdonnelly.net/2009/06/25/escaping-strings-in-a-shell-pipeline/</link>
		<comments>http://blog.willdonnelly.net/2009/06/25/escaping-strings-in-a-shell-pipeline/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 22:15:46 +0000</pubDate>
		<dc:creator>Will Donnelly</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://willdonnelly.wordpress.com/?p=259</guid>
		<description><![CDATA[A useful little sed script I wrote, which turned out to [...]]]></description>
			<content:encoded><![CDATA[<p>A useful little sed script I wrote, which turned out to be much more useful than I expected. It simply takes a list of files, one per line, and outputs that same list, but with all the spaces and special characters escaped. It's mainly intended for use right between find and xargs, as in "find . -name 'asd' -print | shell-escape | xargs -I % echo %'</p>
<p>The list of characters is taken from <a href="http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_02">IEEE Std 1003.1</a></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#!/bin/sed -f<br />
#<br />
# Shell-Escape<br />
# A very basic script to escape characters in the shell.<br />
# Mainly intended for use in shell pipelines, right between<br />
# 'find' and 'xargs'<br />
#<br />
<br />
s@\\@\\\\@g<br />
s@ @\\ @g<br />
s@'@\'@g<br />
s@&quot;@\\&quot;@g<br />
s@(@\\(@g<br />
s@)@\\)@g<br />
s@|@\\|@g<br />
s@&amp;@\\&amp;@g<br />
s@;@\\;@g<br />
s@&lt;@\\&lt;@g<br />
s@&gt;@\\&gt;@g<br />
s@`@\\`@g</div></div>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F&amp;title=Escaping+Strings+in+a+Shell+Pipeline" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F&amp;title=Escaping+Strings+in+a+Shell+Pipeline" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F&amp;title=Escaping+Strings+in+a+Shell+Pipeline" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F&amp;headline=Escaping+Strings+in+a+Shell+Pipeline" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Escaping+Strings+in+a+Shell+Pipeline&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Escaping+Strings+in+a+Shell+Pipeline&amp;u=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Escaping+Strings+in+a+Shell+Pipeline&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Escaping+Strings+in+a+Shell+Pipeline&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Escaping+Strings+in+a+Shell+Pipeline&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F&amp;title=Escaping+Strings+in+a+Shell+Pipeline&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F06%2F25%2Fescaping-strings-in-a-shell-pipeline%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.willdonnelly.net/2009/06/25/escaping-strings-in-a-shell-pipeline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Haskell: A Pretty Nice Language</title>
		<link>http://blog.willdonnelly.net/2009/05/19/haskell-a-pretty-nice-language/</link>
		<comments>http://blog.willdonnelly.net/2009/05/19/haskell-a-pretty-nice-language/#comments</comments>
		<pubDate>Tue, 19 May 2009 21:43:30 +0000</pubDate>
		<dc:creator>Will Donnelly</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://willdonnelly.wordpress.com/?p=247</guid>
		<description><![CDATA[I was going through one of those "every language sucks" [...]]]></description>
			<content:encoded><![CDATA[<p>I was going through one of those "every language sucks" periods a few days back, so I decided to do something productive and learn me a Haskell. So far, I'm liking it: the pure functional style isn't as hard as I expected, monads are okay after a bit (though I'm still a little suspicious of them), the strict typing isn't too much of a burden, the polymorphic types are bliss to use, and the pattern matching is simply wonderful.  It also comes with an extensive set of libraries and a central repository, which is nice to find in a non-mainstream language. Overall, I think Haskell is a good language to know.</p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.11';
var flattr_uid = '19057';
var flattr_url = 'http://blog.willdonnelly.net';
var flattr_lng = 'en_GB';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'It Seemed Like a Good Idea at the Time';
var flattr_dsc = 'Coding, Mostly';
</script>
<script src="http://api.flattr.com/button/load.js?v=0.2" type="text/javascript"></script><div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F&amp;title=Haskell%3A+A+Pretty+Nice+Language" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F&amp;title=Haskell%3A+A+Pretty+Nice+Language" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F&amp;title=Haskell%3A+A+Pretty+Nice+Language" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F&amp;headline=Haskell%3A+A+Pretty+Nice+Language" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Haskell%3A+A+Pretty+Nice+Language&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Haskell%3A+A+Pretty+Nice+Language&amp;u=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Haskell%3A+A+Pretty+Nice+Language&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Haskell%3A+A+Pretty+Nice+Language&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Haskell%3A+A+Pretty+Nice+Language&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F&amp;title=Haskell%3A+A+Pretty+Nice+Language&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.willdonnelly.net%2F2009%2F05%2F19%2Fhaskell-a-pretty-nice-language%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.willdonnelly.net/2009/05/19/haskell-a-pretty-nice-language/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Few Handy File Transfer Tools (All Written in Python)</title>
		<link>http://blog.willdonnelly.net/2008/12/13/a-few-handy-file-transfer-tools-all-written-in-python/</link>
		<comments>http://blog.willdonnelly.net/2008/12/13/a-few-handy-file-transfer-tools-all-written-in-python/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 01:02:37 +0000</pubDate>
		<dc:creator>Will Donnelly</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[utilities]]></category>

		<guid isPermaLink="false">http://willdonnelly.wordpress.com/?p=99</guid>
		<description><![CDATA[File transfer: the eternal problem.
The file is on your [...]]]></description>
			<content:encoded><![CDATA[<h4>File transfer: the eternal problem.</h4>
<p>The file is on your computer, you want to get it onto your friend's computer, and you're in a hurry.  Luckily, there are tools to help.  All of these tools are single files, written in python, and (probably) work on Windows (although I haven't checked)</p>
<h2>Single-File Tools</h2>
<h3>Droopy</h3>
<p><a title="Droopy" href="http://stackp.online.fr/?p=28">Droopy</a> is a wonderful little script.  It's wonderfully useful when your friend has a file they need to send to you, and you don't want to make them install anything.  Just run it (possibly with some arguments) and it will start a little miniature web-server to which anyone can upload a file, and then it exits.  Command line options make it possible to optionally display a message and/or an icon on the upload page.</p>
<h3>Woof</h3>
<p><a title="Woof" href="http://www.home.unix-ag.org/simon/woof.html">Woof</a> (Web Offer One File) is the opposite to Droopy.  Instead of recieving a single file, Woof sends one.  It can also optionally send an entire folder as a single tar archive.  Another nice feature of woof is its "-s" option, which will cause the client to be served an identical copy of the woof.py script.</p>
<h3></h3>
<h2></h2>
<h3></h3>
<h2>Heavyweight Contenders</h2>
<p>These tools are meant for jobs a little larger than the ones above.  The tools already mentioned concern themselves with a single all-important file transfer, which is all well and good.  But like the difference between claw hammer and a sledgehammer, sometimes you just need a tool with a little more heft.  That's where these scripts come in.</p>
<h3>Python HTTP Server</h3>
<p>This tool is only barely fancy enough to need mentioning, but the operative word here is "barely". Unknown to almost everyone, a full-featured static HTTP server lurks within the standard python executable under the guise of an "example".  All that you have to do is call "python -m SimpleHTTPServer" in a console window, and it will happily begin serving up the current directory on port 8000.</p>
<h3>pyftpdlib</h3>
<p>All of these scripts are wonderful tools, just perfect for their intended niches.  But sometimes, your needs are more complex.  What if you need to both send and recieve multiple files?  In this case, our old standby FTP comes to hand.  In this case, the <a title="Python FTP Server Library" href="http://code.google.com/p/pyftpdlib/">pyftpdlib</a> library should be our tool of choice.  While at first glance it looks rather daunting, a tarball filled with numerous files and subdirectories, the library itself consists of just one file, <a title="The File We Need" href="http://pyftpdlib.googlecode.com/svn/trunk/pyftpdlib/ftpserver.py">ftpserver.py</a>.  With a few modifications, this file can be the perfect portable, install-less FTP server.  I spent about an hour today putting together <a title="Ugh, the URL looks like random characters" href="http://bazaar.launchpad.net/%7Ewill-donnelly/%2Bjunk/Snippets/download/will.donnelly%40gmail.com-20081214005835-6cshmwt5w3ba651u/myftpd.py-20081214005815-rqoc1kcezr1eaer7-2/myFTPD.py">these changes</a>, and now have about the nicest little FTP server I've ever had the joy of playing with.  Just download the FTP server library, replace the test() and main functions at the end with my 50-line changes (basically just giving it command-line options), and you'll have a user-friendly tool for sharing any kind of files you may need.</p>
<p>I love collecting little tools like this.  One never knows when they might come in handy.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F&amp;title=A+Few+Handy+File+Transfer+Tools+%28All+Written+in+Python%29" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F&amp;title=A+Few+Handy+File+Transfer+Tools+%28All+Written+in+Python%29" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F&amp;title=A+Few+Handy+File+Transfer+Tools+%28All+Written+in+Python%29" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F&amp;headline=A+Few+Handy+File+Transfer+Tools+%28All+Written+in+Python%29" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=A+Few+Handy+File+Transfer+Tools+%28All+Written+in+Python%29&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=A+Few+Handy+File+Transfer+Tools+%28All+Written+in+Python%29&amp;u=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=A+Few+Handy+File+Transfer+Tools+%28All+Written+in+Python%29&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=A+Few+Handy+File+Transfer+Tools+%28All+Written+in+Python%29&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=A+Few+Handy+File+Transfer+Tools+%28All+Written+in+Python%29&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F&amp;title=A+Few+Handy+File+Transfer+Tools+%28All+Written+in+Python%29&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F12%2F13%2Fa-few-handy-file-transfer-tools-all-written-in-python%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.willdonnelly.net/2008/12/13/a-few-handy-file-transfer-tools-all-written-in-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>It&#039;s Alive!</title>
		<link>http://blog.willdonnelly.net/2008/11/09/its-alive/</link>
		<comments>http://blog.willdonnelly.net/2008/11/09/its-alive/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 22:39:51 +0000</pubDate>
		<dc:creator>Will Donnelly</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[lexer]]></category>
		<category><![CDATA[parser]]></category>

		<guid isPermaLink="false">http://willdonnelly.wordpress.com/?p=92</guid>
		<description><![CDATA[Wow.  From idle complaints to a working implementation [...]]]></description>
			<content:encoded><![CDATA[<p>Wow.  From idle complaints to a working implementation in 12 days.  And most of those days I did exactly no work on this project either.  I'm surprised.</p>
<p>Long story short, it turns out it's actually not that hard to write a parser, and a lexer is even easier to do if you just use a preexisting regular expression library.</p>
<p>So now I can officially announce the existence of the <a title="The Helicon Parser Toolkit" href="https://code.launchpad.net/~will-donnelly/+junk/Helicon">Helicon Parser Toolkit</a>.  It's small, it works for my purposes, and it isn't Lex/Yacc.  I don't know what the official classification of the parser is, I just did whatever seemed like a good idea at the time.  It has no lookahead currently, but since I just wanted to parse Scheme, that's fine by me.</p>
<p>The lexer and parser together weigh in at 438 lines of code (not including the two header files), and all of it except for about five functions is just bookkeeping.</p>
<p>The lexer uses PCRE for its regular expression matching, and the parser is entirely coded by hand.</p>
<p>As far as Valgrind can tell me, there are no memory leaks other that what GNU Readline brings to the table (maybe this is my fault and I'm using it wrong.  Will check later.)</p>
<p>It seems to work so far.</p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.11';
var flattr_uid = '19057';
var flattr_url = 'http://blog.willdonnelly.net';
var flattr_lng = 'en_GB';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'It Seemed Like a Good Idea at the Time';
var flattr_dsc = 'Coding, Mostly';
</script>
<script src="http://api.flattr.com/button/load.js?v=0.2" type="text/javascript"></script><div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F&amp;title=It%26%23039%3Bs+Alive%21" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F&amp;title=It%26%23039%3Bs+Alive%21" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F&amp;title=It%26%23039%3Bs+Alive%21" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F&amp;headline=It%26%23039%3Bs+Alive%21" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=It%26%23039%3Bs+Alive%21&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=It%26%23039%3Bs+Alive%21&amp;u=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=It%26%23039%3Bs+Alive%21&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=It%26%23039%3Bs+Alive%21&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=It%26%23039%3Bs+Alive%21&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F&amp;title=It%26%23039%3Bs+Alive%21&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F11%2F09%2Fits-alive%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.willdonnelly.net/2008/11/09/its-alive/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Long Time, No Post</title>
		<link>http://blog.willdonnelly.net/2008/10/14/long-time-no-post/</link>
		<comments>http://blog.willdonnelly.net/2008/10/14/long-time-no-post/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 22:02:50 +0000</pubDate>
		<dc:creator>Will Donnelly</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://willdonnelly.wordpress.com/?p=76</guid>
		<description><![CDATA[Until last Sunday, I hadn't posted anything recently.  [...]]]></description>
			<content:encoded><![CDATA[<p>Until last Sunday, I hadn't posted anything recently.  Mostly, this is because I got distracted by Super Mario 64 two weeks ago, and went directly on to Paper Mario 64 the week after that.  Partly, it's because I experienced a sudden upsurge in my homework load two weeks ago, which took until yesterday to finish all of.  A little bit can be blamed on college applications, and many other little things that ate into my time.  But I think a large part of the problem was that the first few posts I wrote on this blog were rather long, and I felt something of an obligation to keep up the quantity.</p>
<p>So. Change.  Shorter posts, but posts nonetheless.  Hopefully now I'll be able to get myself to write more often.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F&amp;title=Long+Time%2C+No+Post" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F&amp;title=Long+Time%2C+No+Post" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F&amp;title=Long+Time%2C+No+Post" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F&amp;headline=Long+Time%2C+No+Post" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Long+Time%2C+No+Post&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Long+Time%2C+No+Post&amp;u=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Long+Time%2C+No+Post&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Long+Time%2C+No+Post&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Long+Time%2C+No+Post&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F&amp;title=Long+Time%2C+No+Post&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.willdonnelly.net%2F2008%2F10%2F14%2Flong-time-no-post%2F" ><img class="lightsocial_img" src="http://blog.willdonnelly.net/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.willdonnelly.net/2008/10/14/long-time-no-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
