Perl 5 Porters Weekly^WMonthly: January 2013

Cross posted from my own blog

Welcome to Perl 5 Porters Monthly, a summary of the email traffic of the perl5-porters email list.

Well, that was a nice little break. I didn't intend for it to be so long but there you go. Life gets real sometimes. To catch up I'm basically going month by month through most of April. I plan to resume monthly summaries starting the week of April 29, 2013.

Topics for this month:

These are all of the "read the thread" link variety.

Interview with Jeffrey Thalhammer

I have been trying to conduct interviews for, I think at least a year, but I was never able to figure out the technology. It is still not what I'd like to have, but I think it is reasonably good already to get started.

So let me show you the first interview with
Jeffrey Thalhammer, author of Perl::Critic and Pinto

Code Evolution Versus Intelligent Design

I didn't actually intend for this to be a series of posts, but hey, that's the consequence of going with the flow rather than rigidly planning everything out beforehand and it nicely mirrors the theme of:

If you have not read those, I strongly recommend that you do so before continuing on this post. Mostly the comments have been positive, but Adrian Howard has offered some interesting counter-points and some good resources for further reading. I will not say that he's wrong, but there is a different way of looking at this situation.

Perl5 Census Japan 2013

During Apr 7 - 19, I conducted a web questionnaire targeting Japanese Perl users, which I titled "Perl5 Census Japan 2013" ;)

I purposely asked people spreading the news to specifically state that this was not just for hardcore Perl users, and that even if you did't use Perl much these days, I still wanted your input.

So over approximately two weeks I got 394 replies, and I've compiled the results in my blog. However, this is all in Japanese, and even with Google Translate, the outcome was pretty um, poor.

So here's a (terse) version in English so y'all can see. This will probably give you an insight into how the Japanese Perl community looks like, and what type of technology they prefer.

Pinto::Remote and Pinto::Server

Today I was glad to read that the successful merge of Pinto::Remote and Pinto::Server into its main Pinto repository made Pinto::Remote work again.

I wanted to know how difficult a setup of a Pinto server could become. The requirement behind was to access a single cpan-like repository for deploying server machines. The repository should contain company-provided distributions optionally combined with a collection of cpan-available distributions.

Diagnosing module installation problems in Heroku

I've been playing with Heroku (a platform as a service) and Mojolicious, which works very well if all of the modules install. Greg Hinkle shows you how to do it. Create your mojo app and deploy it easily to Heroku. As you do, it's dependencies are installed for you.

Pure Perl modules are usually fine, but Heroku is a limited Ubuntu environment that doesn't have all the libraries you probably expect to already be there. One of the modules I needed had DB_File as a deep dependency, so deploying my app (with Heroku toolbelt and Mojolicious::Command::deploy::heroku) fails. I get the rainbow barf from the uni-raptor.

barfing-raptor.png

Marpa's SLIF now allows procedural parsing

[ This is cross-posted from the Ocean of Awareness blog. ]

Marpa's SLIF (scanless interface) allows an application to parse directly from any BNF grammar. Marpa parses vast classes of grammars in linear time, including all those classes currently in practical use. With its latest release, Marpa::R2's SLIF also allows an application to intermix its own custom lexing and parsing logic with Marpa's, and to switch back and forth between them. This means, among other things, that Marpa's SLIF can now do procedural parsing.

What is procedural parsing? Procedural parsing is parsing using ad hoc code in a procedural language. The opposite of procedural parsing is declarative parsing -- parsing driven by some kind of formal description of the grammar. Procedural parsing may be described as what you do when you've given up on your parsing algorithm. Dissatisfaction with parsing theory has left modern programmers accustomed to procedural parsing. And in fact some problems are best tackled with procedural parsing.

Factoring integers in Perl

Recently I've been working on factoring and primality proofs (with certificates) for Math::Prime::Util. I thought I'd give a brief summary and comparison of the modules I know of for factoring integers from Perl.

Perl && jQuery && XML && ! taconite

Hi All

If you're in a hurry, jump to my latest (6th) Perl + jQuery tutorial.

In short: I don't use the clever jQuery add-on taconite because it supports only commands (verbs) and I needed conditional execution (an 'if').

Nevertheless, I pinched-er-adapted the idea to unilaterally update some parts of the DOM, and to conditionally update other parts.

Happy reading...

When Must You Test Your Code?

Recently I wrote about how to be agile without testing (if you haven't read that, you should do so before reading this). I was planning on a follow-up after some comments came in and so far the reaction was decidedly mixed. I think that's a shame because not many people seemed to focus on the punchline:

And that's really the most interesting idea of this entire post: your customer's behavior is more important than your application's behavior.

Perl Tutorial in 10 languages

Just a little more than a month ago I only had the English version of the Perl Tutorial I have been writing for a while. Then Felipe da Veiga Leprevost offered to translate it to Portuguese and now there are 9 more translations at various stages.

It is extremely nice to see people volunteer their time to help others....

Travis CI ♥ Perl

Travis CI is a hosted continuous integration service for the open source community.

Essentially you set up a git post-commit hook that causes your tests to get run on every commit, against a number of different Perl versions, with databases and other services available if needed. And it's all free!

If you visit https://travis-ci.org/ you can get a feel for the interface and the tests that are being run. For a particular commit you get a build, for example WebService::Nestoria::Search build 1, which has a sub-build per Perl version, for example WebService::Nestoria::Search build 1.1 (perl 5.16). As you can see you get the full output from the Ubuntu VM that's running your tests, so if anything does go wrong it's pretty simple to debug.

For the rest of this post I'm going to describe the integration process, in particular hitting on how to make it work with Dist::Zilla-based projects.

Thought for the day: Perl 5 is English; Perl 6 is Esperanto.

Esperanto may be a saner language than English in every way.

But English is the language of Shakespeare, of Milton, of Byron, of Dylan Thomas; the language of Arthur Conan-Doyle and Agatha Christie; the language of Tolkien and C S Lewis; of Lewis Carroll and Beatrix Potter. It's the language of Stoker and Shelley.

Wikipedia notes that over 100 original novels have been published in Esperanto. Big woop-dee-doo(!)

I want to be able to use Perl 6 day to day, but not if that involves missing out on Perl 5's literature (i.e. CPAN).

Thank you Ack!

People may have noticed my absence from the Perl world lately. I have been writing my Ph.D. thesis (179 pages on Ultrafast Electron Microscopy with my Physics::UEMColumn Perl module featured) and defense.

Ack is a tool for searching code and text. It works much like the unix tool grep, although it is imbued with the power of Perl. To mark the release of Ack 2.0 though I wanted to mention a few one-liners that made my life easier in this stressful time.

Ruby's share drops on github, Perl's stays

Source: https://github.com/languages

Oct 4, 2012:
JavaScript 21%
Ruby 14%
Python 8%
Java 8%
Shell 8%
PHP 7%
C 6%
C++ 4%
Perl 4%
Objective-C 3%
Apr 19, 2013:

Idea - costmodel for B::Stats

Co-workers often ask me, what is faster. This or this?

Of course you can benchmark the real speed, but theoretically you can look at the optrees and predict what will be faster.

mozilla:ldap error

We are getting the version check failed on the perl Mozilla LDAP module installed from redhat package.
#Perl -MMozilla::LDAP::Utils -e 1

Mozilla::LDAP::Utils does not define $Mozilla::LDAP::Utils::VERSION--version check failed at /usr/lib64/perl5/vendor_perl/Mozilla/LDAP/Conn.pm line 52.
BEGIN failed--compilation aborted at /usr/lib64/perl5/vendor_perl/Mozilla/LDAP/Conn.pm line 52.
Compilation failed in require at /usr/lib64/perl5/vendor_perl/Mozilla/LDAP/Utils.pm line 49.
BEGIN failed--compilation aborted at /usr/lib64/perl5/vendor_perl/Mozilla/LDAP/Utils.pm line 49.
Compilation failed in require.
BEGIN failed--compilation aborted

mod_perl 2.0.8 has been released

I'm pleased to announce that mod_perl 2.0.8 is coming to a CPAN mirror near you, as well as the following Apache project website links (note that the Apache.org links may take a few hours to propagate to the mirrors).

Thanks to all the contributors on this version!

http://apache.org/dist/perl/mod_perl-2.0.8.tar.gz
http://apache.org/dist/perl/mod_perl-2.0.8.tar.gz.asc (pgp sig)

30 Million Reports

Congratulations to Nigel Horne for submitting the 30 millionth CPAN Testers Report. The report itself was a PASS for DBI.

Perl 5.18: getline and $/ = \N

Perl 5.18 will ship with a change in behaviour when using getline() (aka the <$handle> operator) on handles marked as returning Unicode where $/ is a reference to an integer.

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.