Perhaps a misleading title. Seeing as this is not a political blog but a Perl one, I’m going to talk about method chaining, not worker’s unions.
Method chaining is the practice of consecutively calling methods on the return of a previous method. This comes in primarily two flavors. The first isn’t as common in Perl, though it is used extensively in
Mojolicious, is when a method has nothing useful to return, it can return itself. This allows for say chaining setter methods
$self->set_foo("FOO")->set_bar("baz"), or chaining related test methods
my $t = Test::Mojo->new;
->text_like('#id' => qr/foo/);
While this is useful, it’s not my topic today. I’m going to talk about the more simple form, calling a method that returns an object, then calling a method on it, and so on.
This post announces the release of Mojolicious::Command::nopaste, a clone of App::Nopaste using the Mojolicious toolkit.
I wrote it mostly as an example of using Mojolicious and its command system, but it has the side benefit of having a much lighter dependency chain than the venerable original (I already have the only required dependency on every box I use).
It also has a few bugfixes that the nopaste author either hasn’t tripped on, or had the time to fix (mostly in the Clipboard interaction on Linux) (sartak if you want to ping me I’d be happy to work with you on it). It has a slightly different list of services, including the very fun MathB.in but lacking Gist for now since the OAuth is something I don’t want to deal with yet. Any other services that people are interested in may be contributed via a PR or even a decent api spec.
PDL (“Perl Data Language”) gives standard Perl the ability to compactly store and speedily manipulate the large N-dimensional data arrays which are the bread and butter of scientific computing.
PDL turns Perl into a free, array-oriented, numerical language similar to (but, we believe, better than) such commercial packages as IDL and MatLab. One can write simple perl expressions to manipulate entire numerical arrays all at once. Simple interactive shells, pdl2 and perldl, are provided for use from the command line along with the PDL module for use in Perl scripts.
As a frequent PDL user and occasional contributor, I am happy to pass along this note from Chris Marshall and the whole PDL team. Read the entire release message here.
It is with great pleasure that the PDL development team
announces the release of the latest version of the PDL
Data Language with 64bit platform support.
This release would not have been possible without the
contributions of developersChris Marshall, Craig DeForest,
Derek Lamb, Dima Kogan, Rob/Sisyphus, David Mertens,
Diab Jerius, William Parker, and Henning Glawe.
A special thanks also to those who helped with bug
reports, problem discussions, and, of course, participation
in CPAN Testers which has helped to make the best
tested PDL release ever!
Enjoy and Happy PDL-ing!
The PDL Development Team
Mojolicious’s 4.0 release came with lots of shiny features but it also came with a lot of housecleaning. One of the old things swept away was the
memorize helper, which would cache a part of a template and prevent its repeated evaluation. Do you miss it, as some users undoubtedly do, or else does this helper sound useful to you? Then read on, because its back and better than ever!
I have recently started a new job and it has forced me to learn more Python than I have ever had need to learn. I decided that I should take this as an opportunity to learn, and as Miyagawa-san has often done, steal when possible.
One thing that fascinated me is Python’s
yield or generator pattern. In this pattern, you can make a function (or my case an object) which implements a lazy iterator returning a value (or possibly values (see below)) without leaving the
while loop that generates them.
On behalf of the PDL Porters, and especially our tireless leader Chris Marshall, I am very happy to share the news that PDL 2.006 has been released, I’m reposting the announcement here, find the full message including release notes on the mailing list. It even includes my first contributions to the PDL core :-) Enjoy!
The PDL development team is pleased to announce
the official release of PDL-2.006 and an updated
draft of the PDL Book to accompany its release.
Of specific note:
PDL VERSION numbers now use single decimal
format. This will be the standard going forward.
PDL now has three graphics options that build on
all supported PDL platforms (thanks to work by
Craig DeForest and David Mertens and a host of
- PDL::Graphics::Simple a basic 2-D graphics layer
that can use many of the existing PDL graphics
modules with a uniform syntax.
ASPerl build issues have been resolved thanks
to relentless testing, verification and fixes by
Rob/sisyphus and other win32 PDL users.
As always, go to http://pdl.perl.org for information
about all things PDL and how to get PDL for your
PDL-2.006 Release Manager
Just a little note to announce the release of Galileo version 0.023. Galileo is my CMS that aims to be 100% CPAN installable, all you have to do is this:
$ cpanm Galileo
$ galileo setup
$ galileo daemon
This release makes installing even better, because now when you run
galileo setup you get a web interface to configure your CMS and then install the database!
Ok that image is just slightly ahead of what is now on CPAN, but its close :-)
A few days ago, I announced the release of Mojolicious::Plugin::ModuleBuild. After some thinking I realized that without much (any?) changes it would work more generally, even with the ExtUtils::MakeMaker toolchain. Therefore I am now announcing the availability of Mojolicious::Plugin::InstallablePaths.
The general concept is that Mojolicious applications assume a certain directory structure for use locally. To make a CPAN-installable distribution out of that application one must move some directories. Further, if packaging using Module::Build, even more changes had to be applied.
Mojolicious::Plugin::InstallablePaths allows a consistent usage in all phases of development and with either build tool (EUMM or Module::Build). Hopefully this helps encourage people to think of their Mojolicious apps as candidates for CPAN and makes it easier for them to share them with the world that way!
The old module will be marked for deletion and the old blog entry will be removed as well, so don’t try to use it, its going away.
Not too long ago, I asked for input on a new module: Module::Build::CleanInstall.
TL;DR its out there, go use it!
I am happy to announce that Alien::Base (GitHub) has seen a beta release, version 0.001. It seems that my design change that I previously blogged about has indeed fixed (well avoided) the problems that I was having supporting Mac.
This is not to say that Alien::Base is quite completed. While I have released two testing modules which are an Alien:: module (Acme::Alien::DontPanic) and a dependent module (Acme::Ford::Prefect) these are very simple modules. To be sure that the API is flexible enough and that the loader mechanisms are robust enough Alien::Base needs to be used in the wild.
This week’s Chicago/WindyCity.pm meeting, our monthly Project Night, will feature (though not exclusively) creating these modules. I personally will work on porting Alien::GSL to the Alien::Base system. I hope that if you are in the area you will consider attending or if not please attempt to wrap your favorite C library using Alien::Base and let me know how it goes.
Also, please try installing Alien::Base, Acme::Alien::DontPanic and Acme::Ford::Prefect (in that order, though installing Ford should just work), and let me know how that works on your system. I have been developing on Linux and have run some tests on Mac obviously. I have seen some conflicting reports on different Windows/Perl combinations, so this remains to be seen.
I am very happy to have reached this point, and I want to thank the Perl Foundation and my grant manager Makoto Nozaki for their patience with me. This was supposed to be a short project and it has become a much longer one than originally proposed. Hopefully the community will find it useful.