<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>educated_foo</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/" />
    <link rel="self" type="application/atom+xml" href="http://blogs.perl.org/users/educated_foo/atom.xml" />
    <id>tag:blogs.perl.org,2009-11-03:/users/educated_foo//40</id>
    <updated>2013-04-11T05:21:01Z</updated>
    <subtitle>A blog about the Perl programming language</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.38</generator>

<entry>
    <title>Slideshare?  Really?</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/2013/04/slideshare-really-2.html" />
    <id>tag:blogs.perl.org,2013:/users/educated_foo//40.4550</id>

    <published>2013-04-11T05:01:49Z</published>
    <updated>2013-04-11T05:21:01Z</updated>

    <summary>While I enjoy reading the presentations people post here, I&apos;ve never been that happy with their using Slideshare. What&apos;s wrong with just putting a PDF somewhere? As it turns out, Slideshare is actually somewhat slimy -- they got caught using...</summary>
    <author>
        <name>educated_foo</name>
        
    </author>
    
    <category term="privacy" label="privacy" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="slideshare" label="Slideshare" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/educated_foo/">
        <![CDATA[<p>While I enjoy reading the presentations people post here, I've never been that happy with their using Slideshare.  What's wrong with just putting a PDF somewhere?  As it turns out, Slideshare is actually somewhat slimy -- they got caught using <a href="http://ashkansoltani.org/docs/respawn_redux.html">ETags</a> to force tracking cookies on people who explicitly block them.  (Do a search for "slideshare kissmetrics" and you'll see that they were proud of it.)</p>

<p>They're welcome to whatever business model they choose, as long as they're open and honest about it.  But really, you're better off uploading your slides elsewhere.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Holy bloat, Batman!</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/2013/03/holy-bloat-batman.html" />
    <id>tag:blogs.perl.org,2013:/users/educated_foo//40.4386</id>

    <published>2013-03-02T13:52:22Z</published>
    <updated>2013-03-02T14:01:31Z</updated>

    <summary>Let&apos;s compare the latest constant.pm to a minimal equivalent: $ ./perl -Ilib -le &apos;print $^V&apos;; /usr/bin/time -l ./perl -Ilib -le &apos;use constant X =&gt; 1..5; print X&apos; 2&gt;&amp;1 | grep &apos;maximum resident&apos; v5.17.10 3829760 maximum resident set size $ /usr/bin/time...</summary>
    <author>
        <name>educated_foo</name>
        
    </author>
    
    <category term="bloat" label="bloat" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="core" label="core" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/educated_foo/">
        <![CDATA[Let's compare the latest constant.pm to a minimal equivalent:
<pre>
    $ ./perl -Ilib -le 'print $^V'; /usr/bin/time -l ./perl -Ilib -le 'use constant X => 1..5; print X' 2>&1 | grep 'maximum resident'
    v5.17.10
       3829760  maximum resident set size
    $ /usr/bin/time -l ./perl -I/tmp -le 'use constant X => 1..5; print X' 2>&1 | grep 'maximum resident'
       1200128  maximum resident set size
</pre>
That's 2.6MB bloat to define a constant.  (The culprit turns out to be
utf8, natch, to handle Unicode constants.  (Why, God?!)).  For reference, <code>/tmp/constant.pm</code>, which does most useful constant-type stuff, is here:
<pre code="perl">
package constant;

sub import
{
    shift;
    my $caller = caller;
    if (ref $_[0] eq 'HASH') {
        while (my ($k, $v) = each %{$_[0]}) {
            *{"$caller\::$k"} = sub () { $v };
        }
    } else {
        my $k = shift;
        my @vals = @_;
        *{"$caller\::$k"} = sub () { @vals };
    }
}
1;
</pre>]]>
        
    </content>
</entry>

<entry>
    <title>Same feeds, less spam</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/2012/03/same-feeds-less-spam.html" />
    <id>tag:blogs.perl.org,2012:/users/educated_foo//40.2996</id>

    <published>2012-03-26T16:24:25Z</published>
    <updated>2012-03-26T16:29:13Z</updated>

    <summary>I subscribe to both blogs.perl.org and ironman.enlightenedperl.org, so whenever &quot;JT Smith&quot; posts something, I receive 2-3 copies, when I would rather receive 0. Today, I finally took a few minutes to fix this with one of the few useful things...</summary>
    <author>
        <name>educated_foo</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/educated_foo/">
        <![CDATA[<p>I subscribe to both blogs.perl.org and ironman.enlightenedperl.org, so whenever "JT Smith" posts something, I receive 2-3 copies, when I would rather receive 0.  Today, I finally took a few minutes to fix this with one of the few useful things Yahoo has ever created: <a href="http://pipes.yahoo.com/">Pipes</a>.  Enjoy <a href="http://pipes.yahoo.com/pipes/pipe.run?_id=b702ac2653fc36c60a415da570c1315e&_render=rss">Perl news with less spam (RSS)</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>The date matches MM/01/YYYY -- it&apos;s a release!</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/2012/02/the-date-matches-mm01yyyy----its-a-release.html" />
    <id>tag:blogs.perl.org,2012:/users/educated_foo//40.2875</id>

    <published>2012-02-27T02:10:54Z</published>
    <updated>2012-02-27T02:26:13Z</updated>

    <summary>Calling whatever happens to be lying around on a particular date a &quot;stable release&quot; is a laughably bad idea (the &quot;rhythm method&quot; is also lousy birth control). A &quot;release&quot; is something you want lots of people to use; &quot;the stuff...</summary>
    <author>
        <name>educated_foo</name>
        
    </author>
    
    <category term="comedy" label="comedy" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="farce" label="farce" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tragedy" label="tragedy" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/educated_foo/">
        <![CDATA[<p>Calling whatever happens to be lying around on a particular date a "stable release" is <a href="http://groups.google.com/group/perl.perl5.porters/msg/d1ec100512f48974">a laughably bad idea</a> (the "rhythm method" is also lousy birth control).  A "release" is something you want lots of people to use; "the stuff in version control on the first of the month" is something else entirely.</p>

<p>Perl releases used to take awhile -- so do releases of POSIX, HTML, C, and C++ -- and that was not a bad thing.  It's the difference between a platform and a fad.</p>]]>
        
    </content>
</entry>

<entry>
    <title>LOLchromatic wonders how to stalk you</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/2011/12/lolchromatic-wonders-how-to-stalk-you.html" />
    <id>tag:blogs.perl.org,2011:/users/educated_foo//40.2597</id>

    <published>2011-12-22T02:33:15Z</published>
    <updated>2011-12-22T02:41:33Z</updated>

    <summary>No, really. This clown apparently thinks he can make money by stalking you online. The problem, as even he recognizes, is that you&apos;re able to prevent creeps like LOLchromatic from stalking you. The solution is that most people don&apos;t know...</summary>
    <author>
        <name>educated_foo</name>
        
    </author>
    
    <category term="chromatic" label="chromatic" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/educated_foo/">
        <![CDATA[<p><a href="http://www.modernperlbooks.com/mt/2011/12/how-would-you-track-user-behavior-with-plack-and-catalyst.html">No, really.</a>  This clown apparently thinks he can make money by stalking you online.  The problem, as even he recognizes, is that you're able to prevent creeps like LOLchromatic from stalking you.  The solution is that most people don't know that LOLchromatic and his ilk exist.</p>]]>
        
    </content>
</entry>

<entry>
    <title>More thought, less dogma please</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/2011/11/more-thought-less-dogma-please.html" />
    <id>tag:blogs.perl.org,2011:/users/educated_foo//40.2491</id>

    <published>2011-11-25T20:28:48Z</published>
    <updated>2011-11-25T20:45:53Z</updated>

    <summary>I recently came across a link to an old article by MJD. The sections &quot;On Forking&quot;, &quot;New Versions&quot;, &quot;NP Complete Problems&quot;, and &quot;Why I Hate strict&quot; are particularly worth reading. His basic point in each section is that you should...</summary>
    <author>
        <name>educated_foo</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/educated_foo/">
        <![CDATA[<p>I recently came across a link to <a href="http://perl.plover.com/yak/12views/samples/notes.html">an old article by MJD</a>.  The sections "On Forking", "New Versions", "NP Complete Problems", and "Why I Hate <code>strict</code>" are particularly worth reading.  His basic point in each section is that you should think about the problem you're trying to solve when you write code, and stay mindful of <em>why</em> you are doing certain things.  I wish there were more smart, thoughtful people like MJD in the Perl community nowadays, and fewer dogmatists.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Test::Tiny and/or TAP::Tiny?</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/2011/01/testtiny-andor-taptiny.html" />
    <id>tag:blogs.perl.org,2011:/users/educated_foo//40.1353</id>

    <published>2011-01-13T01:53:59Z</published>
    <updated>2011-01-13T02:17:39Z</updated>

    <summary>Perl test output (the so-called &quot;Test Anything Protocol&quot; or &quot;TAP&quot;) is simple: &quot;1..N&quot; declaring that N tests are planned, then either comments starting with &quot;#&quot;, or lines starting with &quot;ok X&quot; or &quot;not ok X&quot; saying whether or not test...</summary>
    <author>
        <name>educated_foo</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/educated_foo/">
        <![CDATA[<p>Perl test output (the so-called "Test Anything Protocol" or "TAP") is simple: "1..N" declaring that N tests are planned, then either comments starting with "#", or lines starting with "ok X" or "not ok X" saying whether or not test number X succeeded.  Generating it should be simple.  Parsing it should be almost as simple.</p>

<p>However, the code to generate and parse test output is a byzantine nightmare: Test::Simple and its dependencies are at least 1345 SLOC, and the various TAP-parsing modules are at least 3918 SLOC (including an IteratorFactory!).</p>

<p>Both generating and parsing the subset of "TAP" used by most programs can take around 50 SLOC.  This seems like a perfect opportunity for a ::Tiny module.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Really?</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/2010/03/really.html" />
    <id>tag:blogs.perl.org,2010:/users/educated_foo//40.340</id>

    <published>2010-03-08T03:41:59Z</published>
    <updated>2010-03-08T03:48:26Z</updated>

    <summary>P****, the P*** I**, apparently has a blog. Unfortunately, it has a &quot;please socially network me&quot; crapstain (1) on every post, and requires Javascript and cookies to post. Color me not surprised. (1) http://imgur.com/kmupS.png...</summary>
    <author>
        <name>educated_foo</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/educated_foo/">
        <![CDATA[<p>P****, the P*** I**, apparently has a blog.  Unfortunately, it has a "please socially network me" crapstain (1) on every post, and requires Javascript and cookies to post.  Color me not surprised.</p>

<p>(1) http://imgur.com/kmupS.png</p>]]>
        
    </content>
</entry>

<entry>
    <title>FAIL</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/2009/11/fail.html" />
    <id>tag:blogs.perl.org,2009:/users/educated_foo//40.67</id>

    <published>2009-11-30T07:51:57Z</published>
    <updated>2009-12-01T08:49:39Z</updated>

    <summary>http://img16.imageshack.us/img16/2696/screenshot20091130at124.png Sad......</summary>
    <author>
        <name>educated_foo</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/educated_foo/">
        <![CDATA[<p>http://img16.imageshack.us/img16/2696/screenshot20091130at124.png</p>

<p>Sad...</p>]]>
        
    </content>
</entry>

<entry>
    <title>Mi-grat&apos;-o-ry</title>
    <link rel="alternate" type="text/html" href="http://blogs.perl.org/users/educated_foo/2009/11/mi-grat-o-ry.html" />
    <id>tag:blogs.perl.org,2009:/users/educated_foo//40.46</id>

    <published>2009-11-26T06:48:38Z</published>
    <updated>2009-11-26T06:51:24Z</updated>

    <summary>The Free Market has spoken: good bye, use.perl....</summary>
    <author>
        <name>educated_foo</name>
        
    </author>
    
    <category term="l8r" label="l8r" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.perl.org/users/educated_foo/">
        <![CDATA[<p>The Free Market has spoken: good bye, use.perl.</p>]]>
        
    </content>
</entry>

</feed>
