<?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>Zero_Dogg's blog</title>
	<atom:link href="http://blog.zerodogg.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zerodogg.org</link>
	<description>Geeky comments on geeky things</description>
	<lastBuildDate>Tue, 02 Mar 2010 14:42:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A very simple one-liner REPL for perl</title>
		<link>http://blog.zerodogg.org/2010/03/02/a-very-simple-one-liner-repl-for-perl/</link>
		<comments>http://blog.zerodogg.org/2010/03/02/a-very-simple-one-liner-repl-for-perl/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 14:42:01 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=166</guid>
		<description><![CDATA[Here&#8217;s a very simple one-liner REPL for perl, it&#8217;s not very advanced (like ie. re.pl) but does well in most cases:
perl -MData::Dumper -MTerm::ReadLine -e '$r = Term::ReadLine->new(1);while(defined($_ = $r->readline("code:  "))){$ret=Dumper(eval($_));$err=$@;if($err ne ""){print $err;}else{print $ret;}}'
It uses Term::ReadLine, which gives a simple session history if you have a Term::ReadLine::* implementation that supports it. It will also [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a very simple one-liner REPL for perl, it&#8217;s not very advanced (like ie. <a href="http://search.cpan.org/~mstrout/Devel-REPL-1.003007/lib/Devel/REPL.pm">re.pl</a>) but does well in most cases:<br />
<code>perl -MData::Dumper -MTerm::ReadLine -e '$r = Term::ReadLine->new(1);while(defined($_ = $r->readline("code:  "))){$ret=Dumper(eval($_));$err=$@;if($err ne ""){print $err;}else{print $ret;}}'</code></p>
<p>It uses Term::ReadLine, which gives a simple session history if you have a Term::ReadLine::* implementation that supports it. It will also use Data::Dumper so that you can quickly see any data structures, you can always use scalar(STATEMENT) if the return value differs in list and scalar context.</p>
<p>Here&#8217;s an alias that can be shoved into .bashrc :<br />
<code>alias 'perl-repl'='perl -MData::Dumper -MTerm::ReadLine -e '\''$r = Term::ReadLine->new(1);while(defined($_ = $r->readline("code:  "))){$ret=Dumper(eval($_));$err=$@;if($err ne ""){print $err;}else{print $ret;}}'\'''</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2010/03/02/a-very-simple-one-liner-repl-for-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SWEC 0.4</title>
		<link>http://blog.zerodogg.org/2009/10/15/swec-0-4/</link>
		<comments>http://blog.zerodogg.org/2009/10/15/swec-0-4/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 16:21:01 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[SWEC]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=160</guid>
		<description><![CDATA[About two weeks back I released SWEC version 0.4. The largest new thing in this release is an updated file format for writing test definitions.  Thew new format is a lot more flexible, and will also allow me to extend its syntax with more capabilities more easily later on. It can still read the [...]]]></description>
			<content:encoded><![CDATA[<p>About two weeks back I released <a href="http://random.zerodogg.org/swec/">SWEC version 0.4</a>. The largest new thing in this release is an updated file format for writing test definitions.  Thew new format is a lot more flexible, and will also allow me to extend its syntax with more capabilities more easily later on. It can still read the old file format, and I&#8217;ll keep the compat code in there until SWEC 0.6 &#8211; so people have time to update their files (only minor changes are needed to update them to the new file format, should only take a couple of minutes).</p>
<p>Other than that I extended the command-line parser, so you can now say &#8220;<code>swec example.com -s /test.html</code>&#8221; where you would previously have had to do &#8220;<code>swec --baseurl example.com -s /test.html</code>&#8220;. Other than that it&#8217;s mostly a bunch of cleanups, some refactoring and a few minor bugfixes, in addition to a new test suite so the thing can be properly sanity-checked before release.</p>
<p>If you need to sanity check dynamic websites, give <a href="http://random.zerodogg.org/swec/">SWEC</a> a go.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/10/15/swec-0-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fixing PHP documentation woes</title>
		<link>http://blog.zerodogg.org/2009/10/14/fixing-php-documentation-woes/</link>
		<comments>http://blog.zerodogg.org/2009/10/14/fixing-php-documentation-woes/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 15:50:27 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=154</guid>
		<description><![CDATA[I prefer writing in Perl or Ruby, but sometimes the choice of language has been made by someone else, a position I have found myself in lately. When using perl and ruby, there&#8217;s always perldoc and ri, so documentation is a quick command away in any of my terminals, which thanks to screen is never [...]]]></description>
			<content:encoded><![CDATA[<p>I prefer writing in Perl or Ruby, but sometimes the choice of language has been made by someone else, a position I have found myself in lately. When using perl and ruby, there&#8217;s always <code>perldoc</code> and <code>ri</code>, so documentation is a quick command away in any of my terminals, which thanks to <i>screen</i> is never fewer than ten. PHP however, has no such tool, the docs are in HTML and many distros don&#8217;t even package the HTML docs. So, to avoid the pain of switching out of the safety of my terminal and into a web browser all the time, and speed up my work, I wrote an app, <a href="http://random.zerodogg.org/phpdocr">phpdocr</a>. It&#8217;s quite simple, it scrapes php.net (and caches the result for quick viewing later) and displays the parsed HTML in your pager &#8211; resulting in something sort of like <code>perldoc</code> or <code>ri</code>. So if you have the same itch, grab it from <a href="http://random.zerodogg.org/phpdocr">http://random.zerodogg.org/phpdocr</a>.</p>
<p>The app itself, of course, is not written in PHP &#8211; it&#8217;s written in ruby.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/10/14/fixing-php-documentation-woes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sanity checking mason</title>
		<link>http://blog.zerodogg.org/2009/10/13/sanity-checking-mason/</link>
		<comments>http://blog.zerodogg.org/2009/10/13/sanity-checking-mason/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 15:27:54 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=145</guid>
		<description><![CDATA[I have found myself doing quite a bit of mason at work lately, both maintaining old legacy stuff and as the view in a catalyst app.
While doing this I found myself missing the old &#8216;perl -c&#8217; to quickly sanity check code, however naturally that won&#8217;t work on Mason &#8211; as mason is essentially HTML with [...]]]></description>
			<content:encoded><![CDATA[<p>I have found myself doing quite a bit of <a href="http://www.masonhq.com/">mason</a> at work lately, both maintaining old legacy stuff and as the view in a <a href="http://www.catalystframework.org/">catalyst</a> app.</p>
<p>While doing this I found myself missing the old &#8216;perl -c&#8217; to quickly sanity check code, however naturally that won&#8217;t work on Mason &#8211; as mason is essentially HTML with inline perl, not the other way around. As such I wrote a quick script that emulates &#8216;perl -c&#8217; by loading the file using mason inside eval then printing any errors. The script itself is pretty simple, though it doesn&#8217;t have any support for printing useful line numbers &#8211; but at least it gives an idea of what/where the problem is. The script also declares $c and $m, as at least for Catalyst &#8211; those will be available.</p>
<p><a href="http://random.zerodogg.org/snippets/masontest">You can clone the gist, or just copy+paste the code:</a></p>
<div style="overflow-y: scroll; max-height:400px">
<script src="http://gist.github.com/197943.js"></script>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/10/13/sanity-checking-mason/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dynamically loading git bash-completion</title>
		<link>http://blog.zerodogg.org/2009/10/12/dynamically-loading-git-bash-completion/</link>
		<comments>http://blog.zerodogg.org/2009/10/12/dynamically-loading-git-bash-completion/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 21:27:05 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash completion]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=140</guid>
		<description><![CDATA[I have to admit, I love git. It has really made me more efficient, and I can&#8217;t honestly think of ever switching back to ie. svn.
My shell is bash, and up until now I used a very simple bash completion for git, but at times I do see myself wanting something a bit more comprehensive. [...]]]></description>
			<content:encoded><![CDATA[<p>I have to admit, I love <a href="http://git-scm.com/">git</a>. It has really made me more efficient, and I can&#8217;t honestly think of ever switching back to ie. svn.</p>
<p>My shell is bash, and up until now I used a very simple bash completion for git, but at times I do see myself wanting something a bit more comprehensive. However, I really don&#8217;t want bash to be slow to open (of course, the definition of &#8220;slow&#8221; is quite individual &#8211; over a second is way too much ;), which it can be if it needs to load all bash completion definitions when starting. Therefore I wrote a small bash function for my .bashrc that will dynamically load the git bash completion when it first is accessed. Bash starts fast, and I get git bash completion &#8211; problem solved (well, the first time git bash completion is used, it of course takes a tad longer than normal because it needs to load it first, but that&#8217;s completely livable). As a bonus, it will fall back to my old and simple completion if the proper one is not available.</p>
<p><a href="http://random.zerodogg.org/snippets/gitdynacomp">Here&#8217;s the code snippet:</a><br />
<script src="http://gist.github.com/208248.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/10/12/dynamically-loading-git-bash-completion/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Vote for the Socialist Left Party on the 14th of September</title>
		<link>http://blog.zerodogg.org/2009/09/10/vote-for-the-socialist-left-party-on-the-14th-of-september/</link>
		<comments>http://blog.zerodogg.org/2009/09/10/vote-for-the-socialist-left-party-on-the-14th-of-september/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 20:25:50 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=134</guid>
		<description><![CDATA[Disclaimer: This is a political post. If you&#8217;re not interested in politics (or not interested in Norwegian politics), please ignore it.
The date for the Norwegian general election is closing up fast, and I would like to urge my readers to vote for the Socialist Left Party (SV). The last chance to vote before the actual [...]]]></description>
			<content:encoded><![CDATA[<p><b>Disclaimer:</b> This is a political post. If you&#8217;re not interested in politics (or not interested in <i>Norwegian</i> politics), please ignore it.</p>
<p>The date for the Norwegian general election is closing up fast, and I would like to urge my readers to vote for the Socialist Left Party (SV). The last chance to vote before the actual election day is, in many municipalities, tomorrow, the 11th of September. The actual election day is the 14th of September. Remember that every single vote counts!</p>
<p>We don&#8217;t need any dark blue experiment with our economy, healthcare or our children. We need a fairer government that works for equality, that takes the climate changes seriously and are prepared to act now rather than later, when it&#8217;s too late. We need a country where women earns the same as men, not merely 85% (avg.) of what a man makes and we need to treat everyone with the same amount of respect.</p>
<p>The economic crisis has shown us how bad it can get when we allow as much market freedom as we do. There are a few select people that gamble away at the stock market, keeping any earnings for themselves while socializing the problem if they experience losses. Norway has, largely thanks to SV&#8217;s socialist finance minister, <a href="http://www.cnbc.com/id/30743451/">managed the financial crisis very well</a>. We need a market that is <i>more</i> controlled, not less! We can not allow capitalists to gamble away our jobs, nor can we allow the parties on the right to privatize our healthcare system, and by doing so throwing that into the same chaos that has caused the crisis we are now in.</p>
<p>If you want more information about SV&#8217;s politics, visit <a href="http://www.sv.no/">http://www.sv.no/</a> (<a href="http://sv.no/Language/English">http://sv.no/Language/English</a> for English), or <a href="http://www.zerodogg.org/me/contact">contact me</a> directly and I will try to answer any questions you have.</p>
<p>For these reasons, and more (see the website), vote SV the 14th of September.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/09/10/vote-for-the-socialist-left-party-on-the-14th-of-september/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Music sorting 0.2</title>
		<link>http://blog.zerodogg.org/2009/08/14/music-sorting-0-2/</link>
		<comments>http://blog.zerodogg.org/2009/08/14/music-sorting-0-2/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 19:00:49 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[mussort]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=131</guid>
		<description><![CDATA[Last week I released mussort version 0.2. This release is a huge update from version 0.1 that I released back in early 2008.
mussort is a simple command-line music sorting program. It recursively processes a directory tree, and then sorts whatever music files it finds there, renaming the files and putting them in a nice directory [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I released <a href="http://random.zerodogg.org/mussort">mussort</a> version 0.2. This release is a huge update from version 0.1 that I released back in early 2008.</p>
<p>mussort is a simple command-line music sorting program. It recursively processes a directory tree, and then sorts whatever music files it finds there, renaming the files and putting them in a nice directory tree.</p>
<p>0.2 added a load of features designed to make mussort faster. It introduced optional caching of file tags, which has a <b>major</b> impact on the performance on subsequent runs on a directory tree. I optimized away an insane amount of readdir() calls that it kept doing over and over, even though nothing had actually changed since the last readdir(). It also only supported <i>id3info</i> and <i>ogginfo</i> as sources for information, which is problematic because ogginfo is very very slow at times. So in 0.2 it can use the <i>Audio::File</i> perl module if it is available. It provides redundancy (should Audio::File fail for an ogg file, it falls back to ogginfo, should id3info fail for an mp3 file it tries Audio::File) and a large speed increase for ogg vorbis files. It can also use <i>id3v2</i> if it is available. Because of the caching however, even without Audio::File, any subsequent runs on ogg vorbis files will be a lot faster.</p>
<p>When it comes to actual features, the largest one is support for detection of compilation albums. It will locate an album that contains a lot of different artists and then put those into a single directory named after the album, rather than put them into separate artist/album dirs. For those that don&#8217;t want that, it is important to note that the feature is optional and must be explicitly requested (like case-insensitive sorting). </p>
<p>Other than that there&#8217;s a bunch of code cleanups, along with minor additions, such as selectable verbosity (&#8211;verbose, &#8211;quiet) and the option to keep all duplicate files around (&#8211;keepdupes). mussort is also now <a href="http://github.com/zerodogg/swec">hosted on github</a>, so if you are interested, fork the repository and let&#8217;s see what cool stuff you can come up with! Remember to prod me with a pull request so that any nice things you do get included upstream.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/08/14/music-sorting-0-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Day Planner 0.10</title>
		<link>http://blog.zerodogg.org/2009/04/16/day-planner-010/</link>
		<comments>http://blog.zerodogg.org/2009/04/16/day-planner-010/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 20:19:16 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=127</guid>
		<description><![CDATA[Day Planner 0.10 was released on the 25th of March! This release is, imho, a great step forward from 0.9. It fixes various minor bugs, cleans up parts of the UI, handles strange or broken iCalendar files better, enforces UTF-8 encoding on the calendar and adds a plugin system.
The largest new feature is the plugin [...]]]></description>
			<content:encoded><![CDATA[<p>Day Planner 0.10 was released on the 25th of March! This release is, imho, a great step forward from 0.9. It fixes various minor bugs, cleans up parts of the UI, handles strange or broken iCalendar files better, enforces UTF-8 encoding on the calendar and adds a plugin system.</p>
<p>The largest new feature is the plugin system. Day Planner now comes with support for plugins, complete with a simple file format that allows users to easily install third party plugins.  Its purpose is of course to make it easy for other people to alter the behaviour of Day Planner, or add features to it easily, without having to resort to patching the app itself, but also to make it easier for me to add optional features that perhaps not everyone wants (for instance, 0.10 comes with a tray icon plugin. It is disabled by default, but those that want to use it can do so quite easily). The API is simple, and somewhat inspired by the Gtk2-perl API, to make it feel somewhat familiar for people already used to signal-based programming.</p>
<p>The tarball comes with an example plugin, plugins/HelloWorld.pm that is well commented and explains how to do some of the basic things like hooking into signals, displaying simple dialog boxes and adding events to the calendar. The API itself is documented in DP::CoreModules::Plugin (access the documentation by running perldoc modules/DP-CoreModules/lib/DP/CoreModules/Plugin.pm from the base directory of the Day Planner tarball or git repo).</p>
<p>If you want to write a plugin, and need some help or pointers, feel free to join the Day Planner irc channel, #dayplanner on irc.freenode.net and I&#8217;ll be glad to help.</p>
<p><b>Git</b></p>
<p>As mentioned earlier, Day Planner is now using git instead of subversion. After I learned git I now greatly prefer it over subversion, and have thus moved all of my projects to it. Information on how to use the Day Planner git repo can be found at <a href="http://www.day-planner.org/index.php/development/git">http://www.day-planner.org/index.php/development/git</a>:</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/04/16/day-planner-010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The happy travels of a postal parcel</title>
		<link>http://blog.zerodogg.org/2009/02/18/the-happy-travels-of-a-postal-parcel/</link>
		<comments>http://blog.zerodogg.org/2009/02/18/the-happy-travels-of-a-postal-parcel/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 14:07:33 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Bugs :(]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=117</guid>
		<description><![CDATA[Last year, the 21st of December I had to send in my GF&#8217;s cellphone for repairs (bought online), incredibly enough the repairs went smoothly and fast, and on the 29th of December it was shipped back to us, using the Norwegian postal system. Little did we know that it wanted to go on a round [...]]]></description>
			<content:encoded><![CDATA[<p>Last year, the 21st of December I had to send in my GF&#8217;s cellphone for repairs (bought online), incredibly enough the repairs went smoothly and fast, and on the 29th of December it was shipped back to us, using the Norwegian postal system. Little did we know that it wanted to go on a round trip around the southern part of Norway. This is its story.</p>
<p>29.12.08 &#8211; Sent from <i>Drammen</i>, Norway<br />
29.12.08 &#8211; Arrived at a terminal in <i>Oslo</i><br />
30.12.08 &#8211; Arrived at a terminal in <i>Stavanger</i><br />
31.12.08 &#8211; Arrived at a terminal in <i>Haugesund</i><br />
02.01.09 &#8211; Beep! Still in <i>Haugesund</i>, and the post office realizes that we have moved and that we have bought a service to forward our mail to our new address<br />
02.01.09 &#8211; Arrived in <i>Stavanger</i>. Gah! That&#8217;s the wrong way!<br />
05.01.09 &#8211; Registered at a terminal in <i>Bergen</i>. Yay! It&#8217;s getting close!<br />
06.01.09 &#8211; Arrived at our local post office in <i>Bergen</i>. Hurray.</p>
<p>&#8230;However, they never sent us any packing slip, and we didn&#8217;t have the tracking number so we didn&#8217;t know.</p>
<p>16.01.09 &#8211; Beep! Still in <i>Bergen</i>, and the post office realizes&#8230;something and decides to ship it somewhere else.<br />
16.01.09 &#8211; Registered at a terminal in <i>Bergen</i><br />
19.01.09 &#8211; Registered at a terminal in <i>Stavanger</i>?!<br />
20.01.09 &#8211; Arrived at a post office in <i>Haugesund</i>&#8230;again<br />
31.01.09 &#8211; Beep! Still in <i>Haugesund</i>, and the post office realizes, once again that we have moved and that we STILL have purchased the service to forward it to our new address.<br />
02.02.09 &#8211; Registered at a terminal in <i>Stavanger</i>&#8230;yet again<br />
03.02.09 &#8211; Registered at a terminal in <i>Bergen</i><br />
04.02.09 &#8211; Arrived at our local post office in <i>Bergen</i>&#8230;again. Hurray!</p>
<p>&#8230;But they STILL hasn&#8217;t sent us any packing slip stating that the package has arrived and that we need to pick it up.<br />
We contact the retailer, which contacts the repair shop, which provides the information that it is here! At our local post office!<br />
So we go to our local post office, I present my ID and that there&#8217;s a package for me, aaand&#8230; they can&#8217;t find it. We go home and yet again mail the retailer, which contacts the repair shop which then gets hold of the tracking number.<br />
Armed with this brand new information, we head to the post office again&#8230;</p>
<p>18.02.09 &#8211; We get the package.</p>
<p>And no, they still haven&#8217;t provided a packing slip.</p>
<p>This is true Norwegian efficiency.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/02/18/the-happy-travels-of-a-postal-parcel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogging for LGP</title>
		<link>http://blog.zerodogg.org/2009/02/13/blogging-for-lgp/</link>
		<comments>http://blog.zerodogg.org/2009/02/13/blogging-for-lgp/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 13:10:05 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=113</guid>
		<description><![CDATA[I&#8217;ve just written my first blog post for Linux Game Publishing on the new LGP blog.
The post is about the LGP community. You can head over to the LGP blog to read it.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just written my first blog post for <a href="http://www.linuxgamepublishing.com/">Linux Game Publishing</a> on the new <a href="http://blog.linuxgamepublishing.com/">LGP blog</a>.</p>
<p>The post is about the <a href="http://blog.linuxgamepublishing.com/?p=65">LGP community</a>. You can head over to the <a href="http://blog.linuxgamepublishing.com/?p=65">LGP blog</a> to read it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/02/13/blogging-for-lgp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SWEC future plans</title>
		<link>http://blog.zerodogg.org/2009/02/09/swec-future-plans/</link>
		<comments>http://blog.zerodogg.org/2009/02/09/swec-future-plans/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 21:06:33 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[SWEC]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=108</guid>
		<description><![CDATA[I&#8217;ve got some plans for SWEC in the future. One of its primary limitations at the time is that it can&#8217;t really do advanced tests using things like POST or specific pattern matching. So I&#8217;m planning a simple command-based file format where you can define advanced checks for sites, to compliment the already existing fully-automated [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve got some plans for <a href="http://random.zerodogg.org/swec">SWEC</a> in the future. One of its primary limitations at the time is that it can&#8217;t really do advanced tests using things like POST or specific pattern matching. So I&#8217;m planning a simple command-based file format where you can define advanced checks for sites, to compliment the already existing fully-automated checks.</p>
<p>The basic syntax will be something like this (any input is welcome):<br />
<code><br />
URL http://...<br />
GET<br />
MATCH /regex/ or STRING<br />
RUN_CHECKS</p>
<p>URL http://<br />
POST 'SOME_POSTDATA'<br />
MATCH /regex/ or STRING<br />
[My regex] MATCH /regex/<br />
[String equality] MATCH STRING<br />
RUN_CHECKS</p>
<p>RUN_MAIN<br />
</code></p>
<p>Here any URL statement defines a new check, where all previous data is dropped. Each section can have a <i>POST</i> or <i>GET</i> statement, and then any number of <i>MATCH</i> statements, as well as a <i>RUN_CHECKS</i> statement. If any <i>MATCH</i> statement fails (ie. the regex doesn&#8217;t match, or the result isn&#8217;t equal to <i>STRING</i>) then it will skip the remaining tests and skip ahead to the next <i>URL</i> or <i>RUN_MAIN</i> statement.</p>
<p><i>MATCH</i> is obvious, it runs a test on the entire content to see if it matches a regex, or equals a string.<br />
<i>RUN_CHECKS</i> would start the standard (SDF-based) SWEC checks on the returned data.<br />
<i>RUN_MAIN</i> would start the main SWEC mode<br />
<i>[SOMETHING] MATCH</i> would create a named match, so the content within [ ] would be the returned error if it doesn&#8217;t match, instead of something generic like &#8220;failed to match /regex/&#8221;.</p>
<p>Other commands I&#8217;ve thought of that I might or might not want to do include one to clean the cookiejar, so that tests can be performed on how a page acts when cookies are missing, and a way to add custom skip filters based upon for instance the URL.</p>
<p>THese are just random ideas and plans that I&#8217;ve got at the moment, I haven&#8217;t begone coding it yet, but it&#8217;s definetely something I&#8217;m going to do at some point. I&#8217;ll welcome any input if you have any.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/02/09/swec-future-plans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simply checking my web</title>
		<link>http://blog.zerodogg.org/2009/02/02/simply-checking-my-web/</link>
		<comments>http://blog.zerodogg.org/2009/02/02/simply-checking-my-web/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 10:31:57 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[SWEC]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[automated testing]]></category>
		<category><![CDATA[catalyst]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=101</guid>
		<description><![CDATA[I&#8217;ve been doing some web development lately, and the old question of testing has of course come up (and some might say, of course I had to roll my own solution).
I wanted a simple way to sanity check a site, to ensure that my article changes didn&#8217;t suddenly break comments on images (lagacy apps are [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing some web development lately, and the old question of testing has of course come up (and some might say, of course I had to roll my own solution).</p>
<p>I wanted a simple way to sanity check a site, to ensure that my article changes didn&#8217;t suddenly break comments on images (lagacy apps are strange beasts). So I ended up writing <a href="http://random.zerodogg.org/swec">SWEC, the simple web error checker</a>. It&#8217;s a basic app that goes through all links in a site (or &#8220;webapp&#8221;) as long as those are present in the HTML (ie. it doesn&#8217;t run any JS, so its use in JS/AJAX/AJAJ-heavy webapps can be somewhat limited). It parses all pages it downloads, looking for known errors and then reports those. For instance, if you run it on a site based on Catalyst (perl) and catalyst crashes with its standard backtrace, SWEC will return which page it happened on, which page referenced it and a quick line about what happened. Ie. if it&#8217;s an exception it&#8217;ll say &#8220;Exception in Catalyst controller&#8221;.</p>
<p>It uses a very simple file format for writing tests (which is well documented in SWEC&#8217;s manpage). It has several different types of tests, but the most common one looks something like this:<br />
<code>[SWEC_CATALYST_CONTROLLER_EXCEPTION]<br />
type = regexs<br />
check = Caught exception in.*Controller.*Request.*Catalyst<br />
error = Exception in Catalyst controller<br />
sortindex = 11</code><br />
What&#8217;s between the brackets [ ] is the name of the test. All tests that are shiped with SWEC are prefixed with SWEC_.<br />
The type defines which &#8220;type&#8221; of test it is. This one is &#8220;regexs&#8221; which is a &#8217;smart&#8217; regex, a standard perl regex that swec modifies during runtime to easier match HTML. The check is in this case a normal perl regex that is applied to the entire html document. As the type is regexs, swec will modify the regex to this during runtime: <code>Caught(\\s+|&amp;nbsp;|&lt;[^&gt;]+&gt;)+exception(\\s+|&amp;nbsp;|&lt;[^&gt;]+&gt;)+in.*Request.*Catalyst</code></p>
<p>The error is the string that will be returned, and the sortindex is used for prioritizing tests, the lower the better (bundled tests will always be positive, so one only needs to give tests a negative index to ensure they will be run before bundled ones).</p>
<p>By default the bundled tests (<code>default.sdf</code>) and the user-specific rc file <code>~/.swecrc</code> will be loaded. The user-specific one can disable bundled ones easily, and you can disable them on the command line on an individual basis.</p>
<p>SWEC supports sessions, where SWEC remembers previously checked URLs, and previous errors and can then either check pages that used to have errors before the others, or only report &#8216;new&#8217; errors that did not exist before. This will also remember all settings that you set so you don&#8217;t have to type it every time (although it&#8217;ll allow you to do that as well). It has cookie support so it will run just fine as a logged-in user, though you probably don&#8217;t want to run it on a live database, but rather a test one, as it&#8217;ll click on any link it sees (with a few exceptions, it tries to avoid &#8216;logout&#8217; and &#8216;delete&#8217; links, additions to the exceptions list is welcome).</p>
<p>It&#8217;s GPLv3, so feel free to hack your own things into it. I&#8217;ll accept patches for the app itself, as well as new tests to be bundled. As long as they are either specific to a language, web server or framework, I&#8217;ll happily add more bundled checks (or fixes to existing ones), however I will try to avoid app-specific checks as that might just get a bit too much.</p>
<p>Happy hacking</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2009/02/02/simply-checking-my-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sacred: Gold announced for Linux</title>
		<link>http://blog.zerodogg.org/2008/05/14/sacred-gold-announced-for-linux/</link>
		<comments>http://blog.zerodogg.org/2008/05/14/sacred-gold-announced-for-linux/#comments</comments>
		<pubDate>Wed, 14 May 2008 20:22:55 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[games for linux]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[linux game publishing]]></category>
		<category><![CDATA[sacred]]></category>
		<category><![CDATA[sacred gold]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/?p=100</guid>
		<description><![CDATA[The new Linux game turned out to be Sacred: Gold an action-RPG similar to Blizzard&#8217;s Diablo 2. The package includes the original Sacred, a free (official) expansion pack called Sacred Plus and the Sacred: Underworld expansion pack.
I for one can&#8217;t wait for this port to be released.
]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://blog.zerodogg.org/2008/05/03/new-linux-game/">new Linux game</a> turned out to be <a href="http://www.linuxgamepublishing.com/info.php?id=sacred&#038;">Sacred: Gold</a> an action-RPG similar to Blizzard&#8217;s Diablo 2. The package includes the original <a href="http://en.wikipedia.org/wiki/Sacred_(video_game)">Sacred</a>, a free (official) expansion pack called Sacred Plus and the <a href="http://en.wikipedia.org/wiki/Sacred_Underworld">Sacred: Underworld</a> expansion pack.</p>
<p>I for one can&#8217;t wait for this port to be released.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2008/05/14/sacred-gold-announced-for-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Linux Game</title>
		<link>http://blog.zerodogg.org/2008/05/03/new-linux-game/</link>
		<comments>http://blog.zerodogg.org/2008/05/03/new-linux-game/#comments</comments>
		<pubDate>Sat, 03 May 2008 18:00:42 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/2008/05/03/new-linux-game/</guid>
		<description><![CDATA[Linux Game Publishing has announced a competition where one can win the first copy of their new unnannounced game for Linux.
The winner will be the first person to guess which game it is, based upon the slowly revealing image on http://competition.linuxgamepublishing.com/.
The chance to know what new game is coming out for Linux and the chance [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.linuxgamepublishing.com/">Linux Game Publishing</a> has announced a competition where one can win the <i>first</i> copy of their new unnannounced game for Linux.</p>
<p>The winner will be the first person to guess which game it is, based upon the slowly revealing image on <a href="http://competition.linuxgamepublishing.com/">http://competition.linuxgamepublishing.com/</a>.</p>
<p>The chance to know what new game is coming out for Linux <i>and</i> the chance to win the first copy of it produced. Yay :).</p>
<p>If you want Linux games already released, head to <a href="http://www.tuxgames.com/index.cgi?referrer=zero_dogg">TuxGames</a>. (Yes that&#8217;s my referral link ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2008/05/03/new-linux-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Day Planner 0.9, and looking forward</title>
		<link>http://blog.zerodogg.org/2008/05/03/day-planner-09-and-looking-forward/</link>
		<comments>http://blog.zerodogg.org/2008/05/03/day-planner-09-and-looking-forward/#comments</comments>
		<pubDate>Sat, 03 May 2008 14:20:09 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Day Planner]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[gtk2]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/2008/05/03/day-planner-09-and-looking-forward/</guid>
		<description><![CDATA[Day Planner 0.9 has been released. It is available for download as a Mandriva RPM, Ubuntu deb, Debian deb, generic installer and source tarball.
The release focused primarily on fixes and cleanups. A bunch of minor bugs were fixed, and I rewrote most of the iCalendar back-end. It should be faster now and preserves files better [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.day-planner.org">Day Planner</a> 0.9 has been released. It is available for download as a <a href="http://www.day-planner.org/index.php/download/mandriva">Mandriva RPM</a>, <a href="http://www.day-planner.org/index.php/download/ubuntu">Ubuntu deb</a>, <a href="http://www.day-planner.org/index.php/download/debian">Debian deb</a>, <a href="http://www.day-planner.org/index.php/download/gnulinux">generic installer</a> and <a href="http://www.day-planner.org/index.php/download/source">source tarball</a>.</p>
<p>The release focused primarily on fixes and cleanups. A bunch of minor bugs were fixed, and I rewrote most of the iCalendar back-end. It should be faster now and preserves files better than it used to.</p>
<p>This release includes a dummy maemo interface. It can currently fully display a Day Planner calendar, and has a UI quite similar to the desktop edition. However, it can not edit or add any events, and is as such not as useful as it might have been. The plan is for the maemo port to be ready for 0.11.</p>
<p>0.10 will (among other things) feature a new HTML exporting module (which has been in the works for quite a while), a cleaner, object-oriented version of the add/edit event windows (to simplify their use and maintainance. The current code that handles it is a bit ugly).</p>
<p>The major user-facing change will be the addition of a GUI for calendar subscriptions. 0.9 includes support for them (though it isn&#8217;t really announced because the feature isn&#8217;t ready), but one has to manually edit the config file.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2008/05/03/day-planner-09-and-looking-forward/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microdia (0c45:624f) webcam on Linux</title>
		<link>http://blog.zerodogg.org/2008/04/27/microdia-0c45624f-webcam-on-linux/</link>
		<comments>http://blog.zerodogg.org/2008/04/27/microdia-0c45624f-webcam-on-linux/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 12:13:51 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/2008/04/27/microdia-0c45624f-webcam-on-linux/</guid>
		<description><![CDATA[(Re: Proprietary Webcam driver wonders).
I recently discovered a free driver for my GF&#8217;s builtin Microdia webcam. It works very nicely (better than the crappy proprietary one did when I tested the &#8220;trial&#8221;). So if you&#8217;ve got a Microdia webcam, at least the 0c45:624f one, now you can have it working properly, with good quality without [...]]]></description>
			<content:encoded><![CDATA[<p>(Re: <a href="http://blog.zerodogg.org/2007/12/10/proprietary-webcam-driver-wonders/">Proprietary Webcam driver wonders</a>).</p>
<p>I recently discovered a free driver for my GF&#8217;s builtin Microdia webcam. It works very nicely (better than the crappy proprietary one did when I tested the &#8220;trial&#8221;). So if you&#8217;ve got a Microdia webcam, at least the 0c45:624f one, now you can have it working properly, with good quality without paying a load of money for a one-time one-kernel one-arch license for a proprietary one.</p>
<p><code>git clone http://repo.or.cz/r/microdia.git<br />
cd microdia<br />
make<br />
sudo insmod ./microdia.ko</code></p>
<p>Then just launch <a href="http://www.gnome.org/projects/cheese/">Cheese</a> or your favourite webcam program and off you go.</p>
<p>Thanks a lot to those that took the time to develop a proper driver. If you&#8217;ve got a paypal account, I&#8217;ll donate some money for your hard work.</p>
<p><i>Update: the module is now named <code>sn9c20x.ko</code>, so the last line becomes <code>sudo insmod ./sn9c20x.ko</code></i></p>
<p><i>Update 2: According to <a href="http://blog.zerodogg.org/2008/04/27/microdia-0c45624f-webcam-on-linux/comment-page-1/#comment-69635">brandon in the comments</a>, the kernel module is in the upstream kernel as of 2.6.31.6</i></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2008/04/27/microdia-0c45624f-webcam-on-linux/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Automated Day Planner development snapshots</title>
		<link>http://blog.zerodogg.org/2008/04/25/automated-day-planner-development-snapshots/</link>
		<comments>http://blog.zerodogg.org/2008/04/25/automated-day-planner-development-snapshots/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 11:20:12 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Day Planner]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[gtk2]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/2008/04/25/automated-day-planner-development-snapshots/</guid>
		<description><![CDATA[I&#8217;ve added automatic development snapshots of Day Planner to the Day Planner homepage. There are currently three different branches (trunk, next stable, current stable) being built, in two flavours (tarball and installer). The snapshots are updated twice each day and are available at http://www.day-planner.org/index.php/download/snapshot. Feel free to take them for a spin.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve added automatic development snapshots of Day Planner to the <a href="http://www.day-planner.org/">Day Planner</a> homepage. There are currently three different branches (trunk, next stable, current stable) being built, in two flavours (tarball and installer). The snapshots are updated twice each day and are available at <a href="http://www.day-planner.org/index.php/download/snapshot">http://www.day-planner.org/index.php/download/snapshot</a>. Feel free to take them for a spin.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2008/04/25/automated-day-planner-development-snapshots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MP3Tunes and EMI</title>
		<link>http://blog.zerodogg.org/2008/04/23/mp3tunes-and-emi/</link>
		<comments>http://blog.zerodogg.org/2008/04/23/mp3tunes-and-emi/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 06:42:40 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[lawsuit]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[mp3tunes]]></category>
		<category><![CDATA[ogg]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/2008/04/23/mp3tunes-and-emi/</guid>
		<description><![CDATA[An e-mail dumped into my inbox today, from the CEO of the MP3Tunes service, that I use for backing up my music collection. It stated that EMI claimed that this use was illegal and had sued MP3Tunes (this happened a while ago, I know). This isn&#8217;t even a case of so-called &#8220;piracy&#8221; that you claim [...]]]></description>
			<content:encoded><![CDATA[<p>An <a href="http://www.icebase.com/r.pl?rtrTXfGNRSKWoMVQ_3c4077de8c5ac907">e-mail</a> dumped into my inbox today, from the CEO of the <a href="http://www.mp3tunes.com/">MP3Tunes</a> service, that I use for backing up my music collection. It stated that EMI claimed that this use was illegal and had sued MP3Tunes (this happened a while ago, I know). This isn&#8217;t even a case of so-called &#8220;piracy&#8221; that you claim is so evil, it&#8217;s <i>me</i> backing up <i>my</i> music. You&#8217;ve screwed up with all of your RIAA blunders already, one might think that you would realize that suing customers (or in this case, a company providing a useful service <i>to your customers</i>) is generally a bad idea.</p>
<p>Oh well, add me to the growing list of people boycotting you (and don&#8217;t think for a second that this is an empty statement).</p>
<p>Some articles on the subject: <a href="http://michaelrobertson.com/archive.php?minute_id=251">http://michaelrobertson.com/archive.php?minute_id=251</a>, <a href="http://michaelrobertson.com/archive.php?minute_id=259">http://michaelrobertson.com/archive.php?minute_id=259</a>, <a href="http://consumerist.com/382824/emi-says-you-cant-store-your-music-files-online">http://consumerist.com/382824/emi-says-you-cant-store-your-music-files-online</a> and <a href="http://www.exchangemagazine.com/morningpost/2008/week13/Tuesday/032501.html">http://www.exchangemagazine.com/morningpost/2008/week13/Tuesday/032501.html</a>. (note that I do <i>not</i> agree with, nor endorse all of the statements on these websites, they are provided as a source of information on the subject only).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2008/04/23/mp3tunes-and-emi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Day Planner&#8217;s second anniversary (and a development snapshot)</title>
		<link>http://blog.zerodogg.org/2008/04/19/day-planners-second-anniversary-and-a-development-snapshot/</link>
		<comments>http://blog.zerodogg.org/2008/04/19/day-planners-second-anniversary-and-a-development-snapshot/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 16:33:07 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[Day Planner]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Maemo]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/2008/04/19/day-planners-second-anniversary-and-a-development-snapshot/</guid>
		<description><![CDATA[Today is the second anniversary of the Day Planner project. So hurray for Day Planner, and here&#8217;s to all the great releases to come.
In other related news, I&#8217;ve just released a development snapshot of Day Planner 0.9.
It is available at http://www.day-planner.org/index.php/download/devsnapshot. It contains all of the developed features for 0.9 (including the unfinished maemo port), [...]]]></description>
			<content:encoded><![CDATA[<p>Today is the second anniversary of the <a href="http://www.day-planner.org/">Day Planner</a> project. So hurray for Day Planner, and here&#8217;s to all the great releases to come.</p>
<p>In other related news, I&#8217;ve just released a development snapshot of Day Planner 0.9.<br />
It is available at <a href="http://www.day-planner.org/index.php/download/devsnapshot">http://www.day-planner.org/index.php/download/devsnapshot</a>. It contains all of the developed features for 0.9 (including the unfinished maemo port), but is not yet stable enough to be labelled stable, so If you&#8217;ve got time and feel like it, give it a spin and report any bugs you find. The whole iCalendar back-end has been almost completely re-written for this version, which is why I want some additional testing before I release a stable version.</p>
<p><i>Please do not package this release or submit it to news sites, it&#8217;s just a svn snapshot.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2008/04/19/day-planners-second-anniversary-and-a-development-snapshot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>History meme</title>
		<link>http://blog.zerodogg.org/2008/04/15/history-meme/</link>
		<comments>http://blog.zerodogg.org/2008/04/15/history-meme/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 19:31:30 +0000</pubDate>
		<dc:creator>Zero_Dogg</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://blog.zerodogg.org/2008/04/15/history-meme/</guid>
		<description><![CDATA[Everyone else is doing it!
[0 zerodogg@firefly ~]$ history &#124; awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' &#124; sort -rn &#124; head
279 cd
185 vim
117 ssh
75 screen
74 svn
66 wget
64 ls
60 perldoc
59 rm
58 cget
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.linux-wizard.net/index.php?id_blog=200">Everyone</a> <a href="http://www.0xdeadbeef.com/weblog/?p=356">else</a> <a href="http://www.j5live.com/2008/04/15/history-meme/">is</a> <a href="http://blogs.gnome.org/lucasr/2008/04/15/history-meme/">doing</a> <a href="http://ventnorsblog.blogspot.com/2008/04/such-strange-meme.html">it</a>!</p>
<p><code>[0 zerodogg@firefly ~]$ history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head<br />
279 cd<br />
185 vim<br />
117 ssh<br />
75 screen<br />
74 svn<br />
66 wget<br />
64 ls<br />
60 perldoc<br />
59 rm<br />
58 cget</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zerodogg.org/2008/04/15/history-meme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
