<?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>PreshBlog</title>
	<atom:link href="http://www.preshweb.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.preshweb.co.uk</link>
	<description>David Precious - professional Perl developer, motorcyclist and beer drinker</description>
	<lastBuildDate>Tue, 24 Jan 2012 10:03:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3-aortic-dissection</generator>
		<item>
		<title>Dancer talk at YAPC::NA 2012</title>
		<link>http://www.preshweb.co.uk/2012/01/dancer-talk-at-yapcna-2012/</link>
		<comments>http://www.preshweb.co.uk/2012/01/dancer-talk-at-yapcna-2012/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 10:03:50 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Dancer web framework]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1088</guid>
		<description><![CDATA[<p><a href="http://blog.yapcna.org/">Mark Allen</a> will give a talk at <a href="http://www.yapcna.org/"><a href="http://search.cpan.org/perldoc?YAPC::NA" title="CPAN YAPC::NA" 
target="_blank">YAPC::NA</a> 2012</a> on the <a href="http://www.perldancer.org/">Dancer Perl web framework</a> he describes as:</p>
<blockquote><p>
This talk presents the Dancer web framework beginning with “Hello World” and progressing through a couple of easy to digest introductory applications.  All of the primary Dancer features are presented including URL routing, writing handlers, and output templating.  A selection of useful and common Dancer plugins will also be covered.  This talk is best suited for beginning and intermediate Perl programmers.
</p></blockquote>
<p>(<a href="http://blogs.perl.org/users/jt_smith/2012/01/intro-to-dancer.html">via JT Smith</a>, in turn via the <a href="http://blog.yapcna.org/"><a href="http://search.cpan.org/perldoc?YAPC::NA" title="CPAN YAPC::NA" 
target="_blank">YAPC::NA</a> blog</a>.)</p>
<p>I hope it&#8217;s recorded, as I&#8217;d like to see it, but won&#8217;t be able to afford to attend <a href="http://search.cpan.org/perldoc?YAPC::NA" title="CPAN YAPC::NA" 
target="_blank">YAPC::NA</a>.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2012/01/dancer-talk-at-yapcna-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VLC getting proxy settings via gconf</title>
		<link>http://www.preshweb.co.uk/2012/01/vlc-getting-proxy-settings-via-gconf/</link>
		<comments>http://www.preshweb.co.uk/2012/01/vlc-getting-proxy-settings-via-gconf/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 18:09:25 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1082</guid>
		<description><![CDATA[<p>I had a problem with VLC, using outdated proxy settings rather than connecting directly, even with no proxy configured in VLC&#8217;s settings (and even when trying to override it using command-line options).</p>
<p>(It would show that it was trying to use a proxy:</p>
<pre>
[0x134b4b0] main access error: connection failed: Connection refused
[0x134b4b0] access_http access error: cannot connect to supernova:3140
</pre>
<p>(supernova:3140 was the proxy setting it was picking up.)</p>
<p>After using strace to follow the execution of VLC when trying to play a network stream, I realised it was getting the settings via gconf; I needed to execute <tt>gconf-editor</tt>, navigate to <tt>system</tt>, <tt>http_proxy</tt>, then untick <tt>use_http_proxy</tt> &#8211; and also edit the value of the <tt>host</tt> setting to an empty string (without doing this, VLC ignored the <tt>use_http_proxy</tt> setting being false, and tried to use the proxy anyway!).</p>
<p>I could have done the same using gconftool-2 with:</p>
<pre>
gconftool-2 -s /system/http_proxy/use_http_proxy --type bool false
gconftool-2 -s /system/http_proxy/host --type string ''
</pre>
<p>Blogging for my own future reference, and for anyone else who&#8217;s using vlc on XFCE and wondering where it was getting the proxy settings.  I&#8217;ve used Gnome 2 on this machine before, and I think that system proxy setting was set by Chromium (Google Chrome).</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2012/01/vlc-getting-proxy-settings-via-gconf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Perl Advent Calendars for 2011</title>
		<link>http://www.preshweb.co.uk/2011/12/perl-advent-calendars-for-2011/</link>
		<comments>http://www.preshweb.co.uk/2011/12/perl-advent-calendars-for-2011/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 10:22:12 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Dancer web framework]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1070</guid>
		<description><![CDATA[<p>Well, December is upon us &#8211; time for advent calendars, and as usual, the Perl community doesn&#8217;t disappoint &#8211; here&#8217;s a list of the Perl-related advent calendars I&#8217;m aware of:</p>
<ul>
<li><a href="http://advent.perldancer.org/">Dancer Advent Calendar</a> &#8211; the Dancer web framework&#8217;s calendar (<a href="http://advent.perldancer.org/feed/2011">feed</a>)</li>
<li><a href="http://perladvent.org/2011/">Perl Advent Calendar (perladvent.org)</a> (<a href="http://perladvent.org/2011/atom.xml">feed</a>)</li>
<li><a href="http://www.catalystframework.org/calendar">Catalyst Advent Calendar</a> &#8211; the Catalyst web framework&#8217;s calendar (<a href="http://www.catalystframework.org/calendar/feed/2011">feed</a>)</li>
<li><a href="http://perl6advent.wordpress.com/">Perl6 Advent Calendar</a> (<a href="http://perl6advent.wordpress.com/feed/">feed</a>)</li>
<li><a href="http://sysadvent.blogspot.com/">SysAdvent</a> &#8211; an advent calendar for sysadmins, but often Perl-related</li>
</ul>
<p>There are also several Japanese-language advent calendars:</p>
<ul>
<li><a href="http://perl-users.jp/articles/advent-calendar/2011/">http://perl-users.jp/articles/advent-calendar/2011/</a>:
<ul>
<li><a href="http://perl-users.jp/articles/advent-calendar/2011/anysan/">AnySan Track</a></li>
<li><a href="http://perl-users.jp/articles/advent-calendar/2011/casual/">Casual Track</a></li>
<li><a href="http://perl-users.jp/articles/advent-calendar/2011/dbix/">dbix Track</a></li>
<li><a href="http://perl-users.jp/articles/advent-calendar/2011/english/">English Track</a></li>
<li><a href="http://perl-users.jp/articles/advent-calendar/2011/hacker/">Hacker Track</a></li>
<li><a href="http://perl-users.jp/articles/advent-calendar/2011/test/">Test Track</a></li>
<li><a href="http://perl-users.jp/articles/advent-calendar/2011/acme/">Acme Track</a></li>
<li><a href="http://perl-users.jp/articles/advent-calendar/2011/teng/">Teng Track</a></li>
<li><a href="http://perl-users.jp/articles/advent-calendar/2011/amon2/">Amon2 Track</a></li>
</ul>
</li>
</ul>
<p>If you know of any others, please feel free to let me know and I&#8217;ll add them to the list :)</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/12/perl-advent-calendars-for-2011/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How on Earth do I contact Adsense support?</title>
		<link>http://www.preshweb.co.uk/2011/11/how-on-earth-do-i-contact-adsense-support/</link>
		<comments>http://www.preshweb.co.uk/2011/11/how-on-earth-do-i-contact-adsense-support/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 12:45:20 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Wibbles]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1062</guid>
		<description><![CDATA[<p>Some time ago, I had a Google Adsense account, which was separate to my main Google account (as they weren&#8217;t linked back then).</p>
<p>It didn&#8217;t seem possible to move the Adsense account to become part of my main Google account, so at some point I signed up for Adsense again with my main Google account, intending to then close the other one; that signup was rejected, because I already had an account.</p>
<p>I&#8217;m now left in the position where I have an account I can&#8217;t access, because the email address used for it is associated with my main Google account, so when I try to log in, I get logged in to my main Google account instead, where I am simply told of the rejected application.</p>
<p>Can I contact Google to get this sorted?  Hah!  Their ugly help pages mention I can contact them, but not how:</p>
<p><a href="http://www.preshweb.co.uk/wp-content/uploads/2011/11/contact-adsense.png" rel='lightbox'><img src="http://www.preshweb.co.uk/wp-content/uploads/2011/11/contact-adsense-300x35.png" alt="" title="contact-adsense" width="300" height="35" class="alignnone size-medium wp-image-1063" /></a></p>
<p>(From their <a href="http://www.google.com/support/adsense/bin/request.py?contact_type=contact_policy">How can I contact AdSense support?</a> &#8220;support&#8221; page).</p>
<p>Seems the only way is to post on their public AdSense forum, cross your fingers and hope for the best. I tried that months ago, with no luck.</p>
<p>Oh well.</p>
<p>&lt;/rant&gt;</p>
<p>EDIT: I did eventually find a link in a random forum post to a form to submit to indicate that I had no access to the old account and wanted it dropped in favour of the new account: https://www.google.com/adsense/support/bin/request.py?contact=noaccountaccess &#8211; I submitted the form, and fairly soon after, I received an email indicating that it had been done.  So, it was eventually sorted, but the whole process was harder than it needed to be, and customer-unfriendly.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/11/how-on-earth-do-i-contact-adsense-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LPW2011 : my thoughts overall</title>
		<link>http://www.preshweb.co.uk/2011/11/lpw2011-my-thoughts-overall/</link>
		<comments>http://www.preshweb.co.uk/2011/11/lpw2011-my-thoughts-overall/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 13:12:21 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1059</guid>
		<description><![CDATA[<p>Yesterday, I attended the 2011 London Perl Workshop &#8211; my first ever Perl conference.</p>
<p>I had a good day, met a few members of the Perl community I knew from online interactions who I&#8217;d never met in person before, saw some good talks, and partook in some free food and beer (kindly paid for by the sponsors, including my employer, UK2).</p>
<p>Some brief mentions of talks I attended:</p>
<h2>Matt S Trout (mst) &#8211; First, Tak wrote the world‎</h2>
<blockquote><p>
I have <a href="http://search.cpan.org/perldoc?IO::Pipeline" title="CPAN IO::Pipeline" 
target="_blank">IO::Pipeline</a>. I have <a href="http://search.cpan.org/perldoc?App::FatPacker" title="CPAN App::FatPacker" 
target="_blank">App::FatPacker</a>. I have <a href="http://search.cpan.org/perldoc?IPC::Command::Multiplex" title="CPAN IPC::Command::Multiplex" 
target="_blank">IPC::Command::Multiplex</a>. And yet I still couldn&#8217;t whip up a five line example of bolting them all together that made a compelling argument for a perl-loving sysadmin to stop using fabric.</p>
<p>This problem, among others, will be solved by the conclusion of this talk.
</p></blockquote>
<p>Tak sounds like something which will be very useful to me &#8211; running code on multiple other hosts via SSH, but including Perl code &#8211; with all locally-installed modules available for use at the remote end!</p>
<p>As mst went through explaining how it all worked, my thoughts went from &#8220;hmm, useful&#8221;, to &#8220;hmm, useful but looks over-engineered, not sure it needs to be that complex&#8221; to &#8220;whoah, that&#8217;s genius&#8221;.   Fatpacking and sending code to the remote side, which then adds a coderef to @INC which requests other modules from the local end, sent over and loaded remotely, is awesomely creative.</p>
<p>These kind of tricks remind me of why I love Perl. </p>
<h2>Mike Whitaker (‎Penfold‎) &#8211; ‎Perl and Unicode, the 5.14 edition‎</h2>
<p>A very good talk on handling Unicode safely in Perl, and the gotchas to avoid.  Provided major impetus for me to upgrade to 5.14, too.</p>
<h2>Zefram &#8211; ‎why time is difficult‎</h2>
<blockquote><p>
Dates, times, time intervals, clocks, calendars, and related phenomena are major contributors to hassle in programming, and the source of innumerable bugs.
</p></blockquote>
<p>Zefram&#8217;s talk, whilst barely Perl related, was very interesting, and very well delivered.  I hadn&#8217;t realised quite how complex time was :)</p>
<p>Zefram&#8217;s amusing lightning talk on doing away with source code by simply storing bytecode and editing it by deparsing the source, editing it, then &#8220;compiling&#8221; back to bytecode was also entertaining.</p>
<h2>Claes Jakobsson (‎claes‎) &#8211; ‎Don&#8217;t debug now, debug later</h2>
<blockquote><p>
<a href="http://search.cpan.org/perldoc?Runops::Recorder" title="CPAN Runops::Recorder" 
target="_blank">Runops::Recorder</a> is a alternate runloop for perl that writes down what your program does to disk for playback later</p>
<p>It also comes with a viewer and some helper classes for you to write your own playback tools such as diffs etc.
</p></blockquote>
<p>This looks like a very useful debugging tool, recording the path of execution through your code and writing it to a file which can then later be &#8220;replayed&#8221; using a viewer &#8211; much like single-stepping or tracing through the debugger, but after the fact.  The ability to leave it running and have it dump out a configurable amount of trace data when a die is encountered looks excellently useful for catching intermittent / rare problems &#8211; you should be able to leave it in place, wait until the problem occurs, then replay what happened leading up to the <tt>die</tt> to see what was going on.</p>
<p>Future versions should also be able to track changes to variables, etc, which will be very useful indeed.</p>
<p>There were a couple of workshops I&#8217;d like to have attended, but which I didn&#8217;t; partly because they conflicted with talks I wanted to see, and partly because I didn&#8217;t have a laptop with me to &#8220;work along&#8221; and didn&#8217;t think I could take much of value away from them.</p>
<h2>Andrew Solomon &#8211; ‎[[TRAINING SESSION]] Web development for beginners using Dancer‎</h2>
<p>As a core developer for the <a href="http://www.perldancer.org/">Dancer perl web framework</a> I&#8217;d love to have attended Andrew Solomon&#8217;s workshop, to see what was being taught, and offer any input desired.  Unfortunately, I wasn&#8217;t there, but I&#8217;ll be looking with interest for any feedback from people who were, and what they learned and what they thought of Dancer if they hadn&#8217;t encountered it before.  Making Perl accessible for new users is an important thing.</p>
<h2>Gabor Szabo (‎szabgab‎) &#8211; ‎[[TRAINING SESSION]] Testing in Perl</h2>
<p>I&#8217;d also like to have taken part in Gabor&#8217;s workshops, but they were in two parts and conflicted with several other talks I wanted to see.</p>
<p>I met a few members of the Perl community who I knew from online interactions but had never met in meatspace, so it was great to meet them.  Unfortunately, there were a few others I&#8217;d meant to go introduce myself to, but never got a chance to do so &#8211; including Tatsuhiko Miyagawa and Gabor Szgabo.</p>
<p>Overall, it was a good day, and I imagine there&#8217;s a very good chance I&#8217;ll be back next year :)</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/11/lpw2011-my-thoughts-overall/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>LPW2011 : abigail&#8217;s &#8220;Business Aware Developer&#8221; talk</title>
		<link>http://www.preshweb.co.uk/2011/11/lpw2011-abigails-business-aware-developer-talk/</link>
		<comments>http://www.preshweb.co.uk/2011/11/lpw2011-abigails-business-aware-developer-talk/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 12:42:08 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[LPW2011]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1057</guid>
		<description><![CDATA[<p>I caught abigail&#8217;s &#8220;Business Aware Developer&#8221; talk yesterday at the London Perl Workshop 2011.</p>
<p>Overall, I think it was a good talk, and raised some good points, even if the &#8220;you don&#8217;t always have to write tests, write them only if they provide value&#8221; is a little controversial with some of the audience, leading to a reasonable amount of debate and running late with the talk so having to skip some slides.</p>
<p>Personally, I agree to some degree &#8211; I think some people write tests simply to push up their test coverage figure, without really writing tests which are likely to catch bugs (exercising the code in both expected and unexpected ways, providing strange input and edge cases (does it blow up if given undef or a ref, say).</p>
<p>However, I do think a fair amount of the talk is summed up by advice given to me by a boss at work, Ditlev, with regards to getting stuff out &#8211; sometimes you have to &#8220;launch crap but launch&#8221; &#8211; sometimes code that works well enough to be put into use and making money for you can be more valuable than taking longer to produce better quality code &#8211; which may be nicer and better to work with in the future, but isn&#8217;t ready to launch now.  In other words, examining the trade-off between quick results now, and better quality code which becomes more valuable later &#8211; but &#8220;what if later never comes?&#8221;.</p>
<p>The impression I took away from the talk, which might be a misconception, is that Booking.com don&#8217;t do code reviews or refactoring, which would seriously put me off applying for a position there &#8211; I think code review in particular (even if just casual &#8211; it needn&#8217;t be a formal procedure) is very valuable to push yourself to be a better coder.   If you know other members of the team are going to be glancing over your commits when they have time and pointing at bits you could have done better, that&#8217;s a good motivation to write good code, and also often helps you realise other ways you could have done things.</p>
<p>I&#8217;d be interested in seeing the other slides which abigail had to skip over, but I haven&#8217;t been able to find them anywhere online.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/11/lpw2011-abigails-business-aware-developer-talk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Graphing time-based data in Perl</title>
		<link>http://www.preshweb.co.uk/2011/11/graphing-time-based-data-in-perl/</link>
		<comments>http://www.preshweb.co.uk/2011/11/graphing-time-based-data-in-perl/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 12:38:45 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1046</guid>
		<description><![CDATA[<p>I recently wanted to produce some graphs from a web app powered by the <a href="http://www.perldancer.org/">Dancer Perl web framework</a>, and reevaluated the various Perl graphing moduiles out there.</p>
<p>Modules I considered were:</p>
<ul>
<li><a href="http://search.cpan.org/perldoc?Chart::Strip" title="CPAN Chart::Strip" 
target="_blank">Chart::Strip</a></li>
<li><a href="http://search.cpan.org/perldoc?Chart::Graph" title="CPAN Chart::Graph" 
target="_blank">Chart::Graph</a></li>
<li><a href="http://search.cpan.org/perldoc?Google::Chart" title="CPAN Google::Chart" 
target="_blank">Google::Chart</a></li>
<li><a href="http://search.cpan.org/perldoc?Chart::Clicker" title="CPAN Chart::Clicker" 
target="_blank">Chart::Clicker</a></li>
<li><a href="http://search.cpan.org/perldoc?Chart::Gnuplot" title="CPAN Chart::Gnuplot" 
target="_blank">Chart::Gnuplot</a></li>
<p>Unfortunately, I didn&#8217;t have time to do a full in-depth writeup trying every module like the excellent ones <a href="http://blogs.perl.org/users/neilb/">Neil Bowers</a> has been doing, but I thought I&#8217;d write up a quick post on the choice I made, with example code, in case it helps other people looking to graph potentially irregularly-spaced time-based data samples in Perl easily.</p>
<p><a href="http://search.cpan.org/perldoc?Chart::Clicker" title="CPAN Chart::Clicker" 
target="_blank">Chart::Clicker</a> looked to be a nice choice (with a nice example of doing just what I want given as the topic answer to <a href="http://stackoverflow.com/questions/1600551/how-can-i-plot-a-time-series-graph-with-perl">a question on StackOverflow</a>), but had a huge chain of dependencies, finally failing when demanding Cairo and various X11 libraries (on my headless server).</p>
<p><a href="http://search.cpan.org/perldoc?Chart::Strip" title="CPAN Chart::Strip" 
target="_blank">Chart::Strip</a> seemed to do exactly what I wanted in a simple way, but I encountered a div-by-zero bug when dealing with a certain dataset with > 89 data points.</p>
<p>I reported this to the author, Jeff Weisgberg in <a href="https://rt.cpan.org/Ticket/Display.html?id=72288">RT #72288</a>, and he promptly released 1.08 with a fix (thanks Jeff!).</p>
<p><a href="http://search.cpan.org/perldoc?Chart::Strip" title="CPAN Chart::Strip" 
target="_blank">Chart::Strip</a> made it simple to do what I wanted:</p>

<div class="wp_syntax"><div class="code"><pre class="perl perl" style="font-family:monospace;"><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@dataset</span>;
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$row</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$sth</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">fetchrow_hashref</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">push</span> <span style="color: #0000ff;">@dataset</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066;">time</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$row</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>timestamp<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> value <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$row</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>value<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span>;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$chart</span> <span style="color: #339933;">=</span> Chart<span style="color: #339933;">::</span><span style="color: #006600;">Strip</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span> title <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;My chart&quot;</span> <span style="color: #009900;">&#41;</span>;
<span style="color: #0000ff;">$chart</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">add_data</span><span style="color: #009900;">&#40;</span>\<span style="color: #0000ff;">@dataset</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> style <span style="color: #339933;">=&gt;</span> <span style="">'line'</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>;
&nbsp;
<span style="color: #666666; font-style: italic;"># then get the chart as an image with $chart-&gt;png</span></pre></div></div>

<p>Nice and easy, just what I wanted &#8211; a way to say &#8220;here&#8217;s some timestamps and values (quite possibly irregularly spaced) &#8211; work out how to plot this sensibly for me&#8221;.</p>
<p>The resulting graphs look good enough to me, e.g.:</p>
<p><a href="http://www.preshweb.co.uk/wp-content/uploads/2011/11/downstream-snr-hour2.png" rel='lightbox'><img src="http://www.preshweb.co.uk/wp-content/uploads/2011/11/downstream-snr-hour2.png" alt="" title="downstream-snr-hour" width="500" height="100" class="alignnone size-full wp-image-1051" /></a></p>
<p><a href="http://www.preshweb.co.uk/wp-content/uploads/2011/11/downstream-snr-24hours2.png" rel='lightbox'><img src="http://www.preshweb.co.uk/wp-content/uploads/2011/11/downstream-snr-24hours2.png" alt="" title="downstream-snr-24hours" width="500" height="100" class="alignnone size-full wp-image-1054" /></a></p>
<p>(Rendered intentionally a little smaller to fit the blog; naturally the graphs can be whatever size you want.  Also, I had to use the <tt>transparent</tt> option to disable transparent backgrounds.)</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/11/graphing-time-based-data-in-perl/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Why I love Perl : It makes things easy and fun</title>
		<link>http://www.preshweb.co.uk/2011/11/why-i-love-perl-it-makes-things-easy-and-fun/</link>
		<comments>http://www.preshweb.co.uk/2011/11/why-i-love-perl-it-makes-things-easy-and-fun/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 10:54:05 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1040</guid>
		<description><![CDATA[<p>A short example of why I love Perl.  The other day, I was picking my parents up from the airport; I do this reasonably regularly, as they go to visit family out in Ireland.  Anyway, I&#8217;ve often wanted something to monitor the status of the incoming flight on Luton Airport&#8217;s website and tell me when it changes (if it&#8217;s delayed and a new estimated time is announced, or when it&#8217;s landed, etc).  I looked around for decent services which do this, but found nothing which really appealed.</p>
<p>So, the other day, I decided &#8220;write it yourself, it&#8217;ll only take a few minutes&#8221;.  Sure enough, with the aid of <a href="http://search.cpan.org/perldoc?LWP::Simple" title="CPAN LWP::Simple" 
target="_blank">LWP::Simple</a>, <a href="http://search.cpan.org/perldoc?HTML::TableExtract" title="CPAN HTML::TableExtract" 
target="_blank">HTML::TableExtract</a>, <a href="http://search.cpan.org/perldoc?SMS::AQL" title="CPAN SMS::AQL" 
target="_blank">SMS::AQL</a> and a little glue code, it was done:</p>

<div class="wp_syntax"><div class="code"><pre class="perl perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict;
<span style="color: #000000; font-weight: bold;">use</span> LWP<span style="color: #339933;">::</span><span style="color: #006600;">Simple</span>;
<span style="color: #000000; font-weight: bold;">use</span> HTML<span style="color: #339933;">::</span><span style="color: #006600;">TableExtract</span>;
<span style="color: #000000; font-weight: bold;">use</span> SMS<span style="color: #339933;">::</span><span style="color: #006600;">AQL</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$flight</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Usage: $0 flightnum&quot;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$url</span> <span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;http://www.london-luton.co.uk/FlightData.ashx&quot;</span>
    . <span style="color: #ff0000;">&quot;?dir=arr&amp;lang=en&amp;id=1&amp;r=20016807&quot;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dest</span> <span style="color: #339933;">=</span> <span style="">'+44******'</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$sms</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> SMS<span style="color: #339933;">::</span><span style="color: #006600;">AQL</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    username <span style="color: #339933;">=&gt;</span> <span style="">'******'</span><span style="color: #339933;">,</span>
    password <span style="color: #339933;">=&gt;</span> <span style="">'******'</span><span style="color: #339933;">,</span>
    options <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span> sender <span style="color: #339933;">=&gt;</span> <span style="">'+44*****'</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$last_status</span>;
check<span style="color: #339933;">:</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">sleep</span> <span style="color: #cc66cc;">30</span> <span style="color: #b1b100;">if</span> <span style="color: #0000ff;">$last_status</span>;
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$html</span> <span style="color: #339933;">=</span> LWP<span style="color: #339933;">::</span><span style="color: #006600;">Simple</span><span style="color: #339933;">::</span><span style="color: #006600;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$url</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">warn</span> <span style="color: #ff0000;">&quot;Failed to fetch HTML&quot;</span> <span style="color: #b1b100;">and</span> <span style="color: #b1b100;">next</span>;
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$te</span> <span style="color: #339933;">=</span> HTML<span style="color: #339933;">::</span><span style="color: #006600;">TableExtract</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span>
        headers <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#91;</span> <span style="">'Flight No'</span><span style="color: #339933;">,</span> <span style="">'Airport'</span><span style="color: #339933;">,</span> <span style="">'Scheduled'</span><span style="color: #339933;">,</span> <span style="">'Flight Status'</span> <span style="color: #009900;">&#93;</span>
    <span style="color: #009900;">&#41;</span>;
    <span style="color: #0000ff;">$te</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$html</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">warn</span> <span style="color: #ff0000;">&quot;Failed to parse HTML&quot;</span> <span style="color: #b1b100;">and</span> <span style="color: #b1b100;">next</span>;
&nbsp;
    <span style="color: #b1b100;">for</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$row</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$te</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">rows</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$row</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span> eq <span style="color: #0000ff;">$flight</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$row</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">ne</span> <span style="color: #0000ff;">$last_status</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #0000ff;">$sms</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">send_sms</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$dest</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Flight $flight now $row-&gt;[3]&quot;</span><span style="color: #009900;">&#41;</span>;
            <span style="color: #009900;">&#125;</span>
            <span style="color: #0000ff;">$last_status</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$row</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span>;
&nbsp;
            <span style="color: #b1b100;">next</span> check;
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>How easy was that?</p>
<p>(The code isn&#8217;t quite up to the quality I&#8217;d aim for if I was releasing it as an actual project &#8211; I&#8217;d tidy it up a bit, add more error checking/handling and have it read details from a conf file if I were to do that, but it&#8217;s a good example of what you can quickly rock up with the power of Perl and CPAN.  I&#8217;d probably also swap it to <a href="http://search.cpan.org/perldoc?SMS::Send" title="CPAN SMS::Send" 
target="_blank">SMS::Send</a>, so it could be more easily used with various SMS gateways (I use www.aql.com &#8211; there&#8217;s an <a href="http://search.cpan.org/perldoc?SMS::Send::AQL" title="CPAN SMS::Send::AQL" 
target="_blank">SMS::Send::AQL</a> driver I wrote for that, which uses <a href="http://search.cpan.org/perldoc?SMS::AQL" title="CPAN SMS::AQL" 
target="_blank">SMS::AQL</a> under the hood anyway).)</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/11/why-i-love-perl-it-makes-things-easy-and-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Battlefield 3 &#8211; party join problems and unlockable flares</title>
		<link>http://www.preshweb.co.uk/2011/10/battlefield-3-party-join-problems-and-unlockable-flares/</link>
		<comments>http://www.preshweb.co.uk/2011/10/battlefield-3-party-join-problems-and-unlockable-flares/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 18:01:55 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Battlefield 3]]></category>
		<category><![CDATA[Gaming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1032</guid>
		<description><![CDATA[<p>So far, I&#8217;m loving Battlefield 3 &#8211; it&#8217;s great fun, and, I feel, an improvement on Battlefield Bad Company 2.</p>
<p>It&#8217;s not without its problems; though &#8211; here are my thoughts on what I&#8217;d like to see fixed:</p>
<h2>Flares should be available by default</h2>
<p>Flying is very difficult indeed, due to the fact that flares are an unlockable item, requiring you to score sufficient points in that type of aircraft to get them.  So, you&#8217;ll take off in a jet armed only with its cannon, and no flares to shake off heat-seeking missiles; as soon as you&#8217;re airborne, people will be firing missiles at you, and, with no flares to throw them off, you&#8217;ll struggle to shake them, and will likely be shot down quickly, or spend your time in a series of desperate manoeuvres trying to shake off the missiles; you&#8217;ll not stay alive long enough to chalk up enough kills with the puny machine gun/cannon to score enough points to earn the flares</p>
<p>This means that players who have already unlocked the flares and missiles have a massive advantage over those players who haven&#8217;t yet, making it very hard for those who haven&#8217;t yet unlocked them to take part in jet/helicopter flying.</p>
<p>I&#8217;d like to see flares changed to standard equipment rather than an unlockable, so that you can at least have a chance of defending yourself while you try to get enough kills to unlock heat-seeking missiles yourself (something which, I believe, you&#8217;ll need to repeat for each individual type of plane in the game&#8230;).</p>
<h2>Splitting parties on joining a game</h2>
<p>Match-making can be a little shabby at times, too &#8211; invite friends to your squad, join a game, and you&#8217;ll quite often find you&#8217;ve been split up across different squads, and, often, even on opposing teams (even if there were only two of you) &#8211; a big failing for a game where teamwork and co-operation is important, in my opinion.</p>
<p>I think the match-making code needs to be able to look for servers with sufficient space to take all members of the party in a single squad on the same team without the game becoming unbalanced, and ignore that server if it&#8217;s not suitable.</p>
<p>(Note that I play on PS3; I do not know if the above points are valid for XBox / PC players)</p>
<p>EDIT: going by the number of people reaching this post with search queries like &#8220;battlefield 3 party join not working&#8221;, &#8220;battlefield 3 party problems&#8221;, &#8220;can&#8217;t join party battlefield 3&#8243;, it seems I&#8217;m not the only one annoyed by this.</p>
<p>EDIT 2: Looks like this is being worked on &#8211; <a href="http://blogs.battlefield.ea.com/battlefield_bad_company/archive/2011/11/03/7-ways-Battlefield-3-is-improving.aspx">EA blogged</a>:</p>
<blockquote><p>
2) JOINING SQUADS AND STAYING THERE<br />
Status: Fix pending in the very near future</p>
<p>Some people have experienced difficulties joining and staying in squads on console. We have identified the cause of this problem and will hopefully have a fix ready to roll out very soon. [...] We will return tomorrow with an update on when this fix is live.
</p></blockquote>
<p>They also suggest following their <a href="http://blogs.battlefield.ea.com/battlefield_bad_company/archive/2011/11/02/quick-guide-on-how-to-use-the-battlefield-3-server-browser-on-console.aspx">guide to using the BF3 server browser</a>.  It&#8217;s not entirely clear, but it sounds like the filter settings chosen in the server browser apply also to the &#8220;Quick Match&#8221; feature, too.</p>
<h2>M98B seems excessively powerful</h2>
<p>The M98B seems to be excessively powerful compared to other sniper rifles in the game (although it may just be that I&#8217;ve just been unlucky and just seen it in the hands of very skilled players who managed a headshot every time &#8211; although I&#8217;ve been taken out with it in Canals was set up as an industrial harbor, featuring a mix of infantry, land vehicle, and boat gameplay. The attackers in Rush start out on an carrier ship and can reach the beachhead by amphibious vehicles, boats, and helicopters. All of the bases on the map hava single hit even whilst running a few times&#8230;)</p>
<h2>You can&#8217;t quit after a round</h2>
<p>When a match is complete, you see your stats, but there&#8217;s no option to quit &#8211; you have to wait for the timeout, then for the next map to load, and finally, when you reach the spawn selection screen, you can then quit.  The most logical time to decide to quit is at the end of a round, so why not provide a quit option there?  That would save a lot of wasted time, save the effort of loading the next map for no reason, and perhaps even give the server a better chance of making sure the teams are balanced, etc (it can have a clue who is planning to stay in the game, rather than doing balancing etc, only to see people drop out afterwards).  Pure logic and usability would suggest allowing you to select to quit as soon as the stats from the completed round are displayed, I feel.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/10/battlefield-3-party-join-problems-and-unlockable-flares/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SMS spam from 07873517718</title>
		<link>http://www.preshweb.co.uk/2011/10/sms-spam-from-07873517718/</link>
		<comments>http://www.preshweb.co.uk/2011/10/sms-spam-from-07873517718/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 20:28:23 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1027</guid>
		<description><![CDATA[<p>Just got a random spammy text message from +447873517718 reading:</p>
<blockquote><p>
Records passed to us show you are entitled to £3750 for your accident for details reply CLAIM
</p></blockquote>
<p>Googling for the number shows nothing of use, so thought I&#8217;d whack a quick post up for the benefit of anyone else Googling.  Now, I wonder if I can report it, and whether it&#8217;ll make any difference?</p>
<p>Apparently, you can forward spam text messages to 7726, for Orange, O2, T-Mobile and Three customers, or 87726 for Vodafone (who I&#8217;m with), according to a few sites, but I can&#8217;t see that being too useful; for one, forwarded text messages, by default, do not include the originating number.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/10/sms-spam-from-07873517718/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Why IRC is a valuable tool to your development team</title>
		<link>http://www.preshweb.co.uk/2011/10/why-irc-is-a-valuable-tool-to-your-development-team/</link>
		<comments>http://www.preshweb.co.uk/2011/10/why-irc-is-a-valuable-tool-to-your-development-team/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 08:55:15 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1021</guid>
		<description><![CDATA[<p>IRC (Internet Relay Chat) is a protocol for multi-server text chat between many participants in many channels, started back in 1988.</p>
<p>There are plenty of IRC networks out there for social chatter, including the likes of <a href="http://www.freenode.net/">Freenode</a> and <a href="http://irc.perl.org/">irc.perl.org</a> hosting many channels for Perl and open source channels in general, making it easy to get quick help from developers and users of your favourite project.</p>
<p>However, I find IRC to be a very valuable tool indeed to help development teams collaborate effectively; at work we make extensive use of it.  It&#8217;s useful whether you&#8217;re a formal development team in a corporate environment, or an open source project whose developers / collaborators gather on IRC.</p>
<p>Why is it so useful?  Well:</p>
<h2>It enables quick discussion and collaboration without breaking your workflow</h2>
<p>As a developer, you don&#8217;t want to lose your concentration &#8211; when you&#8217;re &#8220;in the zone&#8221;, you&#8217;re carrying information about the code you&#8217;re working on in your brain, and it doesn&#8217;t stay there for long if you&#8217;re distracted.  Someone walking over to you and starting talking to you, or a phone call, demand more or less 100% attention; you will be distracted, and you will &#8220;fall out of the zone&#8221;, causing your productivity to fall until you get back to where you were.</p>
<p>IRC, on the other hand, means you don&#8217;t have to respond quite so immediately, and I find it easy to flick between coding and IRC (both terminals within <a href="http://www.tenshu.net/p/terminator.html">Terminator</a> for me) without losing focus on where I&#8217;m up to and what I&#8217;m doing.</p>
<p>Most IRC clients support alerting you when your nick is mentioned in a channel or you receive a direct message, so you can ignore general chatter in the channel until you&#8217;re ready to read it, but know if someone is trying to get your attention.</p>
<p>Of course, it&#8217;s even more valuable when your development team work from multiple locations, whether that&#8217;s having employees working from home, or multiple offices.</p>
<h2>Logs of discussions can be valuable for future reference</h2>
<p>If you keep logs of your discussions, it&#8217;s easy to refer back to later &#8211; sometimes you&#8217;ll remember &#8220;ah, yes, we talked about this &#8211; what was the outcome?&#8221; &#8211; quick log search, and your answer is there.  &#8220;Why did we decide that this was the best way to implement this?&#8221; &#8211; log search &#8211; &#8220;ah, that was why&#8221;.</p>
<h2>Open, widely-supported protocol</h2>
<p>IRC is an open, widely supported protocol; there&#8217;s various clients available for pretty much every platform, so whatever system your devs work on, they&#8217;ll be able to find a client that suits them.</p>
<h2>Easily extensible to integrate with other tools</h2>
<p>It&#8217;s easy to write IRC &#8220;bots&#8221; which can help integrate with various other tools in various ways.</p>
<p>A good example is providing easy links to commits / bug reports or issues / pull requests etc.</p>
<p>If you&#8217;re using my <a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable::Module::GitHub" title="CPAN Bot::BasicBot::Pluggable::Module::GitHub" 
target="_blank">Bot::BasicBot::Pluggable::Module::GitHub</a> for instance, you can mention an issue and have the bot automatically provide a summary and an URL for anyone who wants to see what the issue in question is &#8211; e.g.:</p>
<pre>
&lt;user1&gt; Anyone had a moment to look at Issue 42 and see what's going on?
&lt;bot&gt; Issue 42 (It doesn't work) https://github.com/....
&lt;user2&gt; Oh yeah - I fixed that in 5fcbb01
&lt;bot&gt; Commit 5fcbb01 (Retarded logic fail.) - https://github.com/....
</pre>
<p>It&#8217;s easy to cobble together a simple bot or bot module to do this kind of stuff for whatever your in-house situation requires, if there&#8217;s nothing suitable already out there on CPAN (which, a lot of the time, there already will be).</p>
<p>GitHub provide post-receive hooks which can be configured to announce pushes to your IRC channel(s).  <a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable::GitHub::Announce" title="CPAN Bot::BasicBot::Pluggable::GitHub::Announce" 
target="_blank">Bot::BasicBot::Pluggable::GitHub::Announce</a> can automatically announce new/updated issues, and, in future releases, also pull requests and commits/pushes.</p>
<h2>System problems reported instantly</h2>
<p>Use something like my <a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable::Module::Nagios" title="CPAN Bot::BasicBot::Pluggable::Module::Nagios" 
target="_blank">Bot::BasicBot::Pluggable::Module::Nagios</a>, and you can have system problems reported automatically to the appropriate IRC channels, for quick attention by whoever needs to deal with them.  I use an applet in my GNOME system tray which alerts me to problems, but seeing them reported in detail on IRC is handy, and also strikes up conversation about it &#8211; a simple &#8220;I&#8217;m on it ^^&#8221; is enough to let others know you&#8217;re dealing with the issue and they don&#8217;t need to worry about it.</p>
<h2>Announce tweets about your company/brand/project/interests</h2>
<p>My <a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable::Module::TwitterWatch" title="CPAN Bot::BasicBot::Pluggable::Module::TwitterWatch" 
target="_blank">Bot::BasicBot::Pluggable::Module::TwitterWatch</a> module allows you to have the bot watch for and report new posts on Twitter about your company/project/brand/stuff of interest, and post them to your IRC channel &#8211; either for awareness, or to strike up discussion about them.</p>
<h2>Wrap various other tools</h2>
<p>Your IRC bot(s) can provide various other useful facilities &#8211; for instance, find the corelist command useful?  <a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable::Module::CoreList" title="CPAN Bot::BasicBot::Pluggable::Module::CoreList" 
target="_blank">Bot::BasicBot::Pluggable::Module::CoreList</a> makes it easy for your bot to answer corelist lookups within the flow of a conversation.</p>
<pre>
&lt;user1&gt; Could use <a href="http://search.cpan.org/perldoc?File::Spec" title="CPAN File::Spec" 
target="_blank">File::Spec</a> - that's part of core, isn't it?
&lt;user2&gt; bot: corelist <a href="http://search.cpan.org/perldoc?File::Spec" title="CPAN File::Spec" 
target="_blank">File::Spec</a>
&lt;bot&gt; <a href="http://search.cpan.org/perldoc?File::Spec" title="CPAN File::Spec" 
target="_blank">File::Spec</a> was first released with perl 5.00503 (released on 1999-03-28)
&lt;user2&gt; Yep :)
</pre>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/10/why-irc-is-a-valuable-tool-to-your-development-team/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bot::BasicBot::Pluggable::Module::Nagios released</title>
		<link>http://www.preshweb.co.uk/2011/10/botbasicbotpluggablemodulenagios-released/</link>
		<comments>http://www.preshweb.co.uk/2011/10/botbasicbotpluggablemodulenagios-released/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 15:03:09 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Geeky]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1019</guid>
		<description><![CDATA[<p>I&#8217;ve just released <a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable::Module::Nagios" title="CPAN Bot::BasicBot::Pluggable::Module::Nagios" 
target="_blank">Bot::BasicBot::Pluggable::Module::Nagios</a> &#8211; a module for IRC bots powered by <a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable" title="CPAN Bot::BasicBot::Pluggable" 
target="_blank">Bot::BasicBot::Pluggable</a> which monitors one or more Nagios instances and reports problems to IRC channels.</p>
<p>I&#8217;ll be using this at work to have service problems reported to us on IRC for quick attention, but figured it&#8217;s something that&#8217;s likely to be of use to others elsewhere, too, so I&#8217;m releasing it.</p>
<p>There&#8217;s still some more features and improvements I want to make (a TODO list is included in the module POD), but it&#8217;s at a state where I consider it to be usable (it works for me).</p>
<p>Feedback/suggestions welcome.</p>
<p>It should be on a CPAN mirror near you soon, and <a href="https://github.com/bigpresh/Bot-BasicBot-Pluggable-Module-Nagios">the repo is on GitHub</a> should you wish to submit pull requests or raise issues for bug reports/feature requests.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/10/botbasicbotpluggablemodulenagios-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bot::BasicBot::Pluggable::Module::GitHub released</title>
		<link>http://www.preshweb.co.uk/2011/10/botbasicbotpluggablemodulegithub-released/</link>
		<comments>http://www.preshweb.co.uk/2011/10/botbasicbotpluggablemodulegithub-released/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 17:21:34 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1009</guid>
		<description><![CDATA[<p>I&#8217;ve released a new distribution for <a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable" title="CPAN Bot::BasicBot::Pluggable" 
target="_blank">Bot::BasicBot::Pluggable</a> powered IRC bots, providing some useful GitHub-related functionality, named <a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable::Module::GitHub" title="CPAN Bot::BasicBot::Pluggable::Module::GitHub" 
target="_blank">Bot::BasicBot::Pluggable::Module::GitHub</a>.</p>
<p>The following modules are included &#8211; see the documentation for each for more details on how to use them.</p>
<h2><a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable::Module::GitHub::EasyLinks" title="CPAN Bot::BasicBot::Pluggable::Module::GitHub::EasyLinks" 
target="_blank">Bot::BasicBot::Pluggable::Module::GitHub::EasyLinks</a></h2>
<p>Provides quick URLs to view issues/pull requests etc when someone mentions one &#8211; for example:</p>
<pre><code>
&lt;user&gt; Go have a look at Issue 42
&lt;bot1&gt; Issue 42 (It doesn't work) https://github.com/....
&lt;user&gt; I fixed that in 5fcbb01
&lt;bot1&gt; Commit 5fcbb01 (Retarded logic fail.) - https://github.com/....
</code></pre>
<p>You can set a default project per-channel, so the above examples will look at whatever project is set as default for the channel the message was in.</p>
<p>You can also explicitly tell it to look at any other GitHub project:</p>
<pre><code>
&lt;user&gt; 5fcbb01 @ bigpresh/Bot-BasicBot-Pluggable-Module-GitHub
&lt;bot1&gt; Commit 5fcbb01 (Retarded logic fail.) - https://github.com/...
</code></pre>
<h2><a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable::Module::GitHub::PullRequests" title="CPAN Bot::BasicBot::Pluggable::Module::GitHub::PullRequests" 
target="_blank">Bot::BasicBot::Pluggable::Module::GitHub::PullRequests</a></h2>
<p>Monitor pull requests for GitHub projects.</p>
<p>Example:</p>
<pre><code>
<@bigpresh> !pr
&lt; sophie&gt; Open pull requests for sukria/Dancer : 8 pull requests open (felixdo:3, perlpilot:1, jamhed:1, dams:1, ambs:1, JTimothyKing:1)
</code></pre>
<h2><a href="http://search.cpan.org/perldoc?Bot::BasicBot::Pluggable::Module::GitHub::Announce" title="CPAN Bot::BasicBot::Pluggable::Module::GitHub::Announce" 
target="_blank">Bot::BasicBot::Pluggable::Module::GitHub::Announce</a></h2>
<p>Announces issues raised/closed for each channel&#8217;s default project.</p>
<p>Periodically checks on issues for each project, and reports changes,<br />
for example:</p>
<pre><code>
&lt; sophie&gt; Issues closed : 667 (<a href="http://search.cpan.org/perldoc?YAML::XS" title="CPAN YAML::XS" 
target="_blank">YAML::XS</a> for <a href="http://search.cpan.org/perldoc?Session::YAML" title="CPAN Session::YAML" 
target="_blank">Session::YAML</a>) by jamhed : https://github.com/sukria/Dancer/issues/667
</code></pre>
<p>The code is on CPAN, and is <a href="https://github.com/bigpresh/Bot-BasicBot-Pluggable-Module-GitHub">available on GitHub</a>.  Contributions / bug reports / suggestions encouraged.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/10/botbasicbotpluggablemodulegithub-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Battlefield 3 beta &#8211; my thoughts so far</title>
		<link>http://www.preshweb.co.uk/2011/09/battlefield-3-beta-my-thoughts-so-far/</link>
		<comments>http://www.preshweb.co.uk/2011/09/battlefield-3-beta-my-thoughts-so-far/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 09:17:44 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Battlefield 3]]></category>
		<category><![CDATA[Gaming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=1002</guid>
		<description><![CDATA[<p>I spent some time last night playing the Battlefield 3 beta.</p>
<p>First things first, overall I found it awesome, and I&#8217;m rather happy I have it on pre-order; I look forward to the full game.</p>
<p>Going prone is excellent, something I&#8217;d really missed in BF:BC2.</p>
<p>However, as could be expected from a beta, I did hit a few bugs:</p>
<ul>
<li>Floor diving &#8211; in some points (notably around one of the outdoors objectives in Operation Metro), going prone can allow you to &#8220;dive through the floor&#8221; &#8211; I haven&#8217;t tried this alongside anyone else who can tell me if I become effectively invisible underneath the ground yet, but it&#8217;s clearly buggy</li>
<li>After unlocking the holo sight for the RPK-74M, in the next round I was spawning with the M27 IAR &#8211; a weapon which I have not yet unlocked.  I wasn&#8217;t able to re-select the RPK-74M either.  In the next round, I was back to my RPK-74M with the holo sight again.</li>
<li>Torches still seem to have their blinding effect outdoors in bright sunlight; I think it would make sense for their blinding effect to only work in dimmer indoor areas, and not outdoors (or to be very limited outdoors).</li>
<li>The Battlelog &#8220;social networking and stats&#8221; pages seem a little buggy in places (and require Javascript to be allowed from some random IP address to function; also they complain about Flash being blocked, despite me not actually seeing any unblockable Flash objects).</li>
<li>The stats also claim that I have 0 kills with grenades, but 5 kills&#8230; er, what?:<br />
<a href="http://www.preshweb.co.uk/wp-content/uploads/2011/09/grenade-kills-what.png" rel='lightbox'><img src="http://www.preshweb.co.uk/wp-content/uploads/2011/09/grenade-kills-what-300x88.png" alt="" title="grenade-kills-what" width="300" height="88" class="alignnone size-medium wp-image-1003" /></a>
</li>
<li>On the subject of grenades, it appears to be impossible to hold on to the grenade before throwing; the throw seems mostly immediate, unlike BF:BC2 where you could hold the button until you were ready to throw the grenade.</li>
<li>In one game, despite joining with a friend together, we were split up onto different teams; I would have expected the game&#8217;s matchmaking to have tried harder to locate a game with two slots available on the same team, rather than splitting us up.  Battlefield is a game where teamwork is really needed, so playing with friends means you really want to be on the same team to work together.</li>
<li>Sometimes friendly soldiers can &#8220;push&#8221; you; in particular, if someone spawns on you in a close spot, you can be pushed along, sometimes out of the cover you were using</li>
</ul>
<p>Overall, though, kick-arse game.</p>
<p><a href="http://battlelog.battlefield.com/bf3/soldier/bigpresh/stats/239310028/ps3/">My somewhat poor stats</a></p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/09/battlefield-3-beta-my-thoughts-so-far/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solving trouble codes P0480 / P0482 on Vectra Z22SE</title>
		<link>http://www.preshweb.co.uk/2011/09/solving-trouble-codes-p0480-p0482-on-vectra-z22se/</link>
		<comments>http://www.preshweb.co.uk/2011/09/solving-trouble-codes-p0480-p0482-on-vectra-z22se/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 13:48:13 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Non-geeky]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=999</guid>
		<description><![CDATA[<p>Quick post for the benefit of anyone Googling for advice on this topic, as most of the results I found when searching were simply lists of all the fault codes, rather than anything useful pertaining to specific advice.</p>
<p>My Vectra B 2.2 LS (Z22SE engine) was reporting the following fault codes:</p>
<p>P0480 Cooling Fan 1 Control Circuit Malfunction<br />
P0482 Cooling Fan 3 Control Circuit Malfunction</p>
<p>Upon investigation, the problem turned out to be simple &#8211; a blown maxi blade fuse in the relay &#038; fuse box in front of the battery &#8211; the one shown removed below:</p>
<p><a href="http://www.preshweb.co.uk/wp-content/uploads/2011/09/vectra-b-cooling-fuse-40amp.jpg" rel='lightbox'><img src="http://www.preshweb.co.uk/wp-content/uploads/2011/09/vectra-b-cooling-fuse-40amp-300x179.jpg" alt="" title="vectra-b-cooling-fuse-40amp" width="300" height="179" class="alignnone size-medium wp-image-1000" /></a></p>
<p>Swapped out that fuse, and job done, no more warning light on the dash.</p>
<p>I like easy fixes :)</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/09/solving-trouble-codes-p0480-p0482-on-vectra-z22se/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Battlefield 3 open beta starts 29th September</title>
		<link>http://www.preshweb.co.uk/2011/09/battlefield-3-open-beta-starts-29th-september/</link>
		<comments>http://www.preshweb.co.uk/2011/09/battlefield-3-open-beta-starts-29th-september/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 11:17:36 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Gaming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=994</guid>
		<description><![CDATA[<p>The Battlefield 3 open beta starts this Thursday, 29th September.</p>
<p>You&#8217;ll be able to play the &#8220;Rush&#8221; game mode on the Operation Metro map. The beta will end on October 10.</p>
<p>I&#8217;ll definitely be giving it a go, as a taster before the full title is released on October 28th.</p>
<p>Back in August I decided to <a href="http://www.amazon.co.uk/gp/product/B004MKM94O/ref=as_li_qf_sp_asin_tl?ie=UTF8&#038;tag=preshweb-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=B004MKM94O">pre-order Battlefield 3 from Amazon</a> (currently £38.91 for the Limited Edition along with &#8220;Amazon.co.uk exclusive Specact Kit pre-order bonus&#8221;), so I&#8217;m looking forward to this one :)</p>
<p>I think I&#8217;ll need to fit in some time for some more BF:BC2 (and BF3 beta, once it&#8217;s out) to brush up on my skills&#8230;</p>
<p>One notable change in Rush gameplay from BF:BC2 reported is that the M-COM station objectives cannot be damaged any more &#8211; the only way to take them out is by arming the explosives.  I would imagine that M-COM stations within destructible buildings can still be taken out by taking down the building, though.  I think this is a good decision to stop people trying the old trick of strapping C4 to the UAV and going suicide-bombing, which could be very irritating on certain maps.</p>
<p>Another interesting reported change is that the bomb timer on the M-COM station is extended if a defender starts defusing it just before it blows &#8211; the detonation is held off until it&#8217;s defused, or until the defender is killed or stops disarming.</p>
<p>The game is looking pretty sweet:</p>
<p><a href="http://www.preshweb.co.uk/wp-content/uploads/2011/09/bf385-4e78991-intro-thumb-640xauto-25648.jpg" rel='lightbox'><img src="http://www.preshweb.co.uk/wp-content/uploads/2011/09/bf385-4e78991-intro-thumb-640xauto-25648-300x184.jpg" alt="" title="bf385-4e78991-intro-thumb-640xauto-25648" width="300" height="184" class="alignnone size-medium wp-image-995" /></a></p>
<p>If you&#8217;re undecided, grab the beta and see what you think.  I find the Battlefield series better fun than the Call of Duty franchise with more tactics and teamwork, rather than simple &#8220;run and gun&#8221; play.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/09/battlefield-3-open-beta-starts-29th-september/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do big cats like laser pointers?</title>
		<link>http://www.preshweb.co.uk/2011/09/do-big-cats-like-laser-pointers/</link>
		<comments>http://www.preshweb.co.uk/2011/09/do-big-cats-like-laser-pointers/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 15:09:54 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Humour]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=990</guid>
		<description><![CDATA[<p>Normal cats go mad chasing laser pointers &#8211; do big cats?</p>
<p><iframe width="560" height="345" src="http://www.youtube.com/embed/x3BHSt42L0Y" frameborder="0" allowfullscreen></iframe></p>
<p>Apparently, at least some of them do :)</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/09/do-big-cats-like-laser-pointers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WTF, Blood Donor online?</title>
		<link>http://www.preshweb.co.uk/2011/09/wtf-blood-donor-online/</link>
		<comments>http://www.preshweb.co.uk/2011/09/wtf-blood-donor-online/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 14:31:09 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[WTF]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=985</guid>
		<description><![CDATA[<p>Just went to the NHS <a href="https://donor.blood.co.uk/">Blood Donor online</a> portal thingy, and saw the following little gem:</p>
<p><a href="http://www.preshweb.co.uk/wp-content/uploads/2011/09/donor-wtf.png" rel='lightbox'><img src="http://www.preshweb.co.uk/wp-content/uploads/2011/09/donor-wtf.png" alt="" title="donor-wtf" width="461" height="262" class="alignnone size-full wp-image-986" /></a></p>
<p>Um, <b>what</b>?</p>
<p>It&#8217;s not a &quot;private network&quot;, it&#8217;s a fucking website, served up publicly.  I think some stupid legalweasel^Hlawyer types must have insisted that that notice be present.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/09/wtf-blood-donor-online/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Battlefield 3 looks awesome&#8230; pre-order time</title>
		<link>http://www.preshweb.co.uk/2011/08/battlefield-3-looks-awesome-pre-order-time/</link>
		<comments>http://www.preshweb.co.uk/2011/08/battlefield-3-looks-awesome-pre-order-time/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 15:54:48 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Battlefield - Bad Company 2]]></category>
		<category><![CDATA[Gaming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=981</guid>
		<description><![CDATA[<p>I really enjoy Battlefield: Bad Company 2, finding it a much better game all-round than Call of Duty, and I&#8217;ve been planning a pre-order of Battlefield 3 when it comes out, but today I saw some of the awesome gameplay videos on YouTube including this one:</p>
<p><iframe width="560" height="345" src="http://www.youtube.com/embed/UrhNQY4PBR8" frameborder="0" allowfullscreen></iframe></p>
<p>It&#8217;s looking to be excellent stuff, and the <a href="http://blog.eu.playstation.com/2011/08/31/co-op-the-battlefield-3-way/">new co-op play</a> sounds interesting, too.</p>
<p>Amusingly, you can <a href="http://www.amazon.co.uk/gp/product/B004MKM94O/ref=as_li_qf_sp_asin_tl?ie=UTF8&#038;tag=preshweb-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=B004MKM94O">pre-order Battlefield 3 Special Edition</a> on Amazon for &pound;38.91 at the time of writing, cheaper than the &#8220;Standard Edition&#8221; at &pound;43.56, and a shade cheaper than Play.com who want £39.81.  Amazon also claim &#8220;Pre-order Battlefield 3 with us at Amazon.co.uk before 23:59 on Thursday, October 27 and you&#8217;ll receive a code to download the Specact Kit DLC &#8211; not a massive selling point, but extra stuff for free.</p>
<p>(If you haven&#8217;t played it yet, you can pick up <a href="http://www.amazon.co.uk/gp/product/B0021AEKP8/ref=as_li_tf_tl?ie=UTF8&#038;tag=preshweb-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=B0021AEKP8">Battlefield Bad Company 2 for under £15</a> &#8211; well worth it!)</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/08/battlefield-3-looks-awesome-pre-order-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dancer 1.3072 released</title>
		<link>http://www.preshweb.co.uk/2011/08/dancer-1-3080-released/</link>
		<comments>http://www.preshweb.co.uk/2011/08/dancer-1-3080-released/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 15:22:09 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Dancer web framework]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=977</guid>
		<description><![CDATA[<p>Version <strike>1.3080</strike>1.3072 of the <a href="http://www.perldancer.org/">Dancer Perl web framework</a> was released today.</p>
<p>It was codenamed the &quot;Precious David Precious&quot; release after me &#8211; thanks guys :)</p>
<p>The changes included are:<br />
<!--more--></p>
<pre>
    [ BUG FIXES ]
    * Fix prefix behavior with load_app (alexrj)
    * send_file() shouldn't clobber previously-set response status
      (David Precious, reported by tylerdu - thanks!)
    * Depend on URI 1.59 - Fixes problems when redirecting with
      UTF-8 strings (Alberto SimÃµes)
    * Fix before_serializer POD fix (Yanick Champoux)

    [ ENHANCEMENTS ]
    * send_file can send data (pass a reference to a scalar), and can
      specify a content-disposition filename. (Alberto SimÃµes)
    * Set 'Server' HTTP response header as well as 'X-Powered-By'.  For cases
      where Dancer is being accessed directly, or the proxy passes on this
      header, it's nice to see it.  (David Precious)

    [ DOCUMENTATION ]
    * Cookbook links to canonical documentation of keywords in Dancer.pm, so
      readers encountering a new keyword can easily see the docs for it
      (David Precious)
    * Docs for debug/warning/error link to <a href="http://search.cpan.org/perldoc?Dancer::Logger" title="CPAN Dancer::Logger" 
target="_blank">Dancer::Logger</a> for details on how to
      control where logs go (David Precious)
    * Document import_warnings option, and mention it &#038; link to that
      documentation in opportune places.
    * Document that 'get' also creates a route for 'HEAD' requests
      (David Precious, prompted by Matt S Trout)
    * Extend request() keyword docs with examples (David Precious)
    * Correct port in Lighty/FCGI example in <a href="http://search.cpan.org/perldoc?Dancer::Deployment" title="CPAN Dancer::Deployment" 
target="_blank">Dancer::Deployment</a>
      (David Precious, thanks to pwfraley in Issue 621)
</pre>
<p>EDIT: I stupidly typed 1.3080, not 1.3072.  1.3080 is to be released fairly soon, and will contain some sweet new features.  1.3072 is the release which came out today, and contains slightly less impressive features :)</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/08/dancer-1-3080-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using p3rl.org for FF search keyword</title>
		<link>http://www.preshweb.co.uk/2011/08/using-p3rl-org-for-ff-search-keyword/</link>
		<comments>http://www.preshweb.co.uk/2011/08/using-p3rl-org-for-ff-search-keyword/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 21:33:17 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=973</guid>
		<description><![CDATA[<p>The lazy side of me enjoys Quick Search bookmarks in Firefox, so that I can type e.g. <tt>cpan ModuleName</tt> to look up a module on CPAN etc, <tt>pd perlfoo</tt> to look up the imaginary <tt>perlfoo</tt> documentation on perldoc, etc.</p>
<p>I also like <a href="http://p3rl.org/">p3rl.org</a>&#8216;s intelligent handling of short URLs, e.g. <a href="http://p3rl.org/Dancer">http://p3rl.org/Dancer</a>, <a href="http://p3rl.org/perlrun">http://p3rl.org/perlrun</a> etc.</p>
<p>It suddenly occurred to me to create a keyword search with the keyword <tt>p3</tt>, and the URL as <tt>http://p3rl.org/%s</tt> &#8211; now I can jump straight to pages I want with  e.g. <tt>p3 Dancer</tt>, <tt>p3 perlrun</tt> etc.</p>
<p>My laziness likes this very much indeed.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/08/using-p3rl-org-for-ff-search-keyword/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy birthday Dancer!</title>
		<link>http://www.preshweb.co.uk/2011/08/happy-birthday-dancer/</link>
		<comments>http://www.preshweb.co.uk/2011/08/happy-birthday-dancer/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 10:28:33 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Dancer web framework]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=967</guid>
		<description><![CDATA[<p>Today marks two years to the day since the first version of Dancer hit CPAN!</p>
<p><a href="http://backpan.perl.org/authors/id/S/SU/SUKRIA/">According to the BackPAN</a>, Dancer-0.9003.tar.gz hit CPAN on 07-Aug-2009.</p>
<p>I think you&#8217;ll agree we&#8217;ve come a long way since then, thanks to the awesome community and user base built up around the project since then.</p>
<p>In these two years, we&#8217;ve had countless valuable contributions from a large list of contributing users (see the list on the <a href="http://www.perldancer.org/about">about page</a>), gathered over 300 watchers on GitHub, had 84 people fork the repository on GitHub, had 620 pull requests submitted&#8230; amazing stuff.</p>
<p><!--more--></p>
<p>We&#8217;ve seen a wide range of awesome Dancer plugins</a> appear on CPAN (see <a href="http://search.cpan.org/perldoc?Dancer::Plugins" title="CPAN Dancer::Plugins" 
target="_blank">Dancer::Plugins</a>, or search on CPAN for &#8220;<a href="http://search.cpan.org/perldoc?Dancer::Plugin" title="CPAN Dancer::Plugin" 
target="_blank">Dancer::Plugin</a>::&#8221;).</p>
<p>We&#8217;ve seen Dancer presented at various conferences including FOSDEM, OSDC.fr, the French Perl Workshop, the Bulgaria Perl Workshop, PyWeb IL (an Israeli Python group).</p>
<p>We&#8217;ve seen screencasts on using Dancer (thanks Gabor!), we&#8217;ve seen Dancer discussed plenty within the Perl community with plenty of helpful suggestions.</p>
<p>Unfortunately, we&#8217;ve also seen some trolling from someone who, for reasons unknown, seems to take a strong dislike to the project &#8211; puzzling.</p>
<p>As a result of some of the trolling which included fake reviews falsely attributed to members of the Sinatra team, we&#8217;ve seen our initial inspiration, Ruby&#8217;s Sinatra project, release a statement proclaiming that <a href="http://www.sinatrarb.com/2011/07/21/sinatra-loves-dancer.html">&#8220;Sinatra Loves Dancer&#8221;</a>.</p>
<p>So, to celebrate Dancer&#8217;s 2nd birthday, I think a little marketing effort would be good &#8211; I&#8217;d like to invite you all to let the world know what yout think!  Do you use Dancer?  Do you like it?  Let people know &#8211; blog about it, tweet about it, leave positive reviews &#038; ratings on <a href="http://cpanratings.perl.org/dist/Dancer">cpanratings</a> or +1&#8242;s on <a href="https://metacpan.org/module/Dancer">MetaCPAN</a> &#8211; however you like.</p>
<p>(If you leave reviews/+1&#8242;s, feel free to also do so for any Dancer plugins you find helpful, too &#8211; they need the love too! :) )</p>
<p>Also, if you don&#8217;t already, please &#8220;watch&#8221; the <a href="https://github.com/sukria/Dancer">Dancer project on GitHub</a> &#8211; just go to the project page and click the &#8220;Watch&#8221; button near the top.</p>
<p>Pithy quotes on what you like about Dancer suitable for inclusion on <a href="http://www.perldancer.org/testimonials">www.perldancer.org/testimonials</a> would be very welcome, too :)</p>
<p>Also, we&#8217;ve come a long way, but we have a long way to go, too &#8211; we have some great improvements to Dancer planned, but suggestions for new features would be very welcome &#8211; it&#8217;s always good to know what users would like to see!</p>
<p>So, happy birthday Dancer, and happy dancing, community!</p>
<p>And, of course, an invitation &#8211; if you&#8217;re interested in Dancer, but aren&#8217;t already part of the vibrant welcoming community in the #dancer IRC channel on irc.perl.org, feel free to join us &#8211; see <a href="http://www.perldancer.org/irc">http://www.perldancer.org/irc</a> for a web chat client if you don&#8217;t use IRC normally.</p>
<p>Cheers</p>
<p>Dave P</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/08/happy-birthday-dancer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ignoring .svn dirs when tab-completing in Bash</title>
		<link>http://www.preshweb.co.uk/2011/07/ignoring-svn-dirs-when-tab-completing-in-bash/</link>
		<comments>http://www.preshweb.co.uk/2011/07/ignoring-svn-dirs-when-tab-completing-in-bash/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 09:52:24 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=964</guid>
		<description><![CDATA[<p>One thing that&#8217;s annoyed me for some time is <tt>.svn</tt> dirs interfering with smooth tab-completion in Bash when I&#8217;m in a Subversion checkout.</p>
<p>Finally annoyed me enough to do something about it &#8211; the solution is easy:</p>
<pre><code>
export FIGNORE=".svn"
</code></pre>
<p>I whacked the above in <a href="http://www.preshweb.co.uk/downloads/profile">my .profile</a>, and job done.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/07/ignoring-svn-dirs-when-tab-completing-in-bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Renaming MP3s based on ID3 tags with Perl</title>
		<link>http://www.preshweb.co.uk/2011/07/renaming-mp3s-based-on-id3-tags-with-perl/</link>
		<comments>http://www.preshweb.co.uk/2011/07/renaming-mp3s-based-on-id3-tags-with-perl/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 20:00:33 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=958</guid>
		<description><![CDATA[<p>As mentioned in my previous post on <a href="http://www.preshweb.co.uk/2011/07/retagging-mp3s-by-filename-with-perl/">retagging MP3s by filename</a>, I have a fairly large music collection, and prefer to keep it well organised.</p>
<p>I like the filenames used to always follow the same pattern, so I wrote <a href="https://github.com/bigpresh/misc-scripts/tree/master/mp3-rename">mp3-rename</a>, a Perl script to rename them based on the filename.</p>
<p>It takes a directory name as an argument (if not provided, it will operate upon the current directory).  It will find all the MP3 files within that directory, extract information from the ID3 tags, then display a table showing the renames it will make if you tell it to go ahead, then ask for confirmation.</p>
<p>An example in action:</p>
<pre><code>
[davidp@supernova:~]$ mp3-rename /[...]/Rob\ Costlow\ -\ Woods\ of\ Chaos/
The following renames will be performed:
01 - Meant to Be.mp3    -> 00 - Meant to Be - Rob Costlow.mp3
02 - Reflections.mp3    -> 00 - Reflections - Rob Costlow.mp3
03 - Semester Days.mp3  -> 00 - Semester Days - Rob Costlow.mp3
[...]

Review the above renames to check the info is correct.

Type 'yes' to go ahead: ?>
</code></pre>
<p>(Some lines omitted for brevity)</p>
<p>It uses CPAN modules to do most of the work, including <a href="http://search.cpan.org/perldoc?File::Find::Rule" title="CPAN File::Find::Rule" 
target="_blank">File::Find::Rule</a> to find matching files to work on, <a href="http://search.cpan.org/perldoc?Music::Tag" title="CPAN Music::Tag" 
target="_blank">Music::Tag</a> to handle the tag processing, and <a href="http://search.cpan.org/perldoc?Term::ReadKey" title="CPAN Term::ReadKey" 
target="_blank">Term::ReadKey</a> to find out the terminal size.</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/07/renaming-mp3s-based-on-id3-tags-with-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slow-mo cymbal crash at 1000fps</title>
		<link>http://www.preshweb.co.uk/2011/07/slow-mo-cymbal-crash-at-100fps/</link>
		<comments>http://www.preshweb.co.uk/2011/07/slow-mo-cymbal-crash-at-100fps/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 08:57:40 +0000</pubDate>
		<dc:creator>bigpresh</dc:creator>
				<category><![CDATA[Non-geeky]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://www.preshweb.co.uk/?p=961</guid>
		<description><![CDATA[<p>A slow-mo cymbal crash, filmed at <strike>100</strike> 1000 frames per second:<br />
<object width='600' height='368'><param name='movie' value='http://www.youtube.com/v/kpoanOlb3-w?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1' /><param name='allowfullscreen' value='true' /><param name='wmode' value='opaque' /><embed src='http://www.youtube.com/v/kpoanOlb3-w?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1' type='application/x-shockwave-flash' allowfullscreen='true' width='600' height='368' wmode='opaque'></embed></object></p>
<p>(<a href="http://trevorcoultart.wordpress.com/2011/06/27/a-cymbal-crash-filmed-at-1000-frames-per-second/">via Trevor Coultart</a>.)</p>
]]></description>
		<wfw:commentRss>http://www.preshweb.co.uk/2011/07/slow-mo-cymbal-crash-at-100fps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

