hex's Journal http://use.perl.org/~hex/journal/ hex's use Perl Journal en-us use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners. 2012-01-25T02:08:01+00:00 pudge pudge@perl.org Technology hourly 1 1970-01-01T00:00+00:00 hex's Journal http://use.perl.org/images/topics/useperl.gif http://use.perl.org/~hex/journal/ Ivor Williams http://use.perl.org/~hex/journal/38744?from=rss I have just learnt, via <a href="http://london.pm.org/pipermail/london.pm/Week-of-Mon-20090316/016865.html">a post</a> in the London.pm archive, of the untimely passing away of my friend, Ivor Williams, usually known online and in the Perl world as ivorw. <p> I think I first met Ivor around 2001, and started collaborating with him on the OpenGuides project shortly after, which was to prove the foundation of a firm friendship. </p><p> Ivor always dazzled me with his enthusiasm, and was not only a rich font of ideas but an excellent listener and sounding board for bouncing your thoughts off; we often had long conversations on the phone in which we would hatch new ideas. One of my fondest memories of YAPC::Europe in 2003 is the sunny afternoon I spent sitting with Ivor in a Paris bistro, drinking coffee and getting to know him better. </p><p> Rest in peace, Ivor. I'm going to miss you a lot.</p> hex 2009-04-03T12:38:31+00:00 journal Retiring this journal http://use.perl.org/~hex/journal/38072?from=rss From now on, on the rare occasions that I actually blog something about Perl, it'll be at <a href="http://downlode.org/Creative/Writing/Notebook/">Earle's Notebook</a> rather than here - although I'll still be reading and commenting on use.perl, of course. Ciao! hex 2008-12-11T16:24:00+00:00 journal Perlsphere maintenance - downtime coming http://use.perl.org/~hex/journal/37918?from=rss If you're a <a href="http://perlsphere.net/">Perlsphere</a> reader, please note that there'll be a day or so of downtime coming up soon as I'm migrating hosting for all my websites. <p> Also - my apologies to several of you that have sent me mail over the last month or two requesting changes to their blog subscriptions there. Things have been hectic in various ways and I haven't had the chance to address your requests. I promise that I'll take care of all of them when we're up and running on the new machine. </p> hex 2008-11-21T06:35:47+00:00 journal The Faces of CPAN http://use.perl.org/~hex/journal/37038?from=rss I was pretty grumpy about Gravatars arriving on search.cpan.org a while ago, but I have to take that back. Andy Armstrong's <a href="http://hexten.net/cpan-faces/">Faces of CPAN</a> totally makes it worth it. hex 2008-07-29T01:54:06+00:00 journal Perlsphere is now at perlsphere.net http://use.perl.org/~hex/journal/36725?from=rss Perlsphere now has <a href="http://perlsphere.net/">its own domain</a>. Please update your bookmarks! (Old URLs will be redirected, though.) hex 2008-06-19T17:54:11+00:00 journal Announcing Perlsphere http://use.perl.org/~hex/journal/36686?from=rss In the spirit of TMTOWTDI I have set up a new aggregator for Perl blogs, <a href="http://perlsphere.net/">Perlsphere</a>. Its aim is to operate a bit differently from <a href="http://planet.perl.org/">Planet Perl</a>... <ul> <li>Openness - admission to Planet Perl is by selection of the site operators only. Perlsphere is open to any blog about Perl.</li><li>Being a little easier on the eye - those jaggies on the Planet Perl camel scare me.</li><li>Most importantly, running on Perl. Perlsphere runs on the remarkable <a href="http://plagger.org/trac">Plagger</a>. Planet Perl runs on <a href="http://www.planetplanet.org/">Planet</a>, a Python application... whose <a href="http://htmltmpl.sourceforge.net/">templating engine</a> was a copy of Perl's own HTML::Template! Kind of embarrassing.</li></ul><p> Please don't take this as a diss post for Planet Perl, though. I hope both sites can exist in a healthy state of competition. </p><p> If you'd like to be included, shoot me a line with your blog's feed URL. (Note: if your blog is multi-topic, I'd prefer just the feed for your Perl category/ies, thanks.) </p> hex 2008-06-14T03:05:33+00:00 journal Better-looking search.cpan.org results http://use.perl.org/~hex/journal/36683?from=rss The current appearance of search results on search.cpan.org is a little old-fashioned-looking and doesn't use space effectively (notice the huge empty space on the right hand side). I had a play around and have come up with <a href="http://downlode.org/Creative/CpanSearch/">this mockup of how it could look</a>. The little icons are direct download links. <p> What do you think? If people like it, I'll ask Graham if he'll consider implementing it.</p> hex 2008-06-13T14:29:48+00:00 journal How to throw away good publicity http://use.perl.org/~hex/journal/36678?from=rss Tie your users' hands behind their backs with legalese.<blockquote><div><p> <i> Any individual, organization, or company may use the "Powered by Perl" or "Programming Republic of Perl" logos... The Perl logo, the Perl Foundation logo, and the bare onion logo are available for use by Perl Mongers, Perl Monks, and Perl.org, which are part of TPF.<nobr> <wbr></nobr>.... This authorization to use the Perl logo is limited to uses by the organizations themselves, and doesn't extend to individual members. Representatives of the organizations should contact us at trademark@perlfoundation.org to obtain high-resolution versions of the Perl logo.</i> [<a href="http://www.perlfoundation.org/perl_trademark">"Perl trademark"</a>]</p></div> </blockquote><p> Two poky little PNGs of the slogan-tainted logos that you are allowed to use are proffered on the page. Contrast that with this:</p><blockquote><div><p> <i> Projects and companies that use Python are encouraged to incorporate the Python logo on their websites, brochures, packaging, and elsewhere to indicate suitability for use with Python or implementation in Python.</i> [<a href="http://www.python.org/community/logos/">"The Python Logo"</a>]</p></div> </blockquote><p> They give you everything from generic PNGs to two flavors of SVG and even Photoshop format. The extremely reasonable <a href="http://www.python.org/psf/trademarks/">detailed trademark usage guidelines</a> even give you permission to make derived logos. </p><p> Perl: there's more than one way to do it. Except if you're talking about using the logo. </p> hex 2008-06-13T06:30:14+00:00 journal backpan considered dangerous http://use.perl.org/~hex/journal/36361?from=rss <p> The recent <a href="http://news.perlfoundation.org/2008/05/2008q2_grant_proposal_revision.html">discussion about potential version control for all CPAN</a> reminded me of a thought I've had for a while about <a href="http://backpan.cpan.org/">backpan</a> - namely that it is dangerous and ill-thought-out in its current state. </p><p> As it stands, it's impossible to remove anything from backpan, for any reason. So in backpan we have a gigantic minefield of potentially dangerous bugs and possibly even licensing-related legal issues. </p><p> How dangerous? How about <a href="http://use.perl.org/~Alias/journal/34680">rm -rf<nobr> <wbr></nobr>/</a> dangerous? (Sorry Adam.) </p><p> A mechanism to Delete Forever is needed before somebody does themselves or their data harm. In the meantime, a big red <a href="http://www.flickr.com/photos/focalplane/266819242/">PERIGO MINAS</a> sign ought to be put on the front page. Actually having a front page for backpan first would also help; the just-dump-the-user-in-a-directory-listing look went out of fashion well over a decade ago. </p><p> <small>Posted to use.perl because I'm not sure where to suggest this. Meant in good faith. Thanks.</small> </p> hex 2008-05-08T20:56:51+00:00 journal A Perl Variable I'd Like http://use.perl.org/~hex/journal/36170?from=rss I often find myself doing things with arrays like this:<blockquote><div><p> <tt>for (0<nobr> <wbr></nobr>.. $#foo) {<br>&nbsp; if ($foo[$_] =~<nobr> <wbr></nobr>/corge/) {<br>&nbsp; &nbsp; $bar{$_} = $foo[$_];<br>&nbsp; }<br>}</tt></p></div> </blockquote><p>Simple enough. But consider that if you're reading through a filehandle, you can use <tt>$.</tt> (or <tt>$INPUT_LINE_NUMBER</tt>) to tell you how many lines you've read. It'd be very handy to have another special variable - let's call it <tt>$&#172;</tt> because there are hardly any symbols left - that, if you're in a loop, gives you the number of times it has run. That way you could replace the code above with:</p><blockquote><div><p> <tt>foreach (@foo) {<br>&nbsp; if (/corge/) {<br>&nbsp; &nbsp; $bar{$&amp;#172;} = $_;<br>&nbsp; }<br>}</tt></p></div> </blockquote><p>This immediately strikes me as Perlish. </p><p> <i>Addendum:</i> Well, it would, if use.perl's code formatter didn't buggily replace <tt>&#172;</tt> with <tt>&amp;#172;</tt> in the code snippet above. I hope you can still see what I mean. </p> hex 2008-04-17T12:35:15+00:00 journal Weird spread of test failures http://use.perl.org/~hex/journal/36100?from=rss I recently released a new module, <a href="http://search.cpan.org/dist/Encode-Base32-Crockford/">Encode::Base32::Crockford</a>. While the tests for the module itself are fine, the two associated POD tests (<a href="http://search.cpan.org/src/HEX/Encode-Base32-Crockford-1/t/pod.t">validity</a> and <a href="http://search.cpan.org/src/HEX/Encode-Base32-Crockford-1/t/pod_coverage.t">coverage</a>) are resulting in a very strange distribution of failures (<a href="http://testers.cpan.org/show/Encode-Base32-Crockford.html">testers</a>, <a href="http://bbbike.radzeit.de/~slaven/cpantestersmatrix.cgi?dist=Encode-Base32-Crockford&amp;maxver=">matrix</a>). <p> It looks like something may be objecting to my phrasing <code>eval { something(); } skip $reason, $count if $@;</code>. However it doesn't seem to be a single version of Perl or platform. </p><p> I think I'm going to rewrite the tests to use <code>SKIP</code> blocks, but I'm curious to know what's going on here - it certainly looks like a bug in something. Has anyone else encountered this?</p> hex 2008-04-08T09:36:47+00:00 journal Oh joy! Firefox 3 is too secure for PAUSE. http://use.perl.org/~hex/journal/36006?from=rss <blockquote><div><p>Secure Connection Failed </p><p> pause.perl.org uses an invalid security certificate. </p><p> The certificate is not trusted because it is self signed. </p><p> (Error code: sec_error_ca_cert_invalid) </p></div> </blockquote><p> Luckily it - I'm using FF 3.0b4 - has a very nice new mechanism that lets you add an exception for specific servers, but really I don't think we should be seeing this in the first place... could our lovely PAUSE people please fix this? </p> hex 2008-03-30T04:05:07+00:00 journal Some people have the strangest ideas about version numbering http://use.perl.org/~hex/journal/35514?from=rss <a href="http://en.wikipedia.org/w/index.php?title=Perl&amp;diff=187707148&amp;oldid=187581977">http://en.wikipedia.org/w/index.php?title=Perl&amp;diff=187707148&amp;oldid=187581977</a> hex 2008-01-29T17:50:20+00:00 journal Simplified parseable Changes: draft 2 http://use.perl.org/~hex/journal/34882?from=rss <p> I got a lot of positive feedback about <a href="http://use.perl.org/~hex/journal/34864">my proposal for a machine-readable Changes format</a>. Following on from all the suggestions, this is the revised spec. The big difference from the first version is the expansion of the identifying tokens from single letters to full words, at Juerd's suggestion. The "@" symbol is also becoming overloaded these days, so I've dropped it. </p><ul> <li>Each release is represented by a block of lines. Double line breaks separate releases.</li><li>A line beginning with \s+ is interpreted as the continuation of the preceding line.</li><li>Each line begins with a token denoting what item of change metadata it describes, followed by a colon and \s+.</li><li>The token may be optionally suffixed with an exclamation mark <i>importance indicator</i>, implying the metadata item is important. When applied to a version number, it implies "major release". (Applying it to a date or comment is meaningless and should be ignored by any parser.) The rendition of an <i>important</i> item is down to parser authors.</li><li>Valid tokens are:<ul> <li> <tt>change</tt> - a change to the code of some kind</li><li> <tt>docs</tt> - a change to the documentation</li><li> <tt>fix</tt> - a bug fix</li><li> <tt>incompatible</tt> - an change that is incompatible with earlier releases</li><li> <tt>license</tt> - a change to the license</li><li> <tt>maintainer</tt> - a change to the maintainer(s)</li><li> <tt>new</tt> - an addition of something</li><li> <tt>security</tt> - a security fix</li><li> <tt>tests</tt> - a change to the test suite</li></ul></li></ul><p> [Changes to this post following comments: removed <tt>removed</tt> and re-added <tt>change</tt>.] </p><p> Following are two examples of valid documents in different styles. </p><p> <tt> # This version was codenamed Muffin because we were listening to Frank Zappa at the time.<br> version!:<br> &nbsp;&nbsp;&nbsp;&nbsp;1.3<br> date:<br> &nbsp;&nbsp;&nbsp;&nbsp;2007-11-08T11:15<br> maintainer!:<br> &nbsp;&nbsp;&nbsp;&nbsp;This project is now maintained by ZIRCON (of Zircon Software fame).<br> license!:<br> &nbsp;&nbsp;&nbsp;&nbsp;We have switched licenses. This software now uses the Greater Zork Software License.<br> &nbsp;&nbsp;&nbsp;&nbsp;Please ensure that you have read the new license before using this software.<br> new!:<br> &nbsp;&nbsp;&nbsp;&nbsp;New frobnitz() method - save 50 lines of manual frobnitzing by using this instead!<br> fix!:<br> &nbsp;&nbsp;&nbsp;&nbsp;Fixed the error in quack() where it would actually moo instead of quack. [RT 1234]<br> incompatible!:<br> &nbsp;&nbsp;&nbsp;&nbsp;The calling convention for rumpelstiltskin() has CHANGED. See perldoc.<br> tests!:<br> &nbsp;&nbsp;&nbsp;&nbsp;Test coverage is now 100%! Please go nuts testing this release on your machines<br> &nbsp;&nbsp;&nbsp;&nbsp;and let us know what happens.<br> </tt> </p><p> This one has a more compact look: </p><p> <tt> version:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.1<br> date:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1992-04-06<br> # You guys are going to love this one. -- billg<br> # Watch out for Kato, coming this October with native networking support! -- steveb<br> new:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrueType font system. No more need for Adobe Type Manager.<br> new:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32-bit disk access.<br> new:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Awesome game called Minesweeper. Say goodbye to your productivity.<br> incompatible: We dropped Reversi. Minesweeper is better, trust us.<br> incompatible: Can't run in real mode.<br> </tt> </p><p> Even more compact, without the nice alignment: </p><p> <tt> version: 1.2.3<br> date: 2007-11-12<br> new: beefsteak() gives you beefy goodness<br> fix: tracked down a memory leak in mtfnpy()<br> tests: added pod coverage<br> change: refactored ugly get/set methods into AUTOLOAD</tt> </p><p> Thoughts? </p> hex 2007-11-12T11:46:38+00:00 journal A simplified parseable format for Changes files http://use.perl.org/~hex/journal/34864?from=rss There's a lot of discussion going on at the moment about machine-readable Changes (or CHANGES) files: <a href="http://use.perl.org/~miyagawa/journal/34850">miyagawa</a>, <a href="http://use.perl.org/article.pl?sid=07/09/06/0324215">LTjake</a>. hanekomu put together a new module, <a href="http://use.perl.org/~hanekomu/journal/34857">Module::Changes</a>, to parse a "Changes.yml" file; <a href="http://use.perl.org/~RGiersig/journal/34370/">RGiersig made some suggestions</a> for the content of that file. <p> Discussion so far has mainly been around the use of of YAML. Points raised: </p><ul> <li>YAML is less expressive than RDF (me)</li><li>RDF is hard to write (miyagawa)</li><li>People want a simple format (everyone)</li><li>The format should be transformable from human to machine (everyone)</li><li>Even YAML can have too much chrome (Alias)</li></ul><p> Thinking about all of these, I propose the following. Design constraints were (a) granularity (including <a href="http://use.perl.org/comments.pl?sid=36862&amp;cid=57590">Skud's suggestions</a> of what to mention), (b) an absolute minimum of chrome, and (c) trivial to transform into other formats (such as <a href="http://search.cpan.org/src/ASCOPE/Net-Flickr-Backup-2.99/Changes">RDF</a>). </p><p> <tt> &nbsp;&nbsp;&nbsp;&nbsp;v! 1.3<br> &nbsp;&nbsp;&nbsp;&nbsp;@ 2007-11-08T11:15<br> &nbsp;&nbsp;&nbsp;&nbsp;# This version was codenamed Muffin because we were listening to Frank Zappa at the time.<br> &nbsp;&nbsp;&nbsp;&nbsp;m! This project is now maintained by ZIRCON (of Zircon Software fame).<br> &nbsp;&nbsp;&nbsp;&nbsp;l! We have switched licenses. This software now uses the Greater Zork Software License.<br> &nbsp;&nbsp;&nbsp;&nbsp;Please ensure that you have read the new license before using this software.<br> &nbsp;&nbsp;&nbsp;&nbsp;a! New frobnitz() method - save 50 lines of manual frobnitzing by using this instead!<br> &nbsp;&nbsp;&nbsp;&nbsp;b! Fixed the error in quack() where it would actually moo instead of quack. [RT 1234]<br> &nbsp;&nbsp;&nbsp;&nbsp;c! The calling convention for rumpelstiltskin() has CHANGED. See perldoc.<br> &nbsp;&nbsp;&nbsp;&nbsp;t! Test coverage is now 100%! Go us! </tt> </p><p> <tt> &nbsp;&nbsp;&nbsp;&nbsp;v 1.3_01<br> &nbsp;&nbsp;&nbsp;&nbsp;@ 2007-11-07T09:20<br> &nbsp;&nbsp;&nbsp;&nbsp;# Developer preview for 1.3 and the CPAN testers. </tt> </p><p> <tt> &nbsp;&nbsp;&nbsp;&nbsp;v 1.2.1<br> &nbsp;&nbsp;&nbsp;&nbsp;@ 2007-11-02T20:08<br> &nbsp;&nbsp;&nbsp;&nbsp;d Fixed some POD formatting mistakes.<br> &nbsp;&nbsp;&nbsp;&nbsp;c Refactored accessors into AUTOLOAD. Makes no external difference.<br> &nbsp;&nbsp;&nbsp;&nbsp;r Removed the deprecated honkhonkhonk() method as warned several versions ago. </tt> </p><p> As you can see, each version is represented by a block of lines. Double line breaks separate versions. Each line begins with a token denoting what it describes, optionally suffixed with an exclamation mark, which means "important". When applied to a version number, it implies "major release". (Applying it to a date or comment is meaningless and should be ignored by any parser.) The token is followed by \s+. If an item is split onto multiple lines, it is understood to continue until a new token or block break is reached. </p><p> These are the tokens: </p><p> <tt> &nbsp;&nbsp;&nbsp;&nbsp;@&nbsp;&nbsp;Release date. In W3C datetime format (ISO 8601).<br> &nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;A comment.<br> &nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;&nbsp;An addition to the code.<br> &nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;A bugfix. Linking to a ticket here would be nice if it exists.<br> &nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;&nbsp;A change to existing code.<br> &nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;&nbsp;A change to documentation.<br> &nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;&nbsp;A change to licensing.<br> &nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;&nbsp;A change to the maintainer.<br> &nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;&nbsp;A removal of something from the code.<br> &nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;&nbsp;A change to tests.<br> &nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;&nbsp;A version number. </tt> </p><p> I haven't gone quite as far as RGiersig did in his specification, as I felt that was a bit heavy. For example, release stability in my scheme is indicated by the version number - that should be implied from the existing convention of underscored version numbers for developer releases. </p><p> Vague other thoughts - case-insensitive tokens? And maybe a standard block of comments at the beginning of the file explaining what the tokens are to new readers. </p><p> Thoughts? I actually like this enough that I might start using it myself. </p><p> <b>Update:</b> There's a <a href="http://use.perl.org/~hex/journal/34882">second draft</a> now. </p> hex 2007-11-09T13:04:23+00:00 journal Huxley Associates: not malicious, just stupid. http://use.perl.org/~hex/journal/34541?from=rss A full <em>fifteen days</em> after emailing Huxley Associates to <a href="http://use.perl.org/~hex/journal/34465">stop their spam</a>, I just got an email from them with the subject "EZ CR DATA PROTECTION REMOVAL CONFIRMATION_10729672". It was empty apart from a massive (1K of text) signature - with a malformed <a href="http://mailformat.dan.info/trailers/sigblocks.html">signature separator</a>, naturally. Attached was a 106K Word document called "DATA PROTECTION REMOVAL CONFIRMATION_10729672.doc". Here's what it said:<blockquote><div><p>[Image: "Huxley Associates"] [hyperlinked email address] </p><p> Mr Earle Martin </p><p> London </p><p> E11 1BG </p><p> UNITED KINGDOM </p><p> Our Ref.: 10729672 </p><p> 25 September, 2007 </p><p> Dear Mr Martin, </p><p> With respect to your recent request, I can confirm that we have removed your details from our Database. </p><p> If you require any further assistance please do not hesitate to contact us at the above email address. </p><p> Yours sincerely </p><p> Data Protection Controller</p></div> </blockquote><p> That was it. Two weeks' wait. And 106K of Word document for <em>that</em>. Not even an HTML email. Word document. </p><p> Some people should just be banned from using computers.</p> hex 2007-09-25T13:16:05+00:00 journal Locale::Object gets a community http://use.perl.org/~hex/journal/34510?from=rss Over the last few months, more and more people have been getting in touch with me to talk about using <a href="http://cpan.uwinnipeg.ca/dist/Locale-Object">Locale::Object</a> in their projects. As of today, Jess Robinson (castaway) has kindly provided <a href="http://dev.catalystframework.org/repos/bast/trunk/Locale-Object">a Subversion repository for the project</a> in advance of some modifications she's planning. I've also created a #locale-object on irc.perl.org, and a <a href="http://groups.google.com/group/locale-object">mailing list at Google Groups</a>. If you're using Locale::Object, please stop by and say hi. hex 2007-09-21T14:05:36+00:00 journal Claire O'Keeffe and Huxley Associates are spammers http://use.perl.org/~hex/journal/34465?from=rss A while back I put my CV on <a href="http://jobsite.com/">Jobsite</a> because all the recruiters read it and there's plenty of good work to be found. In due course it got me a good gig. However, shortly after that I started getting recruitment spam from some company called <a href="http://www.huxley.com/">Huxley Associates</a>. For PHP jobs. As you can imagine, I didn't ask for it. Nor had I ever heard of them, let alone subscribed to any kind of mailings from them. Somewhere I found that to unsubscribe from their spam, you had to mail a certain address. Here's what I sent:<blockquote><div><p> <tt>Date: Mon, 10 Sep 2007 15:17:43 +0100<br>From: "Earle Martin" &lt;jobs(at)downlode.org&gt;<br>To: audit.data(at)huxley.com<br>Subject: Data removal request<br> <br>Please remove my name and email address (jobs(at)downlode.org) from your<br>system and do not email me again.</tt></p></div> </blockquote><p>Here's what I just found in my inbox:</p><blockquote><div><p> <tt>O'Keeffe, Claire&nbsp; &nbsp; &nbsp;PHP DEVELOPER LAMP SKILLS GBP30,000&nbsp; &nbsp; &nbsp;16:57<br>O'Keeffe, Claire&nbsp; &nbsp; &nbsp;Situation Update&nbsp; &nbsp; &nbsp;16:56<br>O'Keeffe, Claire&nbsp; &nbsp; &nbsp;PHP / LAMP DEVELOPER Needed asap GBP30,000&nbsp; &nbsp; &nbsp;16:56<br>O'Keeffe, Claire&nbsp; &nbsp; &nbsp;LAMP DEVELOPER FARRINGDON URGENT&nbsp; &nbsp; &nbsp;16:56<br>O'Keeffe, Claire&nbsp; &nbsp; &nbsp;LAMP Developer Needed asap GBP30,000 FARRINGDON&nbsp; &nbsp; &nbsp;16:46<br>O'Keeffe, Claire&nbsp; &nbsp; &nbsp;LAMP Developer Needed Farringdon GBP30,000&nbsp; &nbsp; &nbsp;16:46<br>O'Keeffe, Claire&nbsp; &nbsp; &nbsp;PHP LAMP Developer Needed ASAP GBP30,000&nbsp; &nbsp; &nbsp;16:45<br>O'Keeffe, Claire&nbsp; &nbsp; &nbsp;PHP Developer with ASP Needed asap&nbsp; &nbsp; &nbsp;16:45</tt></p></div> </blockquote><p> [Pound signs replaced with "GBP" because I can't work out how to get this hateful piece of software to display HTML entities.] </p><p> Yes, that's eight pieces of spam in less than fifteen minutes. On a Sunday. Please boycott Huxley Associates. They are spammers.</p> hex 2007-09-16T18:13:38+00:00 journal I'm not happy with the "gravatars" on search.cpan.org. http://use.perl.org/~hex/journal/34438?from=rss While I appreciate the <a href="http://use.perl.org/article.pl?sid=07/09/09/1043253">intent</a> behind the recent decision to <a href="http://use.perl.org/article.pl?sid=07/09/11/0714218">add</a> these <a href="http://www.gravatar.com/">"gravatars"</a> to search.cpan, I feel that the execution has been poorly thought through. This is a summation of points raised so far. <ol> <li> <p> While it looks nice, Gravatar is slow as crystals forming on a frozen monkey's ass. This has led to the necessity of having to write a daily grab-and-cache system for the images. If it's that bad, why don't we just write something ourselves that doesn't suck? </p></li><li> <p> Poor URI design at gravatar.com: <a href="http://www.gravatar.com/avatar.php?gravatar_id=aae56c6a384319c00094d626845f6b6d">http://www.gravatar.com/avatar.php?gravatar_id=aae56c6a384319c00094d626845f6b6d</a> </p></li><li> <p> It costs money ($10/year) to have more than one email address added to the system. Frankly, the commercial aspirations of the person who runs Gravatar are embarassingly transparent. That went out with the bubble, guy. If you're going to propose a "global" system like this, you have to do it for free, because that's what people expect - cf. <a href="http://openid.net/">OpenID</a>. If you don't, somebody else will. (I wouldn't be surprised if someone in the Perl community up and does it, simply because of how poor gravatar.com is.) </p></li><li> <p> Talking of OpenID, I commented on one of the above posts that I'd only use Gravatar if it supported OpenID logins. I've been signing up to various websites for well over a decade now, and I'm dog tired. It's bad enough that I have separate PAUSE and BitCard and use.perl logins already; now we're going to throw in yet another incompatible system? </p><p> Yes, I know, as Schwern points out, that implementing OpenID support in PAUSE and Gravatar would take some work. The burden here falls largely on Gravatar. PAUSE doesn't need to fully support OpenID logins yet, but it could simply have a field for OpenID URIs in user settings and query Gravatar on that basis. </p></li><li> <p> Not every search.cpan user reads use.perl.org. Adding this feature to search.cpan.org without wider consultation is, I feel, a mistake. </p></li><li> <p> Having a user picture on author pages is fine, but I don't want my ugly mug staring out at people from documentation for my modules. Sorry, but that just looks unprofessional. </p></li><li> <p> If you're going to add "social" features, you have to go the whole hog. Add user accounts to search.cpan, with preferences. One of those preferences <em>must</em> be "Display author pictures?" </p></li><li> <p> Where is Graham? Why has he not participated in any discussions on this site so far, and we have to email our comments to him? And why is the code that runs search.cpan.org not open? I've heard that question asked over and over, and we've never had a satisfactory response. </p></li><li> <p> Before we start adding new stuff, can't we get our own house in order first? </p><ul> <li>cpanratings.perl.org ratings.cpan.org</li><li>cpanforum.com forum.cpan.org</li><li>annocpan.org annotate.cpan.org</li></ul><p> Yes, I know these are all different projects, but even though they're all fairly-well accepted by now, there's barely any interconnection between them, and they don't even have similar URIs. We're a mess. </p></li></ol><p> Until some more thought has been put into this, I think I'm going to follow the example of LotR on #perl and add gravatar.com (and search.cpan.org cached copies) to my AdBlock filters. </p><p> -- Earle </p> hex 2007-09-13T10:45:37+00:00 journal What happened to Perl in London bookshops? http://use.perl.org/~hex/journal/34014?from=rss I was in the Borders on Oxford Street today. Out of curiosity, I looked in the Computing section - it didn't help that it was abysmally organized, but I couldn't see a single Perl book. Not one. Zilch. I remember looking in Foyles a little while before that, and finding maybe two Perl books. Yes, two - and one of them was <a href="http://www.amazon.co.uk/Perl-Didnt-Know-Could-That/dp/0782128629">the one with the monkey on the front</a>. I had a similar result at a Waterstone's somewhere (I forget which), and wouldn't be surprised if Blackwell's don't have any either. <p> What happened?</p> hex 2007-08-06T21:03:53+00:00 journal Skipping tests not relevant to users http://use.perl.org/~hex/journal/33598?from=rss Mainly a note for my own later usage... <p> Test-driven development is great, but it comes with the overhead of all the prerequisites required by the testing libraries. So you may wish not to run all of your tests by default when the end-user installs your module. </p><p> Pete Sergeant (sheriff on IRC) suggests using an environment variable for doing this: </p><p> <code>plan skip_all =&gt; 'set DEVELOPER_TESTS to enable these tests' unless $ENV{DEVELOPER_TESTS};</code> </p><p> <a href="http://use.perl.org/~claes/">Claes</a> suggested: </p><p> <code>eval "use Test::Something::VeryDetailed"; plan skip_all =&gt; "..." if $@;</code> </p><p> So I would probably merge the two. </p><p> <code> if ($ENV{DEVELOPER_TESTS}) {<br> &nbsp;&nbsp;eval "use Test::Pod::Coverage";<br> &nbsp;&nbsp;plan skip_all =&gt; "..." if $@;<br> } else {<br> &nbsp;&nbsp;plan skip_all =&gt; 'set DEVELOPER_TESTS to enable these tests'<br> } </code> </p><p> This way you could save having to include all the developer testing modules in the Makefile.PL.</p> hex 2007-06-25T11:55:59+00:00 journal Shopping around for a new gig http://use.perl.org/~hex/journal/33388?from=rss <p> So, I'm casting my eye around <a href="http://jobs.perl.org/">jobs.perl</a> at the moment to see if there's anything good going in London at the moment. Is there anything out there I should particularly avoid? (Yes, I know about <a href="http://london.pm.org/mailman/listinfo/jobs-discuss">jobs-discuss</a>, but since I subbed to it a week ago I haven't seen any traffic.) </p><p> That said, if anybody's looking for a hacker, I'm available... happiest when the job spec is writing fresh Perl rather than maintaining a heap of soul-sucking legacy code. Also, preferably it would involve sane version control policy, code standards, and copious amounts of unit tests. (I like tests.) And if it were some kind of Web 2.0* company, that would be even better. </p><p> <small>* Yeccch! But you know what I mean. Interesting Web applications that <i>involve</i> people.</small> </p> hex 2007-05-31T21:19:44+00:00 journal perl5++ http://use.perl.org/~hex/journal/32684?from=rss And #perl++ too.<blockquote><div><p> <tt>15:30 &lt; hex&gt; golf suggestions plz: $foo = 1 if ($bar ne 'foonly' || $baz ne 'foonly' || $honk ne 'foonly');<br>...<br>15:36 &lt; claes&gt; hex: working on job security?<br>15:37 &lt; hex&gt; naw, just avoiding a pile of ||s.<br>15:37 &lt; claes&gt; ah<br>15:37 &lt; hex&gt; I went for my $foo = 0; foreach ($bar, $baz, $honk) { $foo = 1 if $_ ne 'foonly'; }<br>15:37 &lt; claes&gt; hex: use Perl6::Junction<br>15:37 &lt; hex&gt; claes:<nobr> <wbr></nobr>:D<br>15:38 &lt; mauke&gt; (grep $_ eq 'foonly', $bar, $baz, $honk) == 3 or $foo = 1;<br>15:38 &lt; avar&gt; my $foo; sub { $_ ne "foonly" &amp;&amp; $foo = 1 for @_; 0 }-&gt;(@vars);<br>15:40 &lt; kane[work]&gt; we *so* need an 'in' statement<br>15:40 &lt; mauke&gt; "$foo $bar $baz" eq "foonly" x 3 or $foo = 1;<br>15:40 &lt; kane[work]&gt; $foo++ if 'foonly' in ($foo,$bar,$baz);<br>15:41 &lt; avar&gt; kane[work]: it's in the next release of perl<br>15:41 &lt; kane[work]&gt; of course it is<br>15:41 &lt; kane[work]&gt; everything is in perl6<nobr> <wbr></nobr>:)<br>15:41 &lt; clintp&gt; And a pony.<br>15:41 &lt; avar&gt; if ("foonly" ~~ @vars) { $foo = 1 }<br>15:41 &lt; avar&gt; I mean 5.10<br>15:41 &lt; kane[work]&gt; ah<br>15:41 &lt; kane[work]&gt; perl5++<br>15:41 &lt; clintp&gt; perl5++<br>15:41 &lt; kane[work]&gt; perl5++ # exists<br>15:43 &lt; mauke&gt; "@{ +{foonly =&gt; 1} }{$foo, $bar, $baz}" eq "1 1 1" or $foo = 1;</tt></p></div> </blockquote><p> TIMTOWTDI: It's a lifestyle choice. </p><p> Apparently ~~ is the <a href="http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-12/msg00561.html">smart match operator</a>. (Thanks to mauke for bringing it to my attention, and to clintp for the link.) I'm looking forward to 5.10.... </p><p> Postscript:</p><blockquote><div><p> <tt>17:08 &lt; broquaint&gt; To add to hex's golf conversation because I'm too lazy to post to use.perl: my $foo = 'foonly' !~<nobr> <wbr></nobr>/^(?:$bar|$baz|$honk)$/;</tt></p></div> </blockquote> hex 2007-03-14T15:58:00+00:00 journal Let's make 2007 the year of Enterprise Class Software! http://use.perl.org/~hex/journal/32000?from=rss Last night I had a vision, or possibly a nightmare, in which I was engaged in writing a mighty application, which used not only <a href="http://search.cpan.org/dist/Class-Multimethods/">Class::Multimethods</a> and <a href="http://search.cpan.org/dist/Contextual-Return/">Contextual::Return</a>, but <a href="http://search.cpan.org/dist/Object-MultiType/">Object::MultiType</a> as well. Unfortunately, the blaze of light faded without telling me precisely what the application was. Clearly this was a message indicating the direction I must turn for my quest in the forthcoming year... hex 2006-12-24T20:34:48+00:00 journal Microsoft funding PHP development on Windows http://use.perl.org/~hex/journal/31468?from=rss Just saw this on Slashdot: <a href="http://today.reuters.com/news/articlenews.aspx?type=technologyNews&amp;storyID=2006-10-31T171644Z_01_N31453539_RTRUKOC_0_US-MICROSOFT-ZEND.xml">Microsoft forges ties with open source maker Zend</a>.<blockquote><div><p>"Bill Hilf, a Microsoft technical strategist, said the Zend deal, a multiyear, multiphase partnership, will ensure PHP programs run on past and future versions of Microsoft Web server software."</p></div></blockquote><p> Is it just me, or is the likelihood of a similar thing happening for Perl extremely unlikely, even though PHP, like Perl, has its roots in the *nix world? Why do you think that is?</p> hex 2006-11-01T11:29:34+00:00 journal Method theft http://use.perl.org/~hex/journal/31425?from=rss So, I just wrote the following: steal a method wholesale from somewhere else. (Not incredibly sophisticated, but new for me.) I don't currently have a particular use for it, but it seems to have potential for fun.<blockquote><div><p> <tt>#!/usr/bin/perl<br> <br>use warnings;<br>use strict;<br> <br>package Foo;<br> <br>sub foo {<br>&nbsp; &nbsp; print "1\n";<br>}<br> <br>package Bar;<br> <br>sub new {<br>&nbsp; &nbsp; bless {}, shift;<br>}<br> <br>sub steal {<br>&nbsp; &nbsp; my ($self, $call) = @_;<br> <br>&nbsp; &nbsp; my @segments = split('::', $call);<br>&nbsp; &nbsp; my $method = pop @segments;<br>&nbsp; &nbsp; my $class = join '::', @segments;<br> <br>&nbsp; &nbsp; no strict 'refs';<br>&nbsp; &nbsp; *{__PACKAGE__ . "::$method"} = *{$class . "::$method"};<br> <br>&nbsp; &nbsp; $self;<br>}<br> <br>package main;<br> <br>Bar-&gt;new-&gt;steal("Foo::foo")-&gt;foo;</tt></p></div> </blockquote> hex 2006-10-26T14:05:49+00:00 journal Photo Thing*, day two and more SQLite annoyance http://use.perl.org/~hex/journal/29334?from=rss <p> Okay, this is hardly on a par with the Pugs diaries, but then again I'm not a fucking scary genius like Audrey. Bear that in mind, sunshine, alright? </p><p> Anyway. After another six or so hours of hacking away on and off I now have a super-basic photo album system working, complete with tags. Although at present if you want to put photos <em>into</em> it you have to do it with SQL. By hand. But it works. Obviously sorting out out a tool for that is the next step. </p><p> My to-do list after that: </p><ul> <li>thumbnailing on upload</li><li>use real templating system instead of Just Printing Shit Directly</li><li>better URLs, none of this x.cgi?foo=bar rubbish</li><li>per-directory and per-photo annotation</li><li>RSS feeds: all photos, per-tag</li></ul><p> Talking of SQL, I discovered on the way that SQLite changed binary database formats again in January. Of course, the way I discovered it was an SQLite error message: "<tt>unsupported file format(1) at dbdimp.c</tt>". This caused me no small confusion, since I'd created the database with a freshly-downloaded <tt>sqlite3</tt> binary. I eventually found out via careful Googling that the format had changed and worked out that I needed a newer DBD::SQLite. But honestly, how hard would it have been for the SQLite guy(s[?]) to implement some form of version number parameter in the format? An error saying "This database was created by a newer version of SQLite" would have been <em>much</em> more helpful. </p><p> * This is my thrilling code name for the project. "use PhotoThing;" - so elegant, no? (Er, no. - Ed.) </p> hex 2006-04-15T21:32:30+00:00 journal You hear that? That is the sound of inevitability. http://use.perl.org/~hex/journal/29333?from=rss Guess I forgot to note anything here in the last year or so. Not that there was anything particularly notable. <p> Now I have moved one step further along The Road That Everybody Eventually Follows. I'm writing my own photo management software with tagging, Uncle Tom Cobley and all. Whoopie-doo, boys and girls. </p><p> I've been mulling over the way the way it's going to work for an awful long time - a year? I don't know, something like that, so with any luck it will spring from my head full-formed, like Athena. We shall see. I've racked up a couple of hours on it so far and I already have about half of an alpha prototype in fragments. Let the games begin.</p> hex 2006-04-15T03:06:02+00:00 journal Toronto ahoy http://use.perl.org/~hex/journal/25139?from=rss A week today I fly to Toronto. See some of you at YAPC! hex 2005-06-10T16:58:34+00:00 journal SQLite nightmare http://use.perl.org/~hex/journal/24191?from=rss Following hours of trying painfully to solve the problem from <a href="http://use.perl.org/~hex/journal/24182">my previous post</a>, teejay on <tt>#london.pm</tt> suggests trying to update the values manually. It demonstrates clearly that the problem is SQLite trying to be smart, not Perl (and that I should have tried it earlier). <p> Thanks a lot, whoever it was days ago in <tt>#perl</tt> who tried to come off as knowledgeable by saying "How do you know it's not Perl doing it", when I was asking about SQLite's behavior, because I was right in the first place. Now I've spent all my coding time in something like four days wasting my time trying to force Perl to do something when it was probably <i>already doing it</i>. </p><p> So. How on Earth do I get SQLite to behave? Anyone?</p> hex 2005-04-14T18:21:08+00:00 journal