A long while back (I’ll find the reference if I can) Stevan Little, author of Moose, commented that part of what he wanted for a p5mop was the ability to have truly private data in classes. Much in the way Perl 6 has
$!data attributes that are simply private data, he wanted to just be able to use Perl’s regular variables in this same way.
I took this as a bit of a challenge and several iterations later, I had a working system. I then spent months trying to decide if I wanted to put it on CPAN. I kept weighing utility vs practicality. Though it is an interesting thought exercise, I have no idea if its a good idea.
A few things happened which made me soften my view. Most importantly, the great Damian Conway released Dios which does bring lots more of the Perl6 style classes to Perl5. This lead me to stop worrying that people would actually try to use my module for real heavy lifting; if you need that use Dios. Also Stevan gave a talk at YAPC::NA which showed an exciting and I think very promising reimagining of the p5mop project.
With these two projects out there mine can just be a curiosity. I kept finding myself showing it off and wondering. Finally, today Yanick Champoux found himself pondering blessed-subref-based objects and I reminded him of my module, which I had shown him at YAPC. I mentioned that I still was on the fence about releasing it to CPAN, he replied:
So I did.
I’m happy — and a little scared — to introduce Class:Anonymous to the CPAN. It may be the strangest thing I’ve put there yet.
I have found myself in a bit of a CPAN exuberance these last few months.
While I have released several new modules, I haven’t found time to announce them individually.
Here then is a joint announcement of what I’ve been doing on CPAN lately.
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.