<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>House Absolute(ly Pointless)</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/" />
    <link rel="self" type="application/atom+xml" href="http://blog.urth.org/atom.xml" />
    <id>tag:blog.urth.org,2008-08-19://2</id>
    <updated>2012-01-18T16:09:34Z</updated>
    <subtitle>Unsubstantiated Opinions and Meaningless Blather</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.34-en</generator>

<entry>
    <title>▬▬▬▬▬▬▬▬▬▬▬▬▬▬</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2012/01/post.html" />
    <id>tag:blog.urth.org,2012://2.202</id>

    <published>2012-01-18T16:07:43Z</published>
    <updated>2012-01-18T16:09:34Z</updated>

    <summary>▬▬▬▬▬ ▬▬▬▬▬▬▬▬▬ ▬▬▬▬▬▬▬▬▬ ▬▬ ▬▬▬▬▬▬▬▬ ▬▬▬ ▬▬▬▬▬▬▬ ▬▬▬▬▬▬▬▬▬▬ ▬▬▬. ▬▬▬▬ ▬▬ ▬▬▬ ▬ ▬▬▬▬▬▬▬ ▬▬....</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p><a href="http://americancensorship.org/">▬▬▬▬▬ ▬▬▬▬▬▬▬▬▬ ▬▬▬▬▬▬▬▬▬ ▬▬ ▬▬▬▬▬▬▬▬ ▬▬▬ ▬▬▬▬▬▬▬ ▬▬▬▬▬▬▬▬▬▬ ▬▬▬</a>.</p>

<p><a href="http://americancensorship.org/">▬▬▬▬ ▬▬ ▬▬▬ ▬ ▬▬▬▬▬▬▬ ▬▬</a>.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Netflix Has the Weirdest Categories</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/12/netflix-has-the-weirdest-categories.html" />
    <id>tag:blog.urth.org,2011://2.201</id>

    <published>2011-12-27T18:40:56Z</published>
    <updated>2012-01-18T18:02:27Z</updated>

    <summary><![CDATA[I'm going through the Netflix movie rating interface right now rating films &amp; tv shows to try to improve my recommendations. Sometimes after you rate something it asks you how often you watch films of a certain category. Presumably the...]]></summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>I'm going through the Netflix movie rating interface right now rating films &amp; tv shows to try to improve my recommendations. Sometimes after you rate something it asks you how often you watch films of a certain category. Presumably the category the thing you just rated belonged to.</p>

<p>Some of the categories make sense, and some are completely insane. I can't figure out how they could possibly be useful in determining what I like. Some good examples ...</p>

<ul>
<li><p>Parks and Recreation - NBC TV Shows</p>

<p>I don't give a flying crap what network the show is on. I can think of several other categories it belongs to that seem more relevant (sitcom, documentary approach sitcom, etc.)</p></li>
<li><p>28 Days Later - Viral Plague Movies</p>

<p>Yes, I love those viral plague movies. But bacterial and fungal plague movies suck. Of course, what's really silly is that this is obviously a zombie movie, not a plague movie. The mechanism of zombiefication is really not all that relevant.</p></li>
<li><p>Evil Dead - Demon Movies</p>

<p>Not horror, not comedy horror, not indie horror. Demon movies. Yes, because horror movies with non-demon monsters are <em>so</em> different.</p></li>
<li><p>Lust, Caution - WWII Movies</p>

<p>Ok, yes, technically, this is a movie set during World War II. Of course, when people think of WWII movies they generally think of movies about American involvement in the war, or maybe at a stretch things that happened in Europe. This is a movie set in China, in Chinese, with Chinese actors. I suspect most people think of this as simply a foreign movie or a Chinese movie.</p></li>
<li><p>Religulous - Spiritual Documentaries</p>

<p>Uh, WTF?</p></li>
<li><p>The Blair Witch Project - Wilderness Survival Movies</p>

<p>Ok, yes, they're in the wilderness. And yes, they're trying to survive. But again, WTF?</p></li>
</ul>

<p>It seems like in many cases, they've identified some incidental feature of the thing in question and decided it is somehow meaningful.</p>

<p>Anyway, I'd love to hear comments from people who understand recommendation systems better. Do these categories actually make sense?</p>
]]>
        

    </content>
</entry>

<entry>
    <title>The Perl 5.15.6 Epigraph</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/12/the-perl-5156-epigraph.html" />
    <id>tag:blog.urth.org,2011://2.200</id>

    <published>2011-12-20T21:43:41Z</published>
    <updated>2011-12-20T22:09:38Z</updated>

    <summary>Today I had the privilege (or punishment?) of releasing Perl 5.15.6, the latest monthly dev release of Perl 5. Part of the Perl release tradition is to include an epigraph with each release. The epigraph is a quote of some...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>Today I had the privilege (or punishment?) of releasing Perl 5.15.6, the latest monthly dev release of Perl 5. Part of the Perl release tradition is to include an epigraph with each release. The epigraph is a quote of some sort that goes at the beginning of the release announcement.</p>

<p>I can't find the first epigraph but if I had to guess it must be a quote from Tolkien accompanying one of the releases Larry Wall did. The source code for Perl itself is liberally littered with Tolkien quotes.</p>

<p>One of the reasons I wanted to do a Perl release was to have an opportunity to choose my own epigraph (weird motivation, but true). I had a few criteria in mind.</p>

<p>First, I wanted to choose a writer I respected as a writer, something I'd want other people to read. Second, I wanted to pick a new author (not Tolkien ;). My first inclination was to find something in one of the Kushiel Trilogy books by <a href="http://www.jacquelinecarey.com/">Jacqueline Carey</a>, who is one my favorite authors, and probably not that well known in the Perl community.</p>

<p>One of the main themes in these books is love as a motivation for sacrifice. I think that the people who work on Perl are at least in part motivated by love. We have love for the language and for the community. We could all spend our time on other things like making more money, sleeping, or watching more TV, but we hack on Perl instead.</p>

<p>Unfortunately, finding a quote isn't all that easy. It's been a few years since I read the books, and I couldn't remember any particular piece off hand. I tried using Amazon's "look inside" feature, but I just couldn't find anything. I started browsing my bookshelves looking for something else.</p>

<p>It finally came down to a quote from Matt Ruff's <em>Set This House in Order</em> and the one I chose, from <em>A Wizard of Earthsea</em> by Ursula K. LeGuin. The Ruff quote was great, but it specifically refers to being born at age 26, and Perl just turned 24 (on December 18, 2011), so I thought that might be a little confusing. Maybe I can volunteer to release 5.19.6 in December of 2013.</p>

<p>The quote I did choose is:</p>

<blockquote>
  <p>Ged had thought that as the prentice of a great mage he would enter at once into the mystery and mastery of power. He would understand the language of the beasts and the speech of the leaves of the forest, he thought, and sway the winds with his word, and learn to change himself into any shape he wished. Maybe he and his master would run together as stags, or fly to Re Albi over the mountain on the wings of eagles.</p>

<p>But it was not so at all. They wandered, first down into the Vale and then gradually south and westward around the mountain, given lodging in little villages or spending the night out in the wilderness, like poor journeyman-sorcerers, or tinkers, or beggars. They entered no mysterious domain. Nothing happened. The mage's oaken staff that Ged had watched at first with eager dread was nothing but a stout staff to walk with. Three days went by and four days went by and still Ogion had not spoken a single charm in Ged's hearing, and had not taught him a single name or rune or spell.</p>
</blockquote>

<p>I think this quote works on several levels. First, it reflects the difficulty of hacking on the Perl core's C code. It's some serious magic, and you won't become a great mage all at once. Second, this same dynamic of slow learning applies to programming in general. It seems like great magic, and you wish you could master it all at once, but it takes quite some time before you've figured it out. This is actually one of the themes of all the Earthsea books, that mastery takes a long time, and that maybe you never really become a master. Instead, you just learn clearly how little you actually understand.</p>

<p>I feel like this with programming all the time. Even if I felt like I really "got it" I can always look back at my work a year later and see just how clearly I didn't "get it" at all.</p>

<p>Unfortunately, choosing Ursula K. LeGuin probably doesn't satisfy my desire to pick someone who might be new to people in the Perl community. Oh well, maybe next time!</p>

<p>I hope that in the future other Perl release managers will write blog entries similar to this one explaining the quotes they chose. I'm always curious what the quotes mean to the person doing the release, although occasionally they're quite straightforward. I added an entry to the Perl Release Manager's Guide asking folks to blog about their epigraph after the release.</p>

<p>Here's looking forward to Perl 5.15.7 (and it's accompanying blog entry).</p>
]]>
        

    </content>
</entry>

<entry>
    <title>VegGuide Needs a New Host</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/12/vegguide-needs-a-new-host.html" />
    <id>tag:blog.urth.org,2011://2.198</id>

    <published>2011-12-13T18:11:17Z</published>
    <updated>2011-12-13T20:08:26Z</updated>

    <summary>For many years, the VegGuide site has been hosted for free at Xmission, courtesy of Eric Waters. Eric has recently moved to a new position and is no longer at Xmission, so it&apos;s time for us to find a new...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="AR-Veg" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>For many years, the <a href="http://vegguide.org">VegGuide</a> site has been hosted for free at <a href="http://xmission.com">Xmission</a>, courtesy of Eric Waters. Eric has recently moved to a new position and is no longer at Xmission, so it's time for us to find a new host.</p>

<p><strong>Update</strong>: The site is owned by my animal rights group, <a href="http://www.exploreveg.org">Compassionate Action for Animals</a>, and we are a 501(c)(3) non profit organization.</p>

<p>If anyone in the lights of these pixels could offer free or cheap hosting for this site, please <a href="mailto:dave@exploreveg.org">let me know</a>.</p>

<p>The site needs a dedicated host, either real or virtual, with at least 1.5GB of memory and 20GB of disk space. It's bandwidth use is fairly modest, approximately 800MB of outgoing traffic per day at the moment (around 24GB per month). Incoming traffic is about half of that. However, we'd like room to grow in that regard, as I'm hoping we'll be able to increase usage over the next couple years.</p>

<p>We can take care of all the sysadmin bits, so all we need to start is a box running Ubuntu Hardy and the site will be good to go.</p>

<p>Thanks again to Eric and Xmission for hosting the site gratis all these years.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Compact &quot;with-ish&quot; statement for CoffeeScript</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/12/compact-with-ish-statement-for-coffeescript.html" />
    <id>tag:blog.urth.org,2011://2.197</id>

    <published>2011-12-11T16:57:41Z</published>
    <updated>2011-12-11T17:16:00Z</updated>

    <summary>I&apos;ve been playing with CoffeeScript (CS) lately, and I really like it. JavaScript (JS) is full of annoyances that make coding more tedious and error-prone that it needs to be. CofeeScript does a good job of fixing many of those...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>I've been playing with <a href="http://jashkenas.github.com/coffee-script">CoffeeScript</a> (CS) lately, and I really like it. JavaScript (JS) is full of annoyances that make coding more tedious and error-prone that it needs to be. CofeeScript does a good job of fixing many of those annoyances.</p>

<p>CS doesn't provide anything like JS's <code>with</code> block. That makes sense, because <code>with</code> in JS is completely insane and broken. But sometimes you want to be able to say "given this object, call a bunch of methods on it". You can of course write something like this:</p>

<pre><code>foo = new Foo
foo.bar(42)
foo.baz(84, "x")
</code></pre>

<p>Or in CS:</p>

<pre><code>foo = new Foo
foo.bar 42
foo.baz 84, "x"
</code></pre>

<p>If you want a more Dee Ess Ell style, you can reach for this in JS:</p>

<pre><code>foo = new Foo
with (foo) {
    bar(42)
    baz(84, "x")
}
</code></pre>

<p>In typical JS fashion, <code>with</code> is a nightmare. Douglas Crockford has a <a href="http://www.yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/">good write up on why it's broken</a>.</p>

<p>The other alternative in JS is to use method chaining:</p>

<pre><code>foo = new Foo
foo
    .bar(42)
    .baz(84, "x")
</code></pre>

<p>Unfortunately, because of CS's parsing rules, method chaining is kind of fugly, requiring explicit parentheses. Also, method chaining requires explicit cooperation from the methods being called.</p>

<p>So I came up with this alternative in CS:</p>

<pre><code>foo = new Foo
(-&gt;
  @bar 42
  @baz 84, "x"
).call foo
</code></pre>

<p>This creates an anonymous function and then invokes the <code>Function.call</code> method on it. The <code>call</code> method takes its first argument and makes it the method's invocant, so inside the function <code>this</code> is now equal to that argument (<code>foo</code> in the example above).</p>

<p>I think this syntax could make for a nice alternative to method chaining when you want to call methods on the same object repeatedly. The only thing I don't like is that the invocant ends up at the end of the block. I really wish I could write something like this:</p>

<pre><code>foo = new Foo
using foo -&gt;
  @bar 42
  @baz 84, "x"
</code></pre>

<p>I could get pretty close by defining my own <code>using</code> function:</p>

<pre><code>using = (invocant, method) -&gt; method.call invocant

foo = new Foo
using foo, -&gt;
  @bar 42
  @baz 84, "x"
</code></pre>

<p>But then I need to have that function around everywhere I want to use it, which is a hassle. For now, I think I'll try using the <code>(anon).call</code> version and see how I like it.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>I&apos;m Sorry I Dropped Your Comment</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/10/im-sorry-i-dropped-your-comment.html" />
    <id>tag:blog.urth.org,2011://2.196</id>

    <published>2011-10-03T16:21:17Z</published>
    <updated>2011-10-03T16:25:46Z</updated>

    <summary>My blog has been getting absolutely flooded with spam recently (c. 4,000+ in the last few days), and I&apos;ve accidentally sent some legit comments to the great spam filter in the sky. The various spam plugins I have caught the...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>My blog has been getting absolutely flooded with spam recently (c. 4,000+ in the last few days), and I've accidentally sent some legit comments to the great spam filter in the sky. The various spam plugins I have caught the vast majority, but that still left a few dozen a day for me to review.</p>

<p>My general policy is to approve all comments, even the obnoxious trolling stuff that follows any mention of a code of conduct. So if you submitted a comment and it didn't show up, I'm sorry about that.</p>

<p>Just now, I found three legit comments on my last post I'd accidentally spam-bucketed. I've now published them, but anything on older posts is long gone.</p>

<p>You'll notice I've added a captcha form to the comments. It's annoying, but it should slow down the spam, I hope.</p>

<p>If I dropped a comment of yours, feel free to re-submit it, and I will approve it soon.</p>

<p>Also, note that if you log in with an OpenID login (or some other authentication method), your comment is automatically approved.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Why Do People Use the System Perl?</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/10/why-do-people-use-the-system-perl.html" />
    <id>tag:blog.urth.org,2011://2.195</id>

    <published>2011-10-01T18:18:15Z</published>
    <updated>2011-12-23T19:40:40Z</updated>

    <summary>Recently on the perl5-porters list, there have been several discussions about backwards compatibility and the future of Perl 5. Jesse&apos;s plan is interesting, and in theory sounds like a good idea. Unfortunately, it brings up some incredibly thorny issues and...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>Recently on the perl5-porters list, there have been <a href="http://grokbase.com/t/perl.org/perl5-porters/2011/09/perl-5-16-and-beyond/12qfeajm3t2egq4hi7cvfczrxwke">several</a> <a href="http://www.nntp.perl.org/group/perl.perl5.porters/2011/09/msg177798.html">discussions</a> about backwards compatibility and the future of Perl 5.</p>

<p><a href="http://grokbase.com/t/perl.org/perl5-porters/2011/09/perl-5-16-and-beyond/12qfeajm3t2egq4hi7cvfczrxwke">Jesse's plan</a> is interesting, and in theory sounds like a good idea. Unfortunately, it brings up some incredibly thorny issues and may not be technically possible. Even if it is possible, it's likely that lexically preserving backwards compatibility will not work for every proposed feature.</p>

<p>This is an old discussion. The p5p list has been debating backwards compatibility versus evolution for years.</p>

<p>One thing that keeps coming up is that backwards compatibility is important for people who are using their system-installed Perl. If they upgrade from RHEL 5 to 6, they'll move from Perl 5.8.8 to 5.10.1, and they can't really avoid that. People who are stuck in this situation are very concerned about backwards compatibility.</p>

<p>I'm not very sympathetic to this view. You have an uncontrolled dependency in your system, and you expect the maintainers of said dependency to essentially keep your code working for free. But my sympathy is irrelevant, because I'm not in charge. I don't think p5p as w whole (or Jesse as a one) will ever tell these users to just deal with breakage.</p>

<p>All of this leads up to the title of this entry. Why do people use the system Perl? Well, answer number one is that it's really convenient. Perl is already there, so why not use it?</p>

<p>If we can make it easier to <em>not</em> use the system Perl, maybe we'll feel a little freer to (very slowly) break backwards compatibility. We already have <a href="http://www.perlbrew.pl/">perlbrew</a>, which is a great tool for development, especially when you need to test code with more than one version of Perl.</p>

<p>I've seen some people suggest that somehow perlbrew can replace the system Perl for an application, but I don't follow that logic. If I'm running an app across thirty servers, do you seriously expect me to run "perlbrew install perl-5.14.2" on each one? That's nuts. Package systems were invented for a reason.</p>

<p>Wouldn't it be cool if we (as a community) provided a set of "official perl.org" packages of Perl. After all, we're programmers, and this is a task that's ripe for automation. These packages would install under some location like "/opt/perl-5.14.2". For each version, we might provide both threaded and non-threaded versions.</p>

<p>Being able to keep a consistent Perl version across system upgrades will prevent the "I upgraded my OS and all my Perl code broke" problem. As a bonus, this might also make it easier for people to upgrade Perl <em>more quickly</em> if they want to. Not being tied to the system Perl is good for people who want stability <em>and</em> people who want to upgrade faster.</p>

<p>Putting this on perl.org and calling it official is an important part of this plan, since many sysadmins are rightly suspicious of random packages found on some random dude's website.</p>

<p>What do people think?</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Visiting Chicago in November</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/09/visiting-chicago-in-november.html" />
    <id>tag:blog.urth.org,2011://2.194</id>

    <published>2011-09-25T20:15:27Z</published>
    <updated>2011-09-25T20:19:58Z</updated>

    <summary>I&apos;m going to be in Chicago for Chicago VeganMania on Saturday, November 5. I&apos;ll be arriving late afternoon on Thursday, November 3, and leaving in the afternoon on Sunday, November 6. I&apos;ll be pretty busy, so I can&apos;t promise to...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="AR-Veg" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Personal" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>I'm going to be in Chicago for <a href="http://chicagoveganmani.com">Chicago VeganMania</a> on Saturday, November 5. I'll be arriving late afternoon on Thursday, November 3, and leaving in the afternoon on Sunday, November 6.</p>

<p>I'll be pretty busy, so I can't promise to get together with everyone or anyone, but <a href="mailto:autarch@urth.org">ping me</a> via email if you want to get together and I'll get back to you once I have a better sense of my schedule.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>No Moose Class at the Pittsburgh Perl Workshop</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/09/no-moose-class-at-the-pittsburgh-perl-workshop.html" />
    <id>tag:blog.urth.org,2011://2.193</id>

    <published>2011-09-23T15:57:27Z</published>
    <updated>2011-09-23T16:28:34Z</updated>

    <summary>I won&apos;t be at PPW this year, and thus the Moose class won&apos;t be happening. I apologize to anyone who signed up for the Moose class, though last I heard that was just one person, which is the main reason...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>I won't be at PPW this year, and thus the Moose class won't be happening. I apologize to anyone who signed up for the Moose class, though last I heard that was just one person, which is the main reason the class isn't happening.</p>

<p>I think the upshot of this is that announcing a <em>possible</em> class isn't a good idea. All this does is create uncertainty for potential students and discourage signups. In the future, there's a couple things conference organizers and I can do to make this class (or any class) more successful.</p>

<p>First, just announce the class. Don't say it'll only happen if only X people sign up. The option to cancel for lack of signups is always available.</p>

<p>Second, the class needs a concrete date and time well in advance. I suspect that part of the reason people didn't sign up for the Moose class is that they wanted to see what it would conflict with first. Would you want to miss Damian to come to my class? Hell, <em>I'd</em> rather see Damian than come to my class!</p>

<p>Even if the whole schedule isn't ready, things like classes and major keynotes should be scheduled at least two months in advance.</p>

<p>As a corrolary, organizers need to know how long the class takes well in advance. I didn't communicate that clearly to the PPW folks. For the record, the Moose class needs around 6 to 6.5 hours of class time, excluding lunch.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>My New OO Docs for the Perl Core Have Been Merged</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/09/my-new-oo-docs-for-the-perl-core-have-been-merged.html" />
    <id>tag:blog.urth.org,2011://2.192</id>

    <published>2011-09-14T23:59:19Z</published>
    <updated>2011-09-15T00:44:46Z</updated>

    <summary>Back in March, I mentioned that I was working on a new OO tutorial for the Perl 5 core. I&apos;ve been working this intermittently over the last eight months or so, with lots of useful feedback from the perl5-porters. Along...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>Back in March, I mentioned that I was <a href="http://blog.urth.org/2011/03/what-makes-for-a-perfect-oo-tutorial-example.html">working on a new OO tutorial for the Perl 5 core</a>. I've been working this intermittently over the last eight months or so, with lots of useful feedback from the perl5-porters. Along the way, the project grew to include a rewrite of the perlobj document, the reference document for Perl OO.</p>

<p>I'm happy to say that as of last week, all of my work has been merged into the blead branch of core, and will be in the next release of Perl.</p>

<p>Here's what I did ...</p>

<p>We now have an entirely <a href="https://github.com/mirrors/perl/blob/blead/pod/perlootut.pod">new OO tutorial</a>. This tutorial has two parts. The first is an introduction to OO <em>concepts</em>. Some people may come to Perl without a background in another OO language, so defining basic concepts is important. This part defines these concepts in terms of how Perl implements them, so even if the reader has some OO background, skimming this section will still be useful.</p>

<p>The second half introduces three OO systems from CPAN and gives short examples of how to use each one. In 2011, it just doesn't make any sense to tell people how to roll their own OO code in a tutorial. The systems I wrote about are Moose, Class::Accessor, and Object::Tiny. I also mention Role::Tiny, since roles are awesome, and you shouldn't have to use Moose to use roles.</p>

<p>When I merged this tutorial, I deleted all the old tutorials. Those were <a href="http://perldoc.perl.org/perltoot.html">perltoot (Tom's object-oriented tutorial for perl)</a>, <a href="http://perldoc.perl.org/perltooc.html">perltooc (Tom's OO Tutorial for Class Data in Perl)</a>, <a href="http://perldoc.perl.org/perlboot.html">perlboot (Beginner's Object-Oriented Tutorial)</a>. I also removed <a href="http://perldoc.perl.org/perlbot.html">perlbot (Bag o' Object Tricks (the BOT))</a>. All of these were extremely outdated and contained a number of dubious recommendations.</p>

<p>Don't take this as a criticism of Tom, Randal, or other people who worked hard on those docs. They were great when they were written, but the state of the art in Perl OO has changed <em>a lot</em> in the past 10-15 years. If Perl 5 is still in use 10 years from now, someone will be deleting my tutorial then!</p>

<p>I also revised <a href="https://github.com/mirrors/perl/blob/blead/pod/perlobj.pod">perlobj</a>. Some of the old content remains, but it has been rewritten, reordered, and expanded. I hope that it is now a 100% complete reference to core Perl OO features.</p>

<p>If anyone reading this has any constructive feedback on these docs, I'd love to hear it. I really want to get these new docs into excellent shape before Perl 5.16 ships in spring of 2012.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Conference Code of Conduct Considered Crucial</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/09/conference-code-of-conduct-considered-crucial.html" />
    <id>tag:blog.urth.org,2011://2.191</id>

    <published>2011-09-06T02:04:51Z</published>
    <updated>2011-09-06T20:00:17Z</updated>

    <summary>I&apos;ve decided to follow Jacob Kaplan-Moss&apos;s lead and pledge that I won&apos;t speak (or attend) any conference that does not publish an acceptable (to me) code of conduct/anti-harassment policy. I&apos;ve already written about what should go into such a code,...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>I've decided to follow <a href="http://jacobian.org/writing/codes-of-conduct/">Jacob Kaplan-Moss's lead</a> and pledge that I won't speak (or attend) any conference that does not publish an acceptable (to me) code of conduct/anti-harassment policy. I've already written about <a href="http://blog.urth.org/2011/08/conference-code-of-conduct-considerations.html">what should go into such a code</a>, and I think Jacob's post makes a number of good points on why a policy is important.</p>

<p>What would a code need for me to consider it acceptable?</p>

<p>First, it needs to define acceptable conduct. The <a href="http://www.yapc2011.us/yn2011/conduct.html">Reasonable Person Principle</a> section from the YAPC 2011 code is good, but something much simpler is fine too. In fact, I'm fine with something as simple as "we expect all conference attendees to treat each with respect".</p>

<p>The policy should outline some explicitly unacceptable behaviors. This needs to be there for the benefit of people who are clueless. At a minimum, this should forbid sexual imagery in slides, unwanted sexual attention (or maybe just unwanted attention), and verbal abuse. If the conference has exhibitors, it should also forbid sexualized imagery and clothing for exhibitors (in other words, no booth babes). The <a href="http://geekfeminism.wikia.com/wiki/Conference_anti-harassment_policy">example anti-harassment policy</a> in the Geek Feminism Wiki lists more unacceptable behaviors, and that's probably a good list to copy. But really, my concern isn't that the policy have exactly the right list, just that there is some effort to outline the most egregious unacceptable behaviors.</p>

<p>It doesn't hurt to say something about what the penalties for violating the policy might be, but I don't think that's critical. The existence of a policy implies that violators may be ejected from the conference at the discretion of the organizers.</p>

<p>Finally, it needs to include an explicit reporting procedure that includes a way for attendees to report incidents via phone and/or email. In other words, there needs to be a way for people to report incidents without finding a conference organizer in person (which may not always be easy enough to do).</p>

<p>Ideally, I'd also want to see an internal policy for conference staff and volunteers that gives some guidelines on how to handle these incidents.</p>

<p>I don't expect my declaration to cause a problem for any future Perl events I'd want to attend. The last few conferences I've attended have had some sort of policy, and I expect these to become much more common in the future.</p>

<p>If you're also a frequent speaker (or infrequent, or not a speaker at all) at Perl events (or non-Perl events), please consider joining me in this pledge.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>My Code is Now Mirrored on GitHub</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/08/my-code-is-now-mirrored-on-github.html" />
    <id>tag:blog.urth.org,2011://2.190</id>

    <published>2011-08-30T17:09:41Z</published>
    <updated>2011-08-30T17:12:25Z</updated>

    <summary>Per the request of various folks, all of my code is now mirrored on GitHub. I&apos;m still pushing to my personal server, but I&apos;ve set up hooks to then mirror to GitHub. I&apos;ll be happy to accept patches via a...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>Per the request of various folks, all of my code is now mirrored on <a href="https://github.com/autarch">GitHub</a>. I'm still pushing to my <a href="http://git.urth.org">personal server</a>, but I've set up hooks to then mirror to GitHub. I'll be happy to accept patches via a github repo and/or pull request.</p>

<p>I wrote some code to manage the mirroring, which can be find in my <a href="http://git.urth.org/?p=git-bits.git;a=summary">git-bits repo</a>. It's not ready for CPAN, but it might be useful to others who want to do something similar.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Distros Which Need Some Love</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/08/distros-which-need-some-love.html" />
    <id>tag:blog.urth.org,2011://2.189</id>

    <published>2011-08-24T03:36:24Z</published>
    <updated>2011-08-24T03:48:37Z</updated>

    <summary>I have way too many modules. Want to take one or two? Here&apos;s some modules that I own (or co-own) that need some love: DateTime-Format-Mail - has some open bugs that could use some attention. DateTime-Format-MySQL - I may have...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>I have way too many modules. Want to take one or two?</p>

<p>Here's some modules that I own (or co-own) that need some love:</p>

<ul>
<li>DateTime-Format-Mail - has some open bugs that could use some attention.</li>
<li>DateTime-Format-MySQL - I may have a new maintainer lined up, but the more the merrier, I suspect.</li>
<li>DateTime-Format-Strptime - I took co-maint on this to do a few quick fixes, but it could use more attention.</li>
<li>DateTime-Locale - I have a vague plan to convert this to use libicu or something like that, but I am lacking tuits. The data is quite out of date at this point. If someone wanted to do just take the existing code and make it work with the newest CLDR data, that'd be fine, but you can't change the API unless it's necessary to support new data.</li>
<li>HTML-WikiConverter-MultiMarkdown</li>
<li>MooseX-Singleton - I don't bother using this any more. It's more trouble than it's worth.</li>
<li>Params-Validate - could use an XS expert to fix some bugs I just can't figure out.</li>
<li>ShipIt-Step-CheckVersionsMatch - I'm down with dzil.</li>
<li>Anything else - if you're dying to work on something I've been neglecting, let me know.</li>
</ul>

<p>All of these modules should be in <a href="http://git.urth.org/">a git repo on my server</a>.</p>

<p><a href="mailto:autarch@urth.org">Contact me via email</a> if you're interested.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Conference Code of Conduct Considerations</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/08/conference-code-of-conduct-considerations.html" />
    <id>tag:blog.urth.org,2011://2.188</id>

    <published>2011-08-22T18:50:54Z</published>
    <updated>2011-09-06T02:12:24Z</updated>

    <summary>A recent discussion on the YAPC::NA blog reminded me of the importance of having a code of conduct for conferences. I wrote about this previously in the context of creating a policy for my animal rights group. Now that the...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>A <a href="http://blog.yapcna.org/post/9196402166/basic-civility">recent discussion on the YAPC::NA blog</a> reminded me of the importance of having a code of conduct for conferences. I <a href="http://blog.urth.org/2011/01/creating-the-perfect-anti-harassment-policy.html">wrote about this previously</a> in the context of creating a policy for my animal rights group. Now that the issue's come up with YAPC, I'm thinking about what the ideal policy for a conference should look like.</p>

<p>I do sympathize with people who don't like these policies, and think they should be as short as possible. Isn't it obvious that some things are unacceptable? Shouldn't we be able to "just" act like adults and treat each other with respect? Do we really need all these rules stated up front?</p>

<p>A code of conduct is not written for the vast majority of attendees, who act reasonably and treat each other with respect. They're written for two groups of people. First, the code exists for people whose idea of what's acceptable falls outside of the community standards. Having a policy in place may help them recognize that certain behaviors aren't okay. After all, most of us wouldn't fill our slide decks with sexual images, because that's obviously a bad idea, but it still happens. Second, the policy is for people who are concerned that they may be victims of harassment at a conference. Having a code of conduct makes it very clear that the conference organizers take this issue seriously. It also gives them clear guidelines on reporting incidents.</p>

<p>Calling it a "code of conduct" may be a bit misleading. We need more than just a list of expectations. We also need guidelines for reporting harassment and a policy for dealing with people who fail to follow the code of conduct. This is important because it helps reassure attendees who may fear harassment that there is a mechanism for dealing with it. A code of conduct all by itself, absent a reporting procedure, is like having laws without a way to report infractions to the police.</p>

<p>The Geek Feminism Wiki has an <a href="http://geekfeminism.wikia.com/wiki/Conference_anti-harassment_policy">example anti-harassment policy</a> that makes some important points. I really like the template they provide for internal use with conference staff that gives some specific information on how to handle issues that arise.</p>

<p>One of the things I dislike about it is the description of harassment, which says "Harassment includes offensive verbal comments". The problem is the use of word "offensive". This seems innocuous at first, but it's awfully subjective. There's really no consensus on what constitutes "offensive", other than whether or not a particular person is offended. A good example might be using the word "chick" to refer to a woman. I know women who find this offensive, and others who don't.</p>

<p>A closely related problem is that this example policy doesn't encourage any sort of mediation. In many cases, both the offended person and the offender have legitimate arguments. An ideal policy would encourage the two people to discuss the issue together and resolve the issue amicably. In many cases, it may be sufficient for the offender to say something like "I'm sorry, I didn't realize that saying X would bother you, I'll be more mindful of your concerns in the future".</p>

<p>(Note that the issue here <em>isn't</em> whether the word "chick" is acceptable. The important point is that both parties may have legitimate claims, and the ideal outcome is for both parties to agree on how they can get along in the future, so they both can enjoy the rest of the conference.)</p>

<p>In the YAPC::NA blog discussion, one issue mentioned was not wanting to have a list of specific topics or words which are forbidden. A list of words is a red herring. I've never seen such a policy. The Geek Feminism Wiki policy does list specific issues such as comments related to gender, race, sexual orientation, etc. The concern I've heard about this sort of phrasing is that someone will do something not specifically on the list and then try to be a rules lawyer when they're called on it.</p>

<p>One way to deal with this is to start with a general "don't be an asshole" section. That's what the <a href="http://www.yapc2011.us/yn2011/conduct.html">YAPC::NA 2011 Code of Conduct</a> does. Then there can be a list of some specific offenses (sexual imagery in slides, harassing photography, belittling comments, inappropriate physical contact, etc. Finally, the policy can say "harassment includes, but is not limited to [list of things]".</p>

<p>The reason to list specific things is that not everyone agrees on what "don't be an asshole" means. Past incidents at a variety of conferences make this very clear. Listing specific past issues really can't hurt, and it could help.</p>

<p>Overall, I think the YAPC::NA 2011 Code of Conduct is a good start. I'd add a list of specific offenses after the opening "Reasonable Person Principle". I'd also remove the bit about recommending a restraining order. This seems somewhat out of place. None of the conference incidents I've read about have been the culmination of a long-term dispute between two people, so a restraining order isn't really relevant.</p>

<p>Finally, the policy needs more explicit guidelines on how to report harassment. In particular, it should includes names, phone numbers, and email addresses for key conference organizers. It may not always be obvious to a conference newbie who the organizers are, and they may not be able to find one in person.</p>

<p>Conferences also need an internal document like the one in the Geek Feminism Wiki. This document should be distributed to all volunteer staff at the event.</p>

<p>I'd like to see a standard policy adopted for all Perl events. At the very least, TPF can work with the community to create a required policy for TPF-sponsored events.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Google Plus Circles Don&apos;t Solve My Problem</title>
    <link rel="alternate" type="text/html" href="http://blog.urth.org/2011/07/google-plus-circles-dont-solve-my-problem.html" />
    <id>tag:blog.urth.org,2011://2.187</id>

    <published>2011-07-22T15:36:57Z</published>
    <updated>2011-07-22T16:02:56Z</updated>

    <summary>When I first saw Google Plus circles, I thought this was a great idea. On Facebook, I have a bunch of &quot;friends&quot;, most of whom are people I talk to only rarely, some of whom I haven&apos;t spoken to in...</summary>
    <author>
        <name>Dave Rolsky</name>
        <uri>http://blog.urth.org/</uri>
    </author>
    
        <category term="Programming" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.urth.org/">
        <![CDATA[<p>When I first saw Google Plus circles, I thought this was a great idea. On Facebook, I have a bunch of "friends", most of whom are people I talk to only rarely, some of whom I haven't spoken to in years.</p>

<p>With Google Plus, I can categorize these "friends" into different circles. How awesome is that? Most of the people I've had contact with on Plus are people I know through programming, so I made a "Geeks" circle and started filling it in. Right now that circle has 113 members, compared to 8 in friends. </p>

<p>This really appeals to the uptight organized engineer in me, but then I realized that this doesn't any real problem.</p>

<p>I've never liked Facebook, and circles don't make me like Plus any more. My problem with Facebook isn't that I need to categorize the incoming stream of info based on my relationship with people. The problem is that the incoming stream of info is almost entirely uninteresting!</p>

<p>With circles, I now have multiple streams of totally uninteresting info. Here's a sampling of what I see in my Geeks stream this morning:</p>

<ul>
<li>Robert Rothenberg says that it's raining.</li>
<li>Robert Rothenberg asks "Have you looked at the source code of a G+ page? It's all JavaScipt, and dynamically creates the page from a data structure. Interesting...."</li>
<li>Piers Cawley still has to write some slides for OSCON.</li>
<li>Curtis Poe posted a video of his daughter.</li>
<li>Kang-min Liu (aka Gugod) posted something in Chinese.</li>
<li>Karen Pauley made some chili con carne.</li>
</ul>

<p>I've categorized people based on my relationship to them, but what I really want is to categorize <strong>the things they write</strong>. Of the items above, only two of them are geek-related, and only one of them is really interesting to me as technical information.</p>

<p>So what did doing the work of putting people into these circles gain me? Absolutely nothing. I'm still left wading through a torrent of stuff to fish out the few interesting bits.</p>

<p>This is <strong>exactly</strong> the same problem I've always had with Facebook.</p>

<p>Of course, this problem is already solved. The solution is called "tags" or "categories". I care more about the topic than the writer, though both are important. Just knowing who wrote something isn't very helpful.</p>

<p>And yes, I know that circles do solve a real problem for some people. If I posted a lot of personal stuff on Facebook then circles might actually be useful for me.</p>

<p>Disclaimer: When I say that your content is "totally uninteresting", I mean to it's not what <em>I</em> am interested in. I'm sure Curtis's daughter is totally adorable.</p>
]]>
        

    </content>
</entry>

</feed>

