<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Not this... &#187; presentation</title>
	<atom:link href="http://blog.timbunce.org/tag/presentation/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.timbunce.org</link>
	<description>Listen. Reflect. Explore. Solve.</description>
	<lastBuildDate>Sat, 14 Jan 2012 21:59:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.timbunce.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Not this... &#187; presentation</title>
		<link>http://blog.timbunce.org</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.timbunce.org/osd.xml" title="Not this..." />
	<atom:link rel='hub' href='http://blog.timbunce.org/?pushpress=hub'/>
		<item>
		<title>What&#8217;s actually installed in that perl library?</title>
		<link>http://blog.timbunce.org/2011/11/16/whats-actually-installed-in-that-perl-library/</link>
		<comments>http://blog.timbunce.org/2011/11/16/whats-actually-installed-in-that-perl-library/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 21:52:01 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[metacpan]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=502</guid>
		<description><![CDATA[A key part of my plan for Upgrading from Perl 5.8 is the ability to take a perl library installed for one version of perl, and reinstall it for a different version of perl. To do that you have to know exactly what distributions were installed in the original library. And not just which distributions, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=502&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A key part of my plan for <a href="http://blog.timbunce.org/2011/07/21/upgrading-from-perl-5-8/">Upgrading from Perl 5.8</a> is the ability to take a perl library installed for one version of perl, and reinstall it for a different version of perl.</p>
<p>To do that you have to know exactly what distributions were installed in the original library.  And not just which distributions, but which versions of those distributions.</p>
<p>I&#8217;ve a solution for that now. It turned out to be rather harder to solve than I&#8217;d thought&#8230; <span id="more-502"></span>As I mentioned <a href="http://blog.timbunce.org/2011/07/21/upgrading-from-perl-5-8/">previously</a>, I had developed a &#8220;distinctly hackish solution&#8221; that seemed to be working well. Sadly it didn&#8217;t withstand battle testing.</p>
<p>We have a library with almost 5000 modules installed from CPAN over many years. I ran that hackish script and it duly listed the distributions it thought were installed. Using that list I reinstalled them into a new library and ran <code>diff -r</code> to compare the two. That found a bunch of differences that led me into a vortex of hacking and rerunning. Eventually I had to admit that the whole approach wasn&#8217;t robust enough and I started to explore other ideas.</p>
<p>Some searching turned up <a href="http://search.cpan.org/perldoc?BackPAN::Version::Discover">BackPAN::Version::Discover</a> which is meant to &#8220;Figure out exactly which dist versions you have installed&#8221;. Perfect. Sadly it simply didn&#8217;t work well for me. Probably because it&#8217;s using a similarly flawed approach to my own.</p>
<p>I knew brian d foy&#8217;s <a href="http://blogs.perl.org/users/brian_d_foy/2011/03/recreating-a-perl-installation-with-mycpan.html">MyCPAN</a> project was working towards a similar goal. His approach required us to either run a large BackPAN indexing process or paying to license the data to offset his costs for doing so. That didn&#8217;t seem attractive.</p>
<p>I wondered about using <a href="https://github.com/gitpan">GitPAN</a> and the github API to match git blob hashes of local modules with files in the gitpan repos. Sadly GitPAN has fallen out of date and isn&#8217;t being maintained at the moment. With hindsight I&#8217;m thankful of that because it lead me to a better solution.</p>
<h2>MetaCPAN</h2>
<p><a href="http://metacpan.org/about">MetaCPAN</a> is full of awesome. On the surface it looks like another kind of search.cpan.org site. Don&#8217;t be fooled. Underneath is a vast repository of CPAN metadata powered by an <a href="http://www.elasticsearch.org/">ElasticSearch</a> distributed database (based on Lucene). How vast? Every file in every distribution on CPAN (<em>and</em>, critically for me, the BackPAN archive) has been indexed in great detail. Including details like the file size and which spans of lines are code and which are pod.</p>
<p>The cherry on the cake is the <a href="https://github.com/CPAN-API/cpan-api/wiki/Beta-API-docs">RESTful API</a> that provides full access to <a href="http://www.elasticsearch.org/guide/reference/query-dsl/">ElasticSearch query expressions</a>.</p>
<p>The key &#8220;lightbulb over head&#8221; moment came when I realized I could ask MetaCPAN to &#8220;<a href="http://explorer.metacpan.org/?url=%2Ffile&amp;content=%7B%22query%22%3A%7B%22filtered%22%3A%7B%22query%22%3A%7B%22match_all%22%3A%7B%7D%7D%2C%22filter%22%3A%7B%22and%22%3A%5B%7B%22term%22%3A%7B%22file.module.name%22%3A%22DBI%3A%3AProfile%22%7D%7D%2C%7B%22term%22%3A%7B%22file.module.version%22%3A%222.014123%22%7D%7D%5D%7D%7D%7D%2C%22fields%22%3A%5B%22release%22%5D%7D">find all releases that contain a particular version of a module</a>&#8220;. Bingo!</p>
<h2>The Method</h2>
<p>The next step was how to work out which of those candidates was the one actually installed. The key realization here was that I could use MetaCPAN to get version and file size info for all the modules in each candidate release and see how well they matched what was currently installed.</p>
<p>The whole process falls into several distinct phases&#8230;</p>
<p>The first phase finds the name, version, and file size of all the modules in the library being surveyed. (Taking care to handle an archlib nested within the main lib.)</p>
<p>Then, for every module it asks MetaCPAN for all the distribution releases that included that that module version. For rarely changed modules in frequently released distributions there might be many candidates, so it tries to limit the number of candidates by also matching the file size. This is especially helpful for modules that don&#8217;t have a version number.</p>
<p>Then, for every candidate distribution release, MetaCPAN is queried to get the modules in the release, along with their version numbers and file sizes. These are compared to the data it gathered about the locally installed modules to yield a &#8220;fraction installed&#8221; figure between 0 and 1. The candidates that share the highest fraction installed are returned.</p>
<p>Typically there&#8217;s just one candidate that has fraction installed of 1. A perfect match. Sometimes the fraction is less than 1 for various obscure but valid reasons. Sometimes life isn&#8217;t so simple. There may be multiple candidates that have the same highest fraction installed value. So the next phase attempts to narrow the choice from among the &#8220;best candidates&#8221; for each module. The results are gathered into a two level hash of distributions and candidate releases.</p>
<p>The final phase is the first to work in terms of distributions instead of modules. For each distribution it tries to choose among the candidate releases.</p>
<h2>The Results</h2>
<p>The method seems to work well. It identifies files with local changes. It deals gracefully with &#8216;remnant&#8217; modules that were included in an old release but not in later ones. And it copes with distributions that have been split into separate distributions.</p>
<p>It reports progress and anything unusual to stderr and writes the list of distributions to stdout. You should investigate anything that&#8217;s reported to ensure that the chosen distribution is the right one.</p>
<p>I checked the results by creating a new library (see below) and running <code>diff -r <em>old_lib new_lib</em></code>. I didn&#8217;t see any differences that I couldn&#8217;t account for.</p>
<p>The survey process is not fast. It can take a couple of hours on the first run for a large library. Most of that time is spent making MetaCPAN calls (<em>lots and lots</em> of MetaCPAN calls) so you&#8217;re dependent on network and MetaCPAN performance. Most of the calls are cached in an external file so later runs are much faster.</p>
<h2>Using The Results</h2>
<p>Using a list of distributions to recreate a library isn&#8217;t as straight-forward as it might seem. You can&#8217;t just give the list to <a href="http://search.cpan.org/perldoc?cpanm">cpanm</a> because it would try to install the <em>latest</em> version of any prerequisites. I looked at using &#8211;scandeps or topological sorting to reorder the list to put the prerequisites first. It didn&#8217;t work out. I also looked at using <a href="http://search.cpan.org/perldoc?mcpani">CPAN::Mini::Inject</a> (and <a href="http://search.cpan.org/dist/OrePAN/" target="_blank">OrePAN</a> and <a href="http://search.cpan.org/perldoc?Pinto" target="_blank">Pinto</a>) to create a local MiniCPAN for cpanm to fetch from. They didn&#8217;t work out either, for various reasons.</p>
<p>In the end I added a <code>--makecpan <em>dir</em></code> option so that the surveyor script itself would fetch the distributions and create a MiniCPAN for cpanm to use.</p>
<p>So now a typical initial run looks like this:</p>
<p><code>    dist_surveyor --makecpan my_cpan /some/perl/lib/dir &gt; installed_dists.txt</code></p>
<p>followed by building a new library from the results:</p>
<p><code>    cpanm --mirror file:$PWD/my_cpan --mirror-only -l new_lib &lt; installed_dists.txt</code></p>
<p>If you need to rebuild the library, perhaps due to test failures, then it&#8217;s <em>much</em> faster to use a list of modules to drive cpanm. Fortunately dist_surveyor writes one for you:</p>
<p><code>    cpanm --mirror file:$PWD/my_cpan --mirror-only -l new_lib &lt; my_cpan/dist_surveyor/token_packages.txt</code></p>
<h2>Testing Bonus</h2>
<p>Speaking of test failures, I was surprised to see how often tests failed due to problems with prerequisites even though the distribution and its prerequisites had passed their tests when originally installed. For example, imagine distribution A v1, and its prerequisite B v1 are installed. Later, distribution B gets upgraded to v2 but the tests for distribution A don&#8217;t get rerun.</p>
<p>Reinstalling all the distributions forces all distributions to be tested with the prerequisites that are actually being used.</p>
<h2>Presentation Slides</h2>
<p>I gave a lightning talk on Dist::Surveyor at the <a href="http://conferences.yapceurope.org/lpw2011/">2011 London Perl Workshop</a> (always a great event) and uploaded the <a href="http://www.slideshare.net/Tim.Bunce/perl-distsurveyor-2011">slides</a>.</p>
<h2>Source Code</h2>
<p>The <a href="https://github.com/timbunce/Dist-Surveyor">repository</a> is on github and I&#8217;ve made a <a href="http://search.cpan.org/dist/Dist-Surveyor/">release</a> to CPAN.</p>
<br />Filed under: <a href='http://blog.timbunce.org/category/tech/software/perl/'>perl</a> Tagged: <a href='http://blog.timbunce.org/tag/conference/'>conference</a>, <a href='http://blog.timbunce.org/tag/cpan/'>cpan</a>, <a href='http://blog.timbunce.org/tag/metacpan/'>metacpan</a>, <a href='http://blog.timbunce.org/tag/perl/'>perl</a>, <a href='http://blog.timbunce.org/tag/presentation/'>presentation</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/502/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=502&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2011/11/16/whats-actually-installed-in-that-perl-library/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>Screencasts from the Italian Perl Workshop 2009</title>
		<link>http://blog.timbunce.org/2010/05/31/screencasts-from-the-italian-perl-workshop-2009/</link>
		<comments>http://blog.timbunce.org/2010/05/31/screencasts-from-the-italian-perl-workshop-2009/#comments</comments>
		<pubDate>Mon, 31 May 2010 12:09:49 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[ipw09]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[yapc]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=381</guid>
		<description><![CDATA[I&#8217;ve just been updating the page where I keep links to my presentations and noticed that, not only had I not updated the section for the 2009 Italian Perl Workshop, but I hadn&#8217;t even uploaded the screencasts I&#8217;d made. So, with apologies for the delay, here&#8217;s my entry for IPW09, with the links to the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=381&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just been updating the page where I keep links to <a href="http://blog.timbunce.org/my-presentations/">my presentations</a> and noticed that, not only had I not updated the section for the 2009 Italian Perl Workshop, but I hadn&#8217;t even uploaded the screencasts I&#8217;d made.
</p>
<p>So, with apologies for the delay, here&#8217;s my entry for IPW09, with the links to the uploaded screencasts:
</p>
<blockquote><p>I&nbsp;<a href="http://blog.timbunce.org/2008/09/24/the-italian-perl-workshop/">had a great time</a> at IPW08 and was delighted to be invited back for IPW09, which was another great success. My contributions were two talks. The first was called &ldquo;<a href="http://conferences.yapceurope.org/ipw2009/talk/2366">DBI Oddmenti</a>&rdquo; and covered DBD::Gofer (16 minute&nbsp;<a href="http://blip.tv/file/3693768">screencast</a>), DBI::Profiler (7 minute&nbsp;<a href="http://blip.tv/file/3199117">screencast</a>), and DBDI a key component of a future DBI for Perl 6 (5 minute&nbsp;<a href="http://blip.tv/file/3693636">screencast</a>). The second was &ldquo;<a href="http://conferences.yapceurope.org/ipw2009/talk/2355">State-of-the-art Profiling with Devel::NYTProf</a>&rdquo; (40 minute&nbsp;<a href="http://blip.tv/file/2840795">screencast</a>).&#65279;</p>
<p>With 30 talks from 20 speakers on 2 tracks, IPW09 was another success for the <a href="http://www.perl.it/associazione/index.html">Italian Perl Association</a>, which was formally incorporated at the event. I&rsquo;m confident that <a href="http://conferences.yapceurope.org/ye2010/">YAPC::EU 2010</a> is in safe hands.
</p></blockquote>
<p>I&#8217;m really looking forward to YAPC::EU. We&#8217;re combining the conference with our family summer holiday. We&#8217;ll be staying in a cottage in the <a href="http://maps.google.co.uk/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=calci&amp;sll=53.800651,-4.064941&amp;sspn=16.889907,46.318359&amp;ie=UTF8&amp;hq=&amp;hnear=Calci+Pisa,+Tuscany,+Italy&amp;ll=43.723227,10.484734&amp;spn=0.161026,0.361862&amp;t=h&amp;z=12">village of Calci</a> a few miles outside Pisa.</p>
<br />Filed under: <a href='http://blog.timbunce.org/category/tech/software/perl/'>perl</a> Tagged: <a href='http://blog.timbunce.org/tag/ipw09/'>ipw09</a>, <a href='http://blog.timbunce.org/tag/presentation/'>presentation</a>, <a href='http://blog.timbunce.org/tag/yapc/'>yapc</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/381/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=381&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2010/05/31/screencasts-from-the-italian-perl-workshop-2009/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>Perl Myths and Mongers in Dublin</title>
		<link>http://blog.timbunce.org/2009/09/22/perl-myths-and-mongers-in-dublin/</link>
		<comments>http://blog.timbunce.org/2009/09/22/perl-myths-and-mongers-in-dublin/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 21:41:26 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[ireland]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[myths]]></category>
		<category><![CDATA[ossbarcamp]]></category>
		<category><![CDATA[perl6]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=339</guid>
		<description><![CDATA[Last weekend I went up to Dublin to speak at OSSBarcamp. I took the train from Limerick on Friday so I&#8217;d already be in Dublin the following morning, without having to get up at the crack of dawn. Dublin.pm Aidan Kehoe and I had a very small but interesting Dublin.pm meeting that night. Their first [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=339&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last weekend I went up to Dublin to speak at <a href="http://www.ossbarcamp.com/">OSSBarcamp</a>. I took the train from Limerick on Friday so I&#8217;d already be in Dublin the following morning, without having to get up at the crack of dawn.</p>
<h2>Dublin.pm</h2>
<p>Aidan Kehoe and I had a very small but interesting Dublin.pm meeting that night. Their first since 2004! Our wide-ranging discussions that night included me trying to understand what led Dublin.pm to flounder instead of flourish. I think a key factor was the (implicit?) expectation that members should make technical presentations.</p>
<p>Living in the west of Ireland there aren&#8217;t enough local Perl users (that I&#8217;ve found so far) to have a viable Perl Mongers group. So I setup the <a href="http://www.meetup.com/limerick-open-source/">Limerick Open Source</a> meetup instead.</p>
<p>Here&#8217;s what worked for us: We sit around in a quiet comfy hotel bar and chat. Naturally the chat tends towards the technical, and laptops are produced and turned around to illustrate a point or show results of a search, a chunk of video etc. There&#8217;s no set agenda, no declared topics, and no presentations. And yet, I think it&#8217;s fair to say, that everyone who&#8217;s come along has learnt interesting (albeit random) stuff.</p>
<p>I&#8217;d like to hear from perl mongers, in groups of all sizes, what kinds of balance between the social and technical aspects of Perl Mongers meetings works (or doesn&#8217;t work) for you.</p>
<h2>OSSBarcamp</h2>
<p>At OSSBarcamp I gave a ~15 minute &#8216;lightning talk&#8217; on Devel::NYTProf in the morning, and a ~50 minute talk on Perl Myths in the afternoon.</p>
<p>The Perl Myths talk was a major update to my <a href="http://www.slideshare.net/Tim.Bunce/perl-myths-200802">previous version</a>, now over 18 months old, incorporating lots of updated graphs and <a href="http://blog.timbunce.org/2009/08/13/help-me-update-my-perl-myths-talk-for-2009/">other fresh information</a>.</p>
<p>There is so much happy vibrant productive life in the Perl community that updating the presentation has been lovely experience. I keep having to revise the numbers on the slides upwards. There are lots of great graphs and they&#8217;re all going upwards too! (Many thanks to <a href="http://barbie.missbarbell.co.uk/">Barbie</a> for the great new graphs of CPAN stats.)</p>
<p>I&#8217;ve put a PDF of the slides, with notes, <a href="http://www.slideshare.net/Tim.Bunce/perl-myths-200909">on slideshare</a>. Best viewed full-screen or downloaded.</p>
<p>I made a screencast but I think I&#8217;ll hang on to that until after I give the same talk, updated again, at the <a href="http://conferences.yapceurope.org/ipw2009/">Italian Perl Workshop</a> (IPW09) in Pisa in October &mdash; I&#8217;m really looking forward to that! I&#8217;ll make another screencast there and decide then which to upload.</p>
<p>After OSSBarcamp last week, and before IPW09 in late October, I&#8217;ll be flying to Moscow, visa permitting, to give a talk at the <a href="http://www.highload.ru/">HighLoad++</a> (<a href="http://translate.google.com.au/translate?u=http%3A%2F%2Fwww.highload.ru&amp;sl=ru&amp;tl=en&amp;hl=en&amp;ie=UTF-8">translated</a>) conference. I&#8217;ve never been to Russia before so that&#8217;s going to be an amazing experience!</p>
<br />Posted in ireland, perl Tagged: conference, graphs, jobs, language, myths, ossbarcamp, perl6, presentation <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/339/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=339&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2009/09/22/perl-myths-and-mongers-in-dublin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>Perl in five sentences</title>
		<link>http://blog.timbunce.org/2009/09/10/perl-in-five-sentences/</link>
		<comments>http://blog.timbunce.org/2009/09/10/perl-in-five-sentences/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 12:00:54 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[myths]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=326</guid>
		<description><![CDATA[I just added a concluding slide to my updated Perl Myths talk. Having comprehensively debunked some myths with hard facts about perl and its ecosystem, I wanted to end with a slide that summarized some truths. I liked the slide text so much I wanted to share it with you: Perl: has a massive library [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=326&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just added a concluding slide to my updated Perl Myths talk. Having comprehensively debunked some myths with hard facts about perl and its ecosystem, I wanted to end with a slide that summarized some truths.</p>
<p>I liked the slide text so much I wanted to share it with you:</p>
<hr />
<p><strong><br />
<blockquote>
Perl:</p>
<p>has a massive library of reusable code<br />
has a culture of best practice and testing<br />
has a happy welcoming growing community<br />
has a great future in Perl 5 and Perl 6<br />
is a great language <em>for getting your job done</em><br />
&nbsp;&nbsp;&nbsp;&nbsp;for the last 20 years, and the next 20!</p></blockquote>
<p></strong></p>
<p>&nbsp;</p>
<hr />
<p>It would make more sense after seeing the talk, but I think it stands well on its own as a summary of Perl.</p>
<p></p>
<br />Posted in perl Tagged: myths, presentation <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/326/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=326&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2009/09/10/perl-in-five-sentences/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>Help me update my Perl Myths talk for 2009</title>
		<link>http://blog.timbunce.org/2009/08/13/help-me-update-my-perl-myths-talk-for-2009/</link>
		<comments>http://blog.timbunce.org/2009/08/13/help-me-update-my-perl-myths-talk-for-2009/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 15:21:18 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[myths]]></category>
		<category><![CDATA[perl6]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=306</guid>
		<description><![CDATA[I&#8217;m going to be speaking at the OSS BarCamp in Dublin in September. Given the likely audience I think my Perl Myths talk would be a good fit. It needs updating though, and that&#8217;s where you can help&#8230; It&#8217;s a strongly fact base talk with lots of graphs, numbers, and references. A lot has happened [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=306&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to be speaking at the <a href="http://www.ossbarcamp.com">OSS BarCamp</a> in Dublin in September. Given the likely audience I think my <a href="http://blog.timbunce.org/2008/03/08/perl-myths/">Perl Myths talk</a> would be a good fit.</p>
<p>It needs updating though, and that&#8217;s where <em>you can help</em>&#8230;<span id="more-306"></span></p>
<p>It&#8217;s a strongly fact base talk with lots of graphs, numbers, and references. A <em>lot</em> has happened in the Perl community since I wrote the talk over 18 months ago!</p>
<p>Lots of the information needs to be checked and updated. The <a href="http://blog.timbunce.org/2008/02/12/comparative-language-job-trend-graphs/">jobs graphs are easy</a>, as are the basic CPAN numbers.</p>
<p>I&#8217;d like to get updated versions of: the graph of CPAN uploads (slide 23), test counts for perl 5.10.1 (slide 44), the graph of cpan-testers reports (slide 47).</p>
<p>One item that&#8217;s not in the slides, which were written in Feb 2008, but is in <a href="http://blip.tv/file/1150746">the screencast</a> made later at OSCON (at 7:00) is the statement that &#8220;<em>One quarter of all CPAN distributions have been updated in the last 4 months! Half of all in the last 17 months!</em>&#8221; That&#8217;s an impressive and important statistic but it need updating. I think I got that from Schwern&#8217;s excellent &#8220;<a href="http://use.perl.org/~schwern/journal/36705">Perl is unDead</a>&#8221; talk, but I don&#8217;t know how he got the figures or, more importantly, how to update them. (And schwern.org seems down so I can&#8217;t get the <a href="http://schwern.org/~schwern/talks/Perl%20is%20unDead%20-%20YAPC-NA-2008.pdf">slides</a>.)</p>
<p>At OSCON I also talked about myths relating to Perl 6 (again, not in the old slides, but starting at 19:20 in the <a href="http://blip.tv/file/1150746">screencast</a>). I&#8217;d like to cover Perl 6 when I talk in Dublin in September, but the status of Parrot and Perl 6 has changed in the last 18 months even more than Perl 5. So I need help with good sources of hard data for Parrot and Perl 6, similar to what I have in the screencast but updated.</p>
<p>More generally, I&#8217;m also looking for new sources of information &mdash; hard data about the vigourous health of perl and its community. Have you seen any relevant talks/slides or blog posts you can recommend?</p>
<p>Can you help with any of the above?</p>
<p>Thank you in advance!</p>
<br />Posted in perl Tagged: myths, perl, perl6, presentation <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/306/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=306&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2009/08/13/help-me-update-my-perl-myths-talk-for-2009/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>NYTProf v3 &#8211; a sneak peak</title>
		<link>http://blog.timbunce.org/2009/08/07/nytprof-v3-a-sneak-peak/</link>
		<comments>http://blog.timbunce.org/2009/08/07/nytprof-v3-a-sneak-peak/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 02:12:49 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[nytprof]]></category>
		<category><![CDATA[oscon]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[slideshare]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=301</guid>
		<description><![CDATA[I&#8217;ve had a great week at OSCON. The talks are excellent but the real value is in the relationships formed and renewed in the &#8220;hallway track&#8221;. I&#8217;m honoured and humbled to be able to call many great people my friends. My talk on Devel::NYTProf seemed to go well. This year I covered not just NYTProf [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=301&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a great week at OSCON. The talks are excellent but the real value is in the relationships formed and renewed in the &#8220;hallway track&#8221;. I&#8217;m honoured and humbled to be able to call many great people my friends.</p>
<p>My <a href="http://en.oreilly.com/oscon2009/public/schedule/detail/7941">talk on Devel::NYTProf</a> seemed to go well. This year I covered not just NYTProf and the new features in v3 (not yet released) but also added a section on how to use NYTProf to optimize your perl code.</p>
<p>Here&#8217;s a quick summary, with links to the slides and screen-cast, and outline what&#8217;s still to be done before v3 gets released (getting closer by the day).<span id="more-301"></span>The first two-thirds of the talk covered general profiling topics and an overview of NYTProf v3. This was an updated and compressed version of the talk I gave last year.</p>
<p>The final third covered optimization techniques.</p>
<p>I began with stern warning against optimization unless there&#8217;s a clear need, followed by a selection of quotes, among which is the well known classic from <a href="http://en.wikipedia.org/wiki/Donald_Knuth">Donald Knuth</a>: &#8220;premature optimization is the root of all evil&#8221;. What few people remember is that that&#8217;s just a fragment of a more balanced statement:</p>
<blockquote><p><em>“We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. <strong>Yet we should not pass up our opportunities in that critical 3%.</strong>”</em></p></blockquote>
<p>After getting an implicit nod from Donald I quoted <a href="http://en.wikipedia.org/wiki/Rob_Pike">Rob Pike</a> on the importance of measurement:</p>
<blockquote><p><em>“Bottlenecks occur in surprising places, so don&#8217;t try to second guess and put in a speed hack until you have </em>proven<em> that&#8217;s where the bottleneck is.”</em></p></blockquote>
<p>Then I outlined the sequence of steps I usually take when performance profiling and optimizing code. These were grouped into three phases: &#8220;Low Hanging Fruit&#8221;, &#8220;Deeper Changes&#8221;, and &#8220;Structural Changes&#8221;.</p>
<p>I&#8217;ve generated a <a href="http://assets.en.oreilly.com/1/event/27/State-of-the-art%20Profiling%20with%20Devel__NYTProf%20Presentation.pdf">PDF of the slides</a> and made it <a href="http://www.slideshare.net/Tim.Bunce/develnytprof-200907">available on slideshare.net</a>. I&#8217;ve also uploaded <a href="http://blip.tv/file/2396942">the 45 minute screencast</a> to <a href="http://timbunce.blip.tv/">my blip.tv channel</a>.</p>
<p>Let me know if you find them useful.</p>
<hr />
p.s. This was originally a large post highlighting features of NYTProf v3. I hate talking about vapourware and with every day that passes the code is getting closer to being ready. In the end I decided to split the post in two. The shiny goodness in v3 will get its own blog post when it&#8217;s released. Meanwhile the slides and screencast will give you a sneak peek.</p>
<br />Posted in perl Tagged: conference, nytprof, oscon, presentation, slideshare, video <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/301/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=301&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2009/08/07/nytprof-v3-a-sneak-peak/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>The Italian Perl Workshop</title>
		<link>http://blog.timbunce.org/2008/09/24/the-italian-perl-workshop/</link>
		<comments>http://blog.timbunce.org/2008/09/24/the-italian-perl-workshop/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 12:56:03 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[myths]]></category>
		<category><![CDATA[nytprof]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=141</guid>
		<description><![CDATA[I spent a very pleasant few days in Pisa, Italy, last week. I&#8217;d been invited to speak at the Fourth Italian Perl Workshop. The workshop was a great success. In fact calling it a &#8220;workshop&#8221; is selling it short. It&#8217;s more of a mini-conference: &#8220;2 days of conference, 2 simultaneous tracks, more than 30 talks, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=141&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://timbunce.files.wordpress.com/2008/09/pisa-cathedral-wall.jpg?w=150&#038;h=320" alt="Pisa Cathedral Wall.jpg" border="0" width="150" height="320" align="right" />I spent a very pleasant few days in Pisa, Italy, last week. I&#8217;d been invited to speak at the <a href="http://conferences.yapceurope.org/ipw2008/">Fourth Italian Perl Workshop</a>. The workshop was a great success. In fact calling it a &#8220;workshop&#8221; is selling it short. It&#8217;s more of a mini-conference:</p>
<blockquote><p>&#8220;2 days of conference, 2 simultaneous tracks, more than 30 talks, 120 attendees, 20 sponsors and many international guests&#8221;</p></blockquote>
<p>The whole event ran very smoothly thanks to a great team lead by Gianni Ceccarelli, Francesco Nitido, and Enrico Sorcinelli. I&#8217;ll echo <a href="http://www.perl.it/blog/archives/000614.html">the compliments of one attendee</a> <em>&#8220;Complimenti sinceri agli organizzatori! Bravissimi! Tutto perfetto!</em>&#8220;</p>
<p>I gave short talk on Gofer on the Thursday, and then two 40 minutes talks on Friday: Perl Myths, and Devel::NYTProf. I hope to upload screencasts and slides next week. The talks were all recorded on video so I imagine they&#8217;ll be uploaded at some point. I&#8217;ll add links here to them when they are.</p>
<p>The majority of the sessions were in Italian so, since my Italian is practically non-existant, I had plenty of time to work.</p>
<p>Or at least try to. The one disappointment of the trip for me was the apparent poor quality of the Italian internet. Using <a href="http://en.wikipedia.org/wiki/Mtr_(My_traceroute)">mtr</a> I&#8217;d regularly see over 20% packet loss within <em>telecomitalia.it</em> and <em>interbusiness.it</em> from my hotel room. Occasionally over 50%. It got much better at night, so I&#8217;d do more work then. At the conference venue the Italian academic network (<em>garr.net</em>) also regularly had over 20% packet loss at its link to the internet. All this was, of course, outside the control of the organisers.</p>
<p>The &#8220;corridoor track&#8221; at perl conferences is always good. I had a chance to talk to Rafel Garcia-Suarez (and meet his lovely wife and new baby son), Matt S Trout, Hakim Cassimally, Michel Rodriguez,  Marcus Ramberg, and many others.</p>
<p>I had opted to take a very early fight so I&#8217;d have a day being a tourist in Pisa before the conference started. The weather was beautiful and I had a lovely time strolling though the streets of this ancient city.</p>
<div style="text-align:center;"><img src="http://timbunce.files.wordpress.com/2008/09/pisa-knights-square.jpg?w=640&#038;h=480" alt="Pisa Knights Square.jpg" border="0" width="640" height="480" /></div>
<p>I didn&#8217;t take my camera with me, but I did take my iPhone so I was able to capture a few snaps as I strolled around and climbed the tower. (Yes, it really does lean in a disconcerting &#8220;it must be about to fall down&#8221; way. All the more dramatic when you&#8217;re up close and can appreciate the massive scale of the tower.)</p>
<div style="text-align:center;">
<img src="http://timbunce.files.wordpress.com/2008/09/pisa-framed-view.jpg"/></p>
<p><img /></p>
<p><img src="http://timbunce.files.wordpress.com/2008/09/pisa-cathedral-ceiling.jpg"/></p>
<p><img src="http://timbunce.files.wordpress.com/2008/09/pisa-tower-steps.jpg"/></p>
<p><img src="http://timbunce.files.wordpress.com/2008/09/pisa-view-over-cathedral.jpg?w=640&#038;h=480" alt="Pisa View over Cathedral.jpg" border="0" width="640" height="480" />
</div>
<br />Posted in life, perl Tagged: conference, myths, nytprof, presentation, video <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/141/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=141&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2008/09/24/the-italian-perl-workshop/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>

		<media:content url="http://timbunce.files.wordpress.com/2008/09/pisa-cathedral-wall.jpg" medium="image">
			<media:title type="html">Pisa Cathedral Wall.jpg</media:title>
		</media:content>

		<media:content url="http://timbunce.files.wordpress.com/2008/09/pisa-knights-square.jpg" medium="image">
			<media:title type="html">Pisa Knights Square.jpg</media:title>
		</media:content>

		<media:content url="http://timbunce.files.wordpress.com/2008/09/pisa-framed-view.jpg" medium="image" />

		<media:content url="http://timbunce.files.wordpress.com/2008/09/pisa-cathedral-ceiling.jpg" medium="image" />

		<media:content url="http://timbunce.files.wordpress.com/2008/09/pisa-tower-steps.jpg" medium="image" />

		<media:content url="http://timbunce.files.wordpress.com/2008/09/pisa-view-over-cathedral.jpg" medium="image">
			<media:title type="html">Pisa View over Cathedral.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Hey, my own TV channel!</title>
		<link>http://blog.timbunce.org/2008/08/06/hey-my-own-tv-channel/</link>
		<comments>http://blog.timbunce.org/2008/08/06/hey-my-own-tv-channel/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 14:57:32 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[presenting]]></category>
		<category><![CDATA[slideshare]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=123</guid>
		<description><![CDATA[It felt strange when I first set up this blog. What would I write about? Who would care? For several years now I&#8217;ve been giving talks at conferences and workshops. I&#8217;d generally upload a PDF of the slides somewhere, or at least email them to anyone that asked. I&#8217;ve now added a special page on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=123&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It felt strange when I first <a href="http://blog.timbunce.org/2008/01/27/this-is-not-me/">set up this blog</a>. What would I write about? Who would care?</p>
<p>For several years now I&#8217;ve been giving talks at conferences and workshops. I&#8217;d generally upload a PDF of the slides somewhere, or at least email them to anyone that asked. I&#8217;ve now added a special page on the blog where I can list all the talks I&#8217;ve given. That now acts as a single location to <a href="http://blog.timbunce.org/my-presentations/">find all my talks</a> and links to slides any related materials. (It&#8217;s currently a work-in progress. I&#8217;ll be filling it in from time to time. Any major updates will be accompanied by a blog post.)</p>
<p>Slides, no matter how good, miss much of the real event. No ad-libs, no questions and answers. When writing slides I&#8217;m always caught between the desire write little, so the audience can pay attention to what I&#8217;m saying, and to write lots, so people reading the slides later still get a reasonably full picture.</p>
<p>There&#8217;s also the problem of notes. I often use &#8216;presenter notes&#8217; on the slides to give extra information. Both to myself, if I may need it while presenting, and also for links to data sources and credits for images used. I&#8217;ve uploaded <a href="http://www.slideshare.net/Tim.Bunce/slideshows">some talks to slideshare.net</a> but I have to include a separate version with notes (which is useful for download and print, but almost unreadable in their viewer.</p>
<p>I tried making a video of a talk on a camcorder. The results <a href="http://video.google.com/videoplay?docid=-8103133625772088658&amp;ei=ibaZSLqFLoiCiwL0_tDNDw&amp;q=tim+bunce">weren&#8217;t great</a>. Grainy, noisy, hard to read, and massive video files.</p>
<p>Then I decided to try using screencasting software. I bought a <a href="http://www.revolabs.com/products_wm/xtag.htm">great wireless USB microphone</a> and the amazing <a href="http://www.varasoftware.com/products/screenflow/">ScreenFlow</a> screencasting software. Now I can to capture <em>everything</em> in fine detail and edit it easily afterwards.</p>
<p>Great. Now what? I needed somewhere to host the (very large) videos. I looked around and tried a few, <a href="http://vimeo.com/1441518">like vimeo</a>, but wasn&#8217;t happy with the results. Vimo, for example, transcode to quite a low resolution and don&#8217;t let viewers download the original.</p>
<p>Eventually I found the wonder that is blip.tv. A whole laundry list of great features. If you produce videos of any kind, give them a look.</p>
<p>So, now I have <a href="http://timbunce.blip.tv/">my own TV channel</a>.</p>
<p>Strange world!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/timbunce.wordpress.com/123/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/timbunce.wordpress.com/123/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/123/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=123&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2008/08/06/hey-my-own-tv-channel/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>Perl Myths &#8211; OSCON 2008</title>
		<link>http://blog.timbunce.org/2008/07/30/perl-myths-oscon-2008/</link>
		<comments>http://blog.timbunce.org/2008/07/30/perl-myths-oscon-2008/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 12:23:17 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[perl6]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=85</guid>
		<description><![CDATA[I gave a updated version of my earlier Perl Myths talk at OSCON this year. It includes updated numbers, updated job trend graphs (showing good growth in perl jobs) and slides for the perl6 portion that were missing from the upload of the previous talk. Two versions of the slides are available: one with just the slides [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=85&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I gave a updated version of my <a href="http://blog.timbunce.org/2008/03/08/perl-myths/">earlier Perl Myths talk</a> at <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3242">OSCON this year</a>. It includes updated numbers, updated job trend graphs (showing good growth in perl jobs) and slides for the perl6 portion that were missing from the upload of the previous talk.</p>
<p>Two versions of the slides are available: one with just <a href="http://timbunce.files.wordpress.com/2008/07/perl-myths-200807key.pdf">the slides</a> on a landscape page, and another with <a href="http://timbunce.files.wordpress.com/2008/07/perl-myths-200807-noteskey.pdf">slides and notes</a> on a portrait page.</p>
<p>I also have a screencast of the presentation which I hope to edit and upload before long. (I&#8217;ll update this page and post a new note when I do.)</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/timbunce.wordpress.com/85/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/timbunce.wordpress.com/85/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=85&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2008/07/30/perl-myths-oscon-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>Interesting Items OSCON 2008 &#8211; Dealing with Streaming Data</title>
		<link>http://blog.timbunce.org/2008/07/20/interesting-items-oscon-2008-dealing-with-streaming-data/</link>
		<comments>http://blog.timbunce.org/2008/07/20/interesting-items-oscon-2008-dealing-with-streaming-data/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 23:04:30 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=77</guid>
		<description><![CDATA[This is a collection of links to things discussed, or just mentioned, at OSCON that I found interesting enough to note. Hopefully one of a series for OSCON 2008, as time allows. These items are from a great talk on &#8220;A Streaming Database&#8221; by Rafael J. Fernández-Moctezuma at PDXPUG day. Hancock is a C-based domain-specific [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=77&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is a collection of links to things discussed, or just mentioned, at OSCON that I found interesting enough to note. Hopefully one of a series for OSCON 2008, as time allows.</p>
<p>These items are from a great talk on &#8220;A Streaming Database&#8221; by <a href="http://web.cecs.pdx.edu/~rfernand/">Rafael J. Fernández-Moctezuma</a> at <a href="http://pugs.postgresql.org/pdxpugday">PDXPUG</a> day.</p>
<p><a href="http://www.research.att.com/~kfisher/hancock/">Hancock</a> is a C-based domain-specific language designed to make it easy to read, write, and maintain programs that manipulate large amounts of relatively uniform data. In addition to C constructs, Hancock provides domain-specific forms to facilitate large-scale data processing</p>
<p>The <a href="http://portal.acm.org/citation.cfm?id=1146463">CQL </a> continuous query language (<a href="http://www.google.com/search?client=safari&amp;rls=en-us&amp;q=cql+widom&amp;ie=UTF-8&amp;oe=UTF-8">google</a>)</p>
<p><a href="http://www.cs.brown.edu/research/borealis/public/"> Borealis </a> is a distributed stream processing engine. Borealis builds on previous efforts in the area of stream processing: Aurora and Medusa.</p>
<p><a href="http://research.microsoft.com/db/cedr/default.aspx">CEDR</a> is the Complex Event Detection and Response project from Microsoft Research.</p>
<p>Google <a href="http://google-opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html">Protocol Buffers</a> &#8220;allow you to define simple data structures in a special definition language, then compile them to produce classes to represent those structures in the language of your choice&#8221;.<br />
 Which seems like <a href="http://developers.facebook.com/thrift/">Thrift</a> which is &#8220;a software framework for scalable cross-language services development. It combines a powerful software stack with a code generation engine to build services that work efficiently and seamlessly between langauges&#8221;.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/timbunce.wordpress.com/77/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/timbunce.wordpress.com/77/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/77/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/77/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/77/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=77&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2008/07/20/interesting-items-oscon-2008-dealing-with-streaming-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>NYTProf v2 &#8211; A major advance in perl profilers</title>
		<link>http://blog.timbunce.org/2008/07/15/nytprof-v2-a-major-advance-in-perl-profilers/</link>
		<comments>http://blog.timbunce.org/2008/07/15/nytprof-v2-a-major-advance-in-perl-profilers/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 03:56:42 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[nytprof]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=52</guid>
		<description><![CDATA[After much hacking, and just in time for OSCON, I&#8217;m delighted to announce the release of Devel::NYTProf version 2. A powerful, efficient, feature-rich perl source code profiler. &#8220;If NYTProf 1 is a Toyota, then 2.0 is a Cadillac&#8221; — Adam Kaplan, author of NYTProf 1. The Short Story (I&#8217;ve written up the long story, for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=52&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After <em>much</em> hacking, and just in time for OSCON, I&#8217;m delighted to announce the release of Devel::NYTProf version 2. A powerful, efficient, feature-rich perl source code profiler.</p>
<blockquote><p>&#8220;If NYTProf 1 is a Toyota, then 2.0 is a Cadillac&#8221;<br />
— Adam Kaplan, author of NYTProf 1.</p></blockquote>
<h1>The Short Story</h1>
<p>(I&#8217;ve written up the long story, for the record, <a href="http://blog.timbunce.org/2008/07/16/nytprof-v2-the-background-story/">in another post</a>.)</p>
<p>Adam forked <a href="http://search.cpan.org/perldoc?Devel::FastProf">Devel::FastProf</a> (the best statement-level profiler at the time), added a test harness and tests, made some internal improvements, and grafted on an html report derived from <a href="http://search.cpan.org/perldoc?Devel::Cover">Devel::Cover</a>. The resulting Devel::NYTProf v1 was a big hit.</p>
<p>Meanwhile I&#8217;d been working on Devel::FastProf, <a href="http://code.google.com/p/devel-fastprof/source/list">contributing</a> some interesting new profiling features, but it had no test harness and no html reports. When Adam released NYTProf I switched. Attracted not so much by the html report as by the test harness. (A lesson to anyone wanting to attract developers to an open source project.)</p>
<p>I started out by adding in the same new features I&#8217;d been adding to FastProf, albeit with more polish and tests. And then I got carried away&#8230;</p>
<blockquote><p>&#8220;Holy shit! That is amazing.&#8221;<br />
— Andy Lester, after using a recent development version.</p></blockquote>
<h1>Example Screen Shots</h1>
<p>As an example I&#8217;ve used NYTProf to profile <a href="http://search.cpan.org/perldoc?perlcritic">perlcritic</a> 1.088 running on its own source code.</p>
<pre>$ cd Perl-Critic-1.088
$ perl -d:NYTProf -S perlcritic .
$ nytprofhtml
$ open nytprof/index.html</pre>
<p>The first image is the main index page, showing the top few subroutines and the start of the list of all source files.</p>
<div style="text-align:center;border:1px;"><img src="http://timbunce.files.wordpress.com/2008/07/nytprof-perlcritic-index.png?w=660&#038;h=749" border="1" alt="NYTProf perlcritic index.png" width="660" height="749" /></div>
<p>Each source file has links to separate line-level, block-level, and sub-level reports (though I hope to merge them in future). Clicking on a subroutine name takes you to the line-level report for the file it&#8217;s defined in and positions you at the subroutine definition.</p>
<p>(The color coding is based on <a href="http://en.wikipedia.org/wiki/Median_absolute_deviation">Median Absolute Deviation</a> of all the values in the column, same as in NYProf v1.)</p>
<p>Here&#8217;s the all_perl_files() subroutine, for example:</p>
<div style="text-align:center;"><img src="http://timbunce.files.wordpress.com/2008/07/nytprof-perlcritic-all-perl-files.png?w=663&#038;h=552" border="1" alt="NYTProf perlcritic all_perl_files.png" width="663" height="552" /></div>
<p>The colored numbers show the number of statements executed, the total time taken, and the average. The statement times are always <em>exclusive</em> times. Time actually spent <em>on</em> that statement, the expressions and any built-in functions it uses. It doesn&#8217;t include any time spent executing statements elsewhere in subroutines called by it. In NYTProf subroutine timings are inclusive and statement timings are exclusive.</p>
<h2>Where did you come from and where are you going?</h2>
<p>Notice the grey text.</p>
<p>On lines that <em>define</em> a subroutine NYTProf now adds &#8216;comments&#8217; giving the total number of times the sub was called, the inclusive time spent in that sub, and the average. Then it adds a break-down of the same details <em>for every location that called the subroutine</em>. Here&#8217;s a better example of that:</p>
<p><img src="http://timbunce.files.wordpress.com/2008/07/nytprof-sub-callers1.png?w=725&#038;h=137" border="0" alt="NYTProf sub-callers.png" width="725" height="137" /></p>
<p>On lines that <em>call</em> subroutines NYTProf now adds &#8216;comments&#8217; giving the name of the actual subroutines called (resolving code refs to subroutine names, including the class that handled a method call). It also tells you how many calls were made and how much time was spent in that subroutine <em>for calls made from that line</em>. Here&#8217;s an example:</p>
<p><img src="http://timbunce.files.wordpress.com/2008/07/nytprof-subs-called1.png?w=817&#038;h=106" border="0" alt="NYTProf subs-called.png" width="817" height="106" /></p>
<p>When you mouse-over the grey text it turns black and you can click on embedded links to take you to the callers or callees. <em>So with a few clicks you can run up and down the call stack exploring where the time is being spent and where the hot spots are being called from</em>. The ability to <em>explore</em> the code so easily, guided by these performance signposts is incredibly useful.</p>
<h2>Rolling up for a higher level view</h2>
<p>Sometimes per-statement timing can overwhelming. In large subroutines it becomes &#8220;hard to see the wood for the trees&#8221;. So, for the first time in any Perl profiler, NYTProf now provides a block-level view of the timing data:</p>
<div style="text-align:center;"><img src="http://timbunce.files.wordpress.com/2008/07/nytprof-perlcritic-all-perl-files-block-level.png?w=662&#038;h=552" border="1" alt="NYTProf perlcritic all_perl_files block level.png" width="662" height="552" /></div>
<p>What&#8217;s happening here is that NYTProf is taking the same time measurements per statement, but instead of accumulating the time against the line the statement is on, it accumulates it against the line of the first statement in the enclosing block. (The actual line it accumulates it against isn&#8217;t ideal in some cases. I&#8217;m hoping to improve that soon.)</p>
<p>This report is a little more tricky to read but can be very useful, especially in large subroutines. (I hope to improve the readability with some css :hover magic in future.)</p>
<p>The subroutine-level report is very similar except that all the timings are accumulated against line of the first statement in the subroutine.</p>
<h2>Have a Look</h2>
<p>Back in June I gave a talk at the <a>Irish Open Source Technology</a> conference where I showed the first version of the annotated html report (which I&#8217;d been hacking on till 3am the night before while struggling with a cold &#8211; presentations are great motivators). You can see the 15 minute video <a href="http://link.brightcove.com/services/link/bcpid1659850726/bctid1662507092">here</a> or <a href="http://idisk.mac.com/tim.bunce-Public/perl/NYTProf/NYTProf-200806c.mov">here</a>).</p>
<h2>Explore for yourself</h2>
<p>I&#8217;ve uploaded the full set of reports for you to explore <a href="http://idisk.mac.com/tim.bunce-Public/perl/NYTProf/nytprof-perlcritic-20080812/index.html" target="_new">here</a>. Take a look. Let me know what you think.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/timbunce.wordpress.com/52/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/timbunce.wordpress.com/52/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=52&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2008/07/15/nytprof-v2-a-major-advance-in-perl-profilers/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
<enclosure url="http://idisk.mac.com/tim.bunce-Public/perl/NYTProf/NYTProf-200806c.mov" length="56934512" type="video/quicktime" />
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>

		<media:content url="http://timbunce.files.wordpress.com/2008/07/nytprof-perlcritic-index.png" medium="image">
			<media:title type="html">NYTProf perlcritic index.png</media:title>
		</media:content>

		<media:content url="http://timbunce.files.wordpress.com/2008/07/nytprof-perlcritic-all-perl-files.png" medium="image">
			<media:title type="html">NYTProf perlcritic all_perl_files.png</media:title>
		</media:content>

		<media:content url="http://timbunce.files.wordpress.com/2008/07/nytprof-sub-callers1.png" medium="image">
			<media:title type="html">NYTProf sub-callers.png</media:title>
		</media:content>

		<media:content url="http://timbunce.files.wordpress.com/2008/07/nytprof-subs-called1.png" medium="image">
			<media:title type="html">NYTProf subs-called.png</media:title>
		</media:content>

		<media:content url="http://timbunce.files.wordpress.com/2008/07/nytprof-perlcritic-all-perl-files-block-level.png" medium="image">
			<media:title type="html">NYTProf perlcritic all_perl_files block level.png</media:title>
		</media:content>
	</item>
		<item>
		<title>Dynamic Languages Strike Back</title>
		<link>http://blog.timbunce.org/2008/05/14/dynamic-languages-strike-back/</link>
		<comments>http://blog.timbunce.org/2008/05/14/dynamic-languages-strike-back/#comments</comments>
		<pubDate>Wed, 14 May 2008 10:41:55 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[parrot]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=40</guid>
		<description><![CDATA[Just a quick note to echo Ovid and recommend Steve Yegge&#8217;s excellent talk on dynamic languages. Great talk, interesting perspective, good references. Well worth a read if you&#8217;re interested in the evolution and future of programming languages.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=40&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just a quick note to echo <a href="http://use.perl.org/~Ovid/journal/36391">Ovid</a> and recommend Steve Yegge&#8217;s excellent <a href="http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html">talk on dynamic languages</a>.</p>
<p>Great talk, interesting perspective, good references. Well worth a read if you&#8217;re interested in the evolution and future of programming languages.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/timbunce.wordpress.com/40/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/timbunce.wordpress.com/40/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=40&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2008/05/14/dynamic-languages-strike-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
		<item>
		<title>Perl and Parrot &#8211; Baseless Myths and Startling Realities</title>
		<link>http://blog.timbunce.org/2008/01/30/perl-and-parrot-baseless-myths-and-startling-realities/</link>
		<comments>http://blog.timbunce.org/2008/01/30/perl-and-parrot-baseless-myths-and-startling-realities/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 15:47:24 +0000</pubDate>
		<dc:creator>TimBunce</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://timbunce.wordpress.com/?p=6</guid>
		<description><![CDATA[  I was recently invited to speak at the Irish Web Technology Conference (26-29 May in Dublin). I&#8217;m used to preaching to the converted but this would be the first time I&#8217;ve spoken to a (presumably) more sceptical audience. I agreed speak but haven&#8217;t yet been asked to provide an abstract.   Around the same time I saw a call for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=6&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div> </div>
<div>I was recently invited to speak at the <a href="http://iwtc.firstport.ie">Irish Web Technology Conference</a> (26-29 May in Dublin). I&#8217;m used to <a href="http://conferences.oreillynet.com/cs/user/view/e_spkr/29">preaching to the converted</a> but this would be the first time I&#8217;ve spoken to a (presumably) more sceptical audience. I agreed speak <span class="Apple-style-span" style="text-decoration:line-through;">but haven&#8217;t yet been asked to provide an abstract</span>.</div>
<div> </div>
<div>Around the same time I saw a call for participation for <a href="http://2008.xtech.org">XTech</a> (6-9 May in Dublin). So I figured I&#8217;d submit a proposal. I&#8217;m guessing the audience would be similar so I could develop a single talk for both.</div>
<div> </div>
<div>Here&#8217;s what I came up with in the last hour before the deadline: </div>
<div><span class="Apple-style-span" style="font-family:'Trebuchet MS';font-size:14px;line-height:18px;">
<div style="background-image:initial;background-repeat:initial;background-attachment:initial;background-color:#ffffff;margin:18px 183px 0 8.5em;padding:10px 16px;">
<div style="margin:0;padding:0;"><b>Perl5</b>:
<ul>
<li>Perl5 isn&#8217;t the new kid on the block. Perl is 21 years old. Perl5 is 14 years old.</li>
<li>Perl5 hasn&#8217;t been generating buzz recently.</li>
<li>Perl5 has just been getting on with the job. Boring but true.</li>
<li>Lots of jobs, in fact. I&#8217;ll show you the surprising scale of the Perl jobs market.</li>
</ul>
<div style="margin:0;padding:0;"> </div>
<div style="margin:0;padding:0;"><b>Massive Module Market</b>:</div>
<ul>
<li>Vibrant developer community</li>
<li>Over 14,000 distributions (53,000 modules) with over 6,400 ‘owners’ (lead developers).</li>
<li>Thousands of releases per month to hundreds of modules.</li>
<li><span class="caps" style="margin:0;padding:0;">CPAN</span> has over 360 mirrors in 51 regions (TLDs)</li>
<li>Automated testing applied to all uploads by the <span class="caps" style="margin:0;padding:0;">CPAN</span> Testers Network: 61 different platforms and 20 different versions of Perl.</li>
<li>I&#8217;ll take you on a lightning tour.</li>
</ul>
<div style="margin:0;padding:0;"> </div>
<div style="margin:0;padding:0;"><b>Perl5.10</b>:</div>
<ul>
<li>Five years after Perl5.8, Perl5.10 is now out.</li>
<li>Packing a powerful punch for power users.</li>
<li>I&#8217;ll show you the highlights.</li>
</ul>
<div style="margin:0;padding:0;"> </div>
<div style="margin:0;padding:0;"><b>Parrot</b>:</div>
<ul>
<li>An advanced virtual machine for dynamic languages.</li>
<li>Advanced capabilities with blinding speed.</li>
<li>Already supports over 20 languages.</li>
<li>I&#8217;ll give you a quick overview.</li>
</ul>
<div style="margin:0;padding:0;"> </div>
<div style="margin:0;padding:0;"><b>Perl6</b>:</div>
<ul>
<li>A new generation of programming languages.</li>
<li>Advancing the state of the art in powerful practical languages.</li>
<li>A <i>specification</i> not an implementation.</li>
<li>Multiple implementations <i>exist already</i>.</li>
<li>Generating code for multiple backends: Parrot, Perl5, Lisp, JavaScript.</li>
<li>Sharing a common test suite of almost 20,000 tests.</li>
<li>Perl6 is written in the best language for the job: Perl6!</li>
<li>I&#8217;ll demonstrate Perl6 code for you.</li>
</ul>
<p style="font-family:'Trebuchet MS', Trebuchet, Arial, sans-serif;font-size:10.5pt;line-height:130%;margin:0.6em 0;padding:0;"><b>And I&#8217;ll do all this in 40 minutes. Fasten your seat-belts!</b></p>
</div>
</div>
<p> </span></div>
<div>The IWTC session is 75 minutes so I figure I can write a good presentation by the end of February for that and then distil the essence down to the 40 minute session I (hope to) have at XTech in May.</div>
<div> </div>
<div></div>
<div>I&#8217;d welcome any comments on the abstract. Especially anything worth saying, or ideally showing, to a relatively perl-sceptical audience.</div>
<div></div>
<div> </div>
<div>I don&#8217;t want to get into a  language comparison debate. Perl can stand on it&#8217;s own. But I do want to show that for any <span style="font-style:italic;" class="Apple-style-span">cool gizmo</span> that language Foo has, that Perl has something similar. An obvious example is &#8220;Ruby has Rails, Perl has Catalyst (and others)&#8221;. That&#8217;s easy to say but doesn&#8217;t carry much weight. For each of those I&#8217;d really like <span style="font-style:italic;" class="Apple-style-span">great example</span>.</div>
<div> </div>
<div></div>
<div>For Catalyst a big-name-web-site built using it would do. Other cool gizomos need other killer examples. Got any suggestions?</div>
<div> </div>
<div></div>
<div>Looking at it the other way, perl has a few cool gizmos that might be worth a mention if time allows: perltidy springs to mind. What others can you think of? And what parallels do they have in other languages?</div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/timbunce.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/timbunce.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/timbunce.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/timbunce.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/timbunce.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/timbunce.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/timbunce.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/timbunce.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/timbunce.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/timbunce.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/timbunce.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/timbunce.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/timbunce.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/timbunce.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/timbunce.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/timbunce.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.timbunce.org&amp;blog=2562816&amp;post=6&amp;subd=timbunce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.timbunce.org/2008/01/30/perl-and-parrot-baseless-myths-and-startling-realities/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf82705f5ab43c73273ab5d690866b3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">TimBunce</media:title>
		</media:content>
	</item>
	</channel>
</rss>
