<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.illusori.co.uk/xsl/rss.xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Sam's Blog &gt; Tutorial</title>
    <link>http://www.illusori.co.uk/blog/categories/tutorial/</link>
    <description>Sam's Blog, feed for category tutorial</description>
    <language>en-gb</language>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <pubDate>Fri, 15 Jun 2012 11:03:00 GMT</pubDate>
    <lastBuildDate>Fri, 15 Jun 2012 11:03:00 GMT</lastBuildDate>
    <generator>build_site 1.0</generator>
    <webMaster>rss@illusori.co.uk</webMaster>

    <item>
      <title><![CDATA[Bash-itunes plugin tutorial]]></title>
      <link>http://www.illusori.co.uk/blog/2012/06/15/bash_itunes_plugin_tutorial.html</link>
      <description><![CDATA[<p>In <a href="https://github.com/illusori/bash-itunes">v1.2.0 of bash-itunes</a>,
my project to control iTunes from the command-line, I&#39;ve added plugin support
for sub-commands.</p>
<p>This allows you, or anyone else, to add new commands to the basic script without
needing to alter the script itself.</p>
<p>Read below the cut for details and a walkthrough of creating a new plugin.</p><p><a href="http://www.illusori.co.uk/blog/2012/06/15/bash_itunes_plugin_tutorial.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>bash-itunes</category>
      <category>itunes</category>
      <category>cli</category>
      <category>bash</category>
      <category>shell-scripting</category>
      <category>apple-script</category>
      <category>tutorial</category>
      <pubDate>Fri, 15 Jun 2012 11:03:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2012/06/15/bash_itunes_plugin_tutorial.html</guid>
    </item>
    <item>
      <title><![CDATA[Custom minting with Module::Starter and Test::XT]]></title>
      <link>http://www.illusori.co.uk/blog/2010/08/26/custom_minting_module_starter_test_xt.html</link>
      <description><![CDATA[<p>In the comments to
<a href="/blog/2010/07/24/to_dist_zilla_or_not_to_dist_zilla.html">a previous article</a>,
I mentioned that I use <a href="http://search.cpan.org/perldoc?Module::Starter">Module::Starter</a> when starting a new
distribution.</p>
<p>I actually use a custom profile along with the very handy <a href="http://search.cpan.org/perldoc?Test::XT">Test::XT</a>
to produce robust release tests that won&#39;t break when people are just trying
to install with the minimum fuss.</p>
<p>I thought it might be useful for other people if I wrote a quick tutorial
on how to achieve the same results themselves.</p><p><a href="http://www.illusori.co.uk/blog/2010/08/26/custom_minting_module_starter_test_xt.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>module-authoring</category>
      <category>tutorial</category>
      <category>intermediate</category>
      <category>module-starter</category>
      <category>test-xt</category>
      <pubDate>Thu, 26 Aug 2010 18:49:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/08/26/custom_minting_module_starter_test_xt.html</guid>
    </item>
    <item>
      <title><![CDATA[Readable Regexps: Why you should use /x]]></title>
      <link>http://www.illusori.co.uk/blog/2010/06/02/readable_regexps_with_slash_x.html</link>
      <description><![CDATA[<p>Regexps are one of Perl&#39;s strongest features, but they&#39;re also
one of the causes of Perl&#39;s greatest criticism: that it looks like
line noise.</p>
<p>If you&#39;ve ever had to examine someone else&#39;s regexp, or worse debug one,
you&#39;ll probably agree that there&#39;s some merit in that criticism.</p>
<p>It doesn&#39;t have to be that way however, there&#39;s some simple steps you
can take to make your regexps more readable and more maintainable, and
this week we look at one of them: the <code>/x</code> modifier.</p><p><a href="http://www.illusori.co.uk/blog/2010/06/02/readable_regexps_with_slash_x.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>regexp</category>
      <category>craft</category>
      <category>basic</category>
      <category>tutorial</category>
      <pubDate>Wed, 02 Jun 2010 09:53:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/06/02/readable_regexps_with_slash_x.html</guid>
    </item>
    <item>
      <title><![CDATA[Did you mean +, not *, in that regexp?]]></title>
      <link>http://www.illusori.co.uk/blog/2010/04/28/star_vs_plus_regexp.html</link>
      <description><![CDATA[<p>Continuing from my previous article
<a href="/blog/2010/04/22/anchoring_regexps.html">&quot;Anchoring Regexps&quot;</a>,
another common regexp mistake I see is use of <code>*</code> where the
author <i>really meant</i> <code>+</code>.</p>
<p>So today I cover <code>+</code> and <code>*</code>: what&#39;s the difference and
why does it matter?</p><p><a href="http://www.illusori.co.uk/blog/2010/04/28/star_vs_plus_regexp.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>regexp</category>
      <category>craft</category>
      <category>basic</category>
      <category>tutorial</category>
      <pubDate>Wed, 28 Apr 2010 13:36:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/04/28/star_vs_plus_regexp.html</guid>
    </item>
    <item>
      <title><![CDATA[Anchoring Regexps]]></title>
      <link>http://www.illusori.co.uk/blog/2010/04/22/anchoring_regexps.html</link>
      <description><![CDATA[<p>A common mistake I find whenever I look at someone else&#39;s regexps,
is a failure to anchor the regexp.</p>
<p>This is often, in my experience, the single biggest thing you can
do to improve the performance of a regexp: it&#39;s one of those things
you should learn to do in every regexp where applicable, which should
be almost every regexp unless you&#39;re <i>specifically</i> looking
for &quot;something somewhere in the middle but I don&#39;t know where&quot;.</p>
<p>So, what is anchoring, and <i>why</i> does it have such a big impact?</p><p><a href="http://www.illusori.co.uk/blog/2010/04/22/anchoring_regexps.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>regexp</category>
      <category>craft</category>
      <category>optimization</category>
      <category>basic</category>
      <category>tutorial</category>
      <pubDate>Thu, 22 Apr 2010 15:14:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/04/22/anchoring_regexps.html</guid>
    </item>
    <item>
      <title><![CDATA[Wrapping Benchmark.pm to auto-correct custom controls]]></title>
      <link>http://www.illusori.co.uk/blog/2010/03/27/wrapping_for_better_benchmarking.html</link>
      <description><![CDATA[<p>Last week, in <a href="/blog/2010/03/18/monkey_patching_for_better_benchmarks.html">&quot;Monkey-patching Benchmark.pm to auto-correct custom controls&quot;</a>,
we covered how to monkey-patch <a href="http://search.cpan.org/perldoc?Benchmark">Benchmark.pm</a> into giving
us the results we wanted, and saw that one alternative method was to
wrap the module instead.</p>
<p>This week, we investigate how to do this, and see what unpleasant surprises
lie in wait when wrapping a procedural module.</p><p><a href="http://www.illusori.co.uk/blog/2010/03/27/wrapping_for_better_benchmarking.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>benchmarking</category>
      <category>analysis</category>
      <category>module-wrapping</category>
      <category>tutorial</category>
      <category>basic</category>
      <pubDate>Sat, 27 Mar 2010 20:28:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/03/27/wrapping_for_better_benchmarking.html</guid>
    </item>
    <item>
      <title><![CDATA[Monkey-patching Benchmark.pm to auto-correct custom controls]]></title>
      <link>http://www.illusori.co.uk/blog/2010/03/18/monkey_patching_for_better_benchmarks.html</link>
      <description><![CDATA[<p>In <a href="/blog/2010/03/05/advanced_benchmark_analysis_1.html">&quot;Advanced Benchmark Analysis I: Yet more white-space trimming&quot;</a>,
I mentioned that you could automatically take into account the
cost of your control benchmark and eliminate it from the rest
of your results.</p>
<p>This blog entry shows you how to monkey-patch <a href="http://search.cpan.org/perldoc?Benchmark">Benchmark.pm</a>
to let you do just that.</p><p><a href="http://www.illusori.co.uk/blog/2010/03/18/monkey_patching_for_better_benchmarks.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>benchmarking</category>
      <category>analysis</category>
      <category>monkey-patching</category>
      <category>hack</category>
      <category>tutorial</category>
      <category>advanced</category>
      <pubDate>Thu, 18 Mar 2010 13:41:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/03/18/monkey_patching_for_better_benchmarks.html</guid>
    </item>
    <item>
      <title><![CDATA[Advanced Benchmark Analysis II: Probing strengths and weaknesses]]></title>
      <link>http://www.illusori.co.uk/blog/2010/03/09/advanced_benchmark_analysis_2.html</link>
      <description><![CDATA[<p>In my previous blog entry,
<a href="/blog/2010/03/05/advanced_benchmark_analysis_1.html">&quot;Advanced Benchmark Analysis I: Yet more white-space trimming&quot;</a>,
I left you with the thought that our benchmarks changed
with changing input.</p>
<p>This article shows you how to analyze those changes
and how to draw conclusions from them.</p><p><a href="http://www.illusori.co.uk/blog/2010/03/09/advanced_benchmark_analysis_2.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>benchmarking</category>
      <category>analysis</category>
      <category>trim</category>
      <category>regexp</category>
      <category>optimization</category>
      <category>advanced</category>
      <category>tutorial</category>
      <pubDate>Tue, 09 Mar 2010 13:39:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/03/09/advanced_benchmark_analysis_2.html</guid>
    </item>
    <item>
      <title><![CDATA[Advanced Benchmark Analysis I: Yet more white-space trimming]]></title>
      <link>http://www.illusori.co.uk/blog/2010/03/05/advanced_benchmark_analysis_1.html</link>
      <description><![CDATA[<p>Seems my previous blog, <a href="/blog/2010/03/03/white_space_trim.html">&quot;Some
simple &quot;white-space trim&quot; benchmarks&quot;</a> caught people&#39;s attention,
and I&#39;ve received some interesting suggestions and observations worthy
of a followup article, this also gives me the chance to delve into
explaining more advanced benchmark analysis.</p>
<p>So, <i>deep breath</i>, here goes.</p><p><a href="http://www.illusori.co.uk/blog/2010/03/05/advanced_benchmark_analysis_1.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>benchmarking</category>
      <category>analysis</category>
      <category>trim</category>
      <category>regexp</category>
      <category>optimization</category>
      <category>intermediate</category>
      <category>tutorial</category>
      <pubDate>Fri, 05 Mar 2010 09:43:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/03/05/advanced_benchmark_analysis_1.html</guid>
    </item>
    <item>
      <title><![CDATA[Some simple &quot;white-space trim&quot; benchmarks]]></title>
      <link>http://www.illusori.co.uk/blog/2010/03/03/white_space_trim.html</link>
      <description><![CDATA[<p>Laufeyjarson asked on Monday, about
<a href="http://blog.laufeyjarson.com/2010/03/stripping-whitespace-from-both-ends-of-a-string/">stripping whitespace from both ends of a string</a>.
The comments contains lots of suggestions, but no hard figures, so
I thought I&#39;d reproduce them here along with the code used to generate
the benchmarks - it provides a simple example of how to write a quick
and reliable benchmark.</p><p><a href="http://www.illusori.co.uk/blog/2010/03/03/white_space_trim.html">Read more...</a></p>]]></description>
      <dc:creator>Sam Graham</dc:creator>
      <category>perl</category>
      <category>ironman</category>
      <category>benchmarking</category>
      <category>trim</category>
      <category>regexp</category>
      <category>optimization</category>
      <category>basic</category>
      <category>tutorial</category>
      <pubDate>Wed, 03 Mar 2010 15:38:00 GMT</pubDate>
      <guid isPermaLink="true">http://www.illusori.co.uk/blog/2010/03/03/white_space_trim.html</guid>
    </item>

  </channel>
</rss>
