<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Some Assembly Required &#187; Perl</title>
	<atom:link href="http://znark.com/blog/category/perl/feed/" rel="self" type="application/rss+xml" />
	<link>http://znark.com/blog</link>
	<description></description>
	<lastBuildDate>Sun, 05 Jul 2009 22:23:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>OSCON: Friday</title>
		<link>http://znark.com/blog/2007/07/oscon-friday/</link>
		<comments>http://znark.com/blog/2007/07/oscon-friday/#comments</comments>
		<pubDate>Sun, 29 Jul 2007 20:26:42 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Filesystems]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Parrot]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://znark.com/blog/2007/07/29/oscon-friday</guid>
		<description><![CDATA[On Friday, I made it to the morning keynotes. None of them were really informative but were entertaining and funny. I attended ZFS: Bringing Terabytes Under Control by Jay Edwards. He mainly talked about using ZFS on Solaris for large storage systems. The biggest advantage of ZFS is the nice management tools for creating pools [...]]]></description>
			<content:encoded><![CDATA[<p>On Friday, I made it to the morning keynotes.  None of them were really informative but were entertaining and funny.</p>

<p>I attended <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12312">ZFS: Bringing Terabytes Under Control</a> by Jay Edwards.  He mainly talked about using ZFS on Solaris for large storage systems.  The biggest advantage of ZFS is the nice management tools for creating pools and filesystems.  RAIDZ, which is RAID5 with tracking of which blocks need to be rebuilt, sounded neat.  The copy-on-write behavior which makes snapshots and clones easy sounded very useful.  He mentioned some of the problems between the impedance mismatch between smart ZFS and smart hardware.  ZFS assumes that the hardware is dumb and lies which causes performance problems with smart drive arrays.  </p>

<p>Next, I went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12967">Running Your Programming Language on Parrot</a> by chromiat and Patrick Michaud.  They talked about how to write parsers and compilers for Parrot using the Parrot Compiler Tools.  The tools make it easy to write a Parrot compiler for a language by doing a parse grammar and AST grammar to transform the source into an AST; the tools can produce PIR from the AST.  It sounded like the new tools are being used for more languages and should improve the progress in getting languages implemented on Parrot.</p>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2007/07/oscon-friday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON: Thursday</title>
		<link>http://znark.com/blog/2007/07/oscon-thursday/</link>
		<comments>http://znark.com/blog/2007/07/oscon-thursday/#comments</comments>
		<pubDate>Sun, 29 Jul 2007 20:18:25 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://znark.com/blog/2007/07/29/oscon-thursday</guid>
		<description><![CDATA[After staying up late on Wednesday night, I slept late on Thursday and missed the keynotes. I went to Matt Tucker&#8217;s talk on Jingle: Cutting Edge Open Source VoIP describing the Jingle extension to Jabber that allows voice chat and other multimedia. Jingle is the standardization of the Google Talk protocol for voice chat. One [...]]]></description>
			<content:encoded><![CDATA[<p>After staying up late on Wednesday night, I slept late on Thursday and missed the keynotes.  I went to Matt Tucker&#8217;s talk on <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13134">Jingle: Cutting Edge Open Source VoIP</a> describing the Jingle extension to Jabber that allows voice chat and other multimedia.  Jingle is the standardization of the Google Talk protocol for voice chat.  One thing that sounds good about Jingle is that it reuses the ICE, STUN, and RTP standards for making the connections through firewalls and NAT.  Jingle replaces SIP and SDP for the session setup with much nicer XML language.  It sounds like Jingle isn&#8217;t meant to replace SIP for making phone calls with hardware but instead to provide standard multimedia chat for instant messaging.</p>

<p>I skipped the next session talk and worked on my computer instead.  After lunch, I went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12961">Next Generation Version Control Systems</a> by Sam Villian.  He talked about <a href="http://bazaar-vcs.org/">bzr</a>, <a href="http://www.selenic.com/mercurial/wiki/">Mercurial</a>, and <a href="http://git.or.cz/">git</a>, the three modern distributed version control systems.  He talked about why distributed version control is better than centralized ones like Subversion.  I liked is distributed systems are more transactional with commits not relying on a server.  Also, these distributed systems are more descriptive and keep track of the DAG of the history instead of having to be told about merges and renames.  He also talked about how the distributed systems allow the stable development model with each change getting a branch that is merged into an always-stable branch when ready.  In comparing the systems, the main thing is that bzr is slow and doesn&#8217;t scale as well to large repositories.  git is harder to use and impossible to install on Windows.  It is really fast and produces compact repositories.  Mercurial sounded nice with a speed comparable to git while being easier to install and use.</p>

<p>Next, I went to Jesse Vincent&#8217;s talk on <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12963">Building Domain Specific Languages in Perl</a>.  He was talking about so-called internal DSLs where an easy-o=use dialect of Perl is used for a specific domain.  He mentioned a couple of tricks to persuade the Perl parser to support a simplified syntax including installing helper functions, using prototypes, and returning closures.  He mentioned a couple of DSLs that they had invented for <a href="http://jifty.org/">Jifty</a>: Jifty::DBI, Object::Declare, Template::Declare, and Jifty::Dispatcher.  Template::Declare was interesting since it is a templating system that instead of embedding code in text or using a special language just uses special Perl code with functions for HTML elements.  This allows refactoring and modularizing the templates like code.</p>

<p>Finally, I went to the <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/14166">Perl Lightning Talks</a>, a bunch of five minute long talks.  They are just long enough to advertise a project, perform a rant, give a brief summary of a longer talk, or sing a song. I remember some of the same talks from last year.  Some of the projects I bookmarked where <a href="http://developer.yahoo.com/yui/">Yahoo UI Library</a>, <a href="http://smtpd.develooper.com/">qpsmptd</a>, <a href="http://movemydata.org/">Move My Data</a>, <a href="http://search.cpan.org/dist/DashProfiler/">DashProfiler</a>, DBD::Grofer, and <a href="http://perlfoundation.org/perl5/">Perl 5 Wiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2007/07/oscon-thursday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON: Wednesday Morning</title>
		<link>http://znark.com/blog/2007/07/oscon-wednesday-morning/</link>
		<comments>http://znark.com/blog/2007/07/oscon-wednesday-morning/#comments</comments>
		<pubDate>Wed, 25 Jul 2007 22:46:42 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://znark.com/blog/2007/07/25/oscon-wednesday-morning</guid>
		<description><![CDATA[I am going to the OSCON sessions today and the rest of the week. I missed most of the keynotes this morning. I did Transactional Memory for Concurrent Programming by Simon Peyton-Jones and Haskell guy at Microsoft. He described the idea of transaction memory as the alternative to locking for concurrent programming. Transactional memory basically [...]]]></description>
			<content:encoded><![CDATA[<p>I am going to the OSCON sessions today and the rest of the week.  I missed most of the keynotes this morning.  I did <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/14017">Transactional Memory for Concurrent Programming</a> by Simon Peyton-Jones and Haskell guy at Microsoft.  He described the idea of transaction memory as the alternative to locking for concurrent programming.  Transactional memory basically wraps critical sections in atomic transactions.  It was somewhat interesting since Parrot is talking about using STM.  GHC is a Haskell implementation with STM.  He talked about how transactional memory requires blocking with retry and waiting until the memory read changes.  He also talked about how useful systems add choice which instead of blocking does an alternative.</p>

<p>I also went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12486">Performance Whack-a-Mole</a> by Josh Berkus.  He talked about how to solve database performance problems.  He gave a couple of rules to tracking the problems which he called moles.  Most problems are not really database problems and are at other levels of the stack.  Most slowdown is caused by a few big problems.  You can only see the worst problem which hides the others.  Different classes of apps have different performance problems.  Web apps tend to read heavy and have issues with connections and caching.  OLTP have locks, transactions, IO write problems.  Data warehousing has IO issues with bad queries.  He also talked about doing a baseline inspection for common problems, benchmarks, microbenchmarks, and profiling.</p>

<p>I also went to <a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13137">Care and Feeding of Large Web Applications</a> by Perre Harkins.  He talked about the issues dealing with deploying and releasing a large web application in Perl.  I was most interested in the system he described of installing CPAN modiules.  They have their own tool for deploying specific versions of modules.  He also mentioned automating database updates, simplying the configuration, testing, and doing version control and branches.</p>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2007/07/oscon-wednesday-morning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CPAN Black Hole</title>
		<link>http://znark.com/blog/2006/09/cpan-black-hole/</link>
		<comments>http://znark.com/blog/2006/09/cpan-black-hole/#comments</comments>
		<pubDate>Mon, 18 Sep 2006 01:28:00 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I hate CPAN maintainers who don&#8217;t respond to bugs. I have been putting in bugs for problems I find in various CPAN modules. For some, I have even put in patches which fix the bug. The result has been complete silence. I don&#8217;t expect maintainers to drop everything and fix the bug. I would hope [...]]]></description>
			<content:encoded><![CDATA[<p>I hate CPAN maintainers who don&#8217;t respond to bugs. I have been putting in bugs for problems I find in various CPAN modules. For some, I have even put in patches which fix the bug. The result has been complete silence.</p>

<p>I don&#8217;t expect maintainers to drop everything and fix the bug. I would hope that they would at least send an acknowledgement that they have seen the bug and might work on it. A snarky &#8220;that is not a bug but a feature&#8221;, &#8220;it has been fixed in the latest release&#8221;, or &#8220;you are an idiot, do this instead&#8221; is better than silence.</p>

<p>If you post a module to CPAN, you have an obligation to maintain it. I suspect fixing bugs is more beneficial to the community than writing new, cool stuff. Even if it is really boring. The user has an obligation to report bugs if they encounter them so the maintainer is not in the dark. One big advantage of open source is that the user can provide a fix or at least a test case. The maintainer&#8217;s responsiblity is to apply the patch if it is suitable. Not let it sit there gathering dust.</p>

<p>The best example is <a href="http://rt.cpan.org/Public/Bug/Display.html?id=27">bug 27</a>, a major limitation in URI which is only 5 years old. People have even provided patches.</p>

<p>Also posted at <a href="http://use.perl.org/~iburrell/journal/31032">use perl</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2006/09/cpan-black-hole/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVK on Fedora Extras</title>
		<link>http://znark.com/blog/2006/07/svk-on-fedora-extras/</link>
		<comments>http://znark.com/blog/2006/07/svk-on-fedora-extras/#comments</comments>
		<pubDate>Wed, 12 Jul 2006 03:11:31 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Over the weekend, I got the SVK version control system included in Fedora Extras. It is in the perl-SVK package. I also packaged up a bunch of its required Perl modules. I actually used svk for the spec files for the packages. It was very handy for synchronizing and merging changes between home and work [...]]]></description>
			<content:encoded><![CDATA[<p>Over the weekend, I got the <a href="http://svk.elixus.org/">SVK</a> version control system included in <a href="http://fedoraproject.org/wiki/Extras">Fedora Extras</a>.  It is in the perl-SVK package.  I also packaged up a bunch of its required Perl modules.</p>

<p>I actually used svk for the spec files for the packages.  It was very handy for synchronizing and merging changes between home and work using the repository at my ISP.  My repository doesn&#8217;t allow public changes but you can work the same way with any Subversion repository.</p>

<p>Setup the mirror:</p>

<pre><code>svk mirror http://znark.com/svn/repos //mirror/znark
</code></pre>

<p>Sync the mirror to the svk depot.</p>

<pre><code>svk sync //mirror/znark
</code></pre>

<p>Copy the mirror to local directory</p>

<pre><code>svk copy //mirror/znark/cpanbuild //cpanbuild
</code></pre>

<p>Checkout the local directory</p>

<pre><code>svk co //cpanbuild
cd cpanbuild
</code></pre>

<p>Make some changes and commit:</p>

<pre><code>svk ci
</code></pre>

<p>Push the changes to the repository:</p>

<pre><code>svk push
</code></pre>

<p>At another location, or after somebody else has made changes, I can do:</p>

<pre><code>svk sync //mirror/znark
svk pull
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2006/07/svk-on-fedora-extras/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pdx-pm and Mod_perl</title>
		<link>http://znark.com/blog/2005/08/pdx-pm-and-mod_perl/</link>
		<comments>http://znark.com/blog/2005/08/pdx-pm-and-mod_perl/#comments</comments>
		<pubDate>Mon, 08 Aug 2005 00:34:00 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[For a special meeting of Portland Perl Mongers on Friday, Stas Beckman talked about mod_perl 2.0. He talked for three hours and only went through probably half of his slides. He went quickly through the difference between modperl 1 and modperl 2 but he demonstrated a lot of the new modperl 2 API. He went [...]]]></description>
			<content:encoded><![CDATA[<p>For a special meeting of <a href="http://portland.pm.org">Portland Perl Mongers</a> on Friday, Stas Beckman talked about mod_perl 2.0.  He talked for three hours and only went through probably half of his slides.</p>

<p>He went quickly through the difference between mod<em>perl 1 and mod</em>perl 2 but he demonstrated a lot of the new mod<em>perl 2 API.  He went through most of the API, all the different stages and handlers that mod</em>perl can hook into.  </p>

<p>Some of the things he mentioned, like protocol handlers and filters can only be done with Apache 2 and mod<em>perl 2.  I suspect it would be possible to write an FTP, SMTP, or XMPP server in Perl using mod</em>perl 2.  I know people are doing things like that in C modules but I think it would be much easier to do in Perl.  The other interesting idea I had was to combine POE with mod_perl and use POE to help implement the protocol handlers.</p>

<p>Hopefully, now that mod<em>perl 2 is officially out that lots of systems will get ported.  I was hoping to hear how the Mason mod</em>perl 2 support was coming but Dave Rolsky left early.</p>

<p>The one thing missing from Apache 2 is some way to separate the Apache children by virtual host and run them as different users.  This would make mod<em>perl much more acceptable for ISPs which could isolate different users but still give them the performance and flexibility of mod</em>perl.  One big advantage of PHP is that it is easy to support shared hosting.</p>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2005/08/pdx-pm-and-mod_perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 3</title>
		<link>http://znark.com/blog/2005/08/oscon-3/</link>
		<comments>http://znark.com/blog/2005/08/oscon-3/#comments</comments>
		<pubDate>Mon, 08 Aug 2005 00:07:00 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I went to a day of sessions last Wednesday at OSCON. Here are the session I went to: Shtoom First, I went to talk by Anthony Baxter about shtoom, a SIP stack written in Python. As he explained multiple times, VOIP and SIP are complicated. Which makes writing a complete stack by himself even more [...]]]></description>
			<content:encoded><![CDATA[<p>I went to a day of sessions last Wednesday at OSCON.  Here are the session I went to:</p>

<h2>Shtoom</h2>

<p>First, I went to talk by Anthony Baxter about <a href="http://divmod.org/projects/shtoom">shtoom</a>, a SIP stack written in Python.  As he explained multiple times, VOIP and SIP are complicated.  Which makes writing a complete stack by himself even more amazing.  It also shows that Python and other interpreted languages are good enough (and much easier) to write demanding applications.</p>

<p>I definitely agree with his goal of having open source, interoperable VOIP so we can talk to anyone and do what we want.  On one hand, we have Skype which is free but proprietary.  On the other, we have the hardware phones which use SIP but can be locked down to certain providers and have proprietary extensions.</p>

<p>I saw Guido van Rossum, the creator of Python, at the talk.</p>

<h2>Big Databases</h2>

<p>The next session I went to was by Josh Berkus and Joe Conway talking about large data warehouses in PostgreSQL.  This is exactly what we do at work so the casen studies were quite useful.</p>

<p>The main thing I learned is that we should upgrade to Linux 2.6 and PostgreSQL 8.0 for x86_64.  It sounds like there is a big performance advantage.</p>

<p>I am really looking forward to PostgreSQL 8.1 which is going to have advances in table partitioning.</p>

<p>I was hoping for more useful stuff out of the talks I went to after lunch.  Especially since I learned later that there were other more interesting talks going on at the same time.</p>

<h2>Subversion</h2>

<p>I went to &#8220;From CVS to SVN&#8221; by Brian Fitzpatrick.  He mainly talked about the general issues of managing the migration.  He talked about the experiences of some projects, open source and commercial, in doing the migration.  I was hoping for more details about the technical aspects.  It did inspire me to move forward on getting my workplace to do the migration.  And what political issues to work on.</p>

<h2>Perl &amp; Unicode</h2>

<p>The next talk was Dan Kogai talking about Perl 5.8 and Unicode.  Unfortunately, it was a pretty boring talk.  It covered material which I had already gleaned from the documentation.  He did show some examples including actual code.  At work, we have been suffering doing Unicode with Perl 5.6.  Moving to Perl 5.8 sounds like the right solution.</p>

<h2>MapReduce</h2>

<p>Then I went to a talk by Doug Cutting talking about doing Scalable Computing with MapReduce.  The <a href="http://lucene.apache.org/nutch/">Nutch project</a>, is a search engine based on Lucene, written in Java.  They swiped the Gogogle File System and Map Reduce processing ideas to experiment with scalable indexing.  I originally though the presentation was going to be by someone from Google.  Seeing that an open source project had implemented Google&#8217;s ideas was just as interesting.  I was hoping to see more info on MapReduce but I guess I will have to read the Google papers.</p>

<h2>Rails History</h2>

<p>Finally, I went to a talk by the creator of Ruby on Rails talking about Extracting Rails from Basecamp.  It was mostly about the history of Rails and lessons learned about promoting and growing a project.  I was hoping for more technical details and a little humility about his limited experience.  Rails is exploding right now and it was useful to hear how he developed it as his first Ruby and open source project.</p>
]]></content:encoded>
			<wfw:commentRss>http://znark.com/blog/2005/08/oscon-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
