Continued contribution to CPAN ecosystem: secret?

Here are the real people who accepted my contributions and motivated me to carry on. I have compiled some really nice comments to help me when ever I feel low.

Distribution: Mojolicious::Plugin::NoReferrer
Author: Renee Baecker (RENEEB)
Pull Request: #1

Distribution: DBD::mysql
Author: Michiel Beijen (MICHIELB)
Pull Request: #246

Distribution: Perl::Critic::Git
Author: Guillaume Aubert (AUBERTG)
Pull Request: #9

Distribution: Plack::Middleware::PrettyException
Author: Thomas Klausner (DOMM)
Pull Request: #1

Distribution: OpenAPI::Client
Author: Jan Henning Thorsen (JHTHORSEN)
PUll Request: #11

Distribution: Mango
Author: Olivier Duclos (ODC)
Pull Request: #30

Distribution: decorators
Author: Stevan Little (STEVAN)
Pull Request: #6

Distribution: EventStore::Tiny
Author: Mirko Westermeier (MEMOWE)
Pull Request: #11

Distribution: Text::PerlPP
Author: Christopher White (CXW)
Pull Request: #28

Distribution: Map::Tube::Nuremberg
Author: Stefan Limbacher (STELIM)
Pull Request: #5

A big THANK YOU to all authors for the support.

SPVM Document beta 1.0

I start to write SPVM Document beta 1.0 by Japanese.

SPVM Doument beta 1.0(Japanese)

Nominate Perl heroes for the 2018 White Camel Awards

It's the 20th anniversary of the White Camel Awards!

We're looking for nominations for the 2018 White Camel Awards that recognize significant non-technical achievement in Perl and its community. Each year we recognize work in the broad categories of community, advocacy, and user groups. These people keep the Perl community going and deserve to be recognized!

White baby camel

To nominate someone, you can send me a name and your reasoning through any means you like. Reply here, post on Twitter (note @briandfoy_perl or use the #whitecamelaward tag so I'll find it), send me email, hold up a banner at the a famous sporting event where someone breaks a record and all the news covers it (I know, hard to plan), or something more creative. Note, however, that the method of nomination does not factor into our decision!

It's the Twelve Days of Dancer!

(apologies for not posting this sooner)

It's the Twelve Days of Dancer! This year, we have opted for a mini-advent calendar rather than a full 24 articles. This year's calendar has a lot to offer, including (*hint*) some crossover articles with another framework. Be sure to check it out!

Happy Holidays from the Dancer core team!

RPerl in Paris - Part I

The RPerl team is back! On November 21st, Will "the Chill" Braswell gave a presentation to the Paris Perl Mongers, at the Fondation pour le Progrès de l'Homme, or FPH. For those of you who've been to Paris, it is located in the Bastille area, not far from the opera house. The Foundation exists thanks to the generous legacy of Charles Leopold Mayer, and hosts a Linux meeting every Thursday. We were able to use this place thanks to Emmanuel Seyman, member of the Paris Perl Mongers, who organized this meeting.

The bullet points of Will's presentation were:

- The RPerl compiler, how it works, what it does
-, a free platform to write code and use the compiler
- The Perl 11 philosophy, and the various projects among the open source community based on its principles

Many thanks to the Perl Mongers who joined us, Sébastien Aperghis-Tramoni, Laurent Rosenfeld (author of Think Perl 6), Jean Forget, and of course Emmanuel Seyman.

We'll be back at the FPH soon...


Moose Still gets a A

It is follow-up day here in the Moose-Pen

Having gotten 100% in Database::Accessor it is time now to see what my coverage level with Driver::DBI. On the first run I got;

Thanks for Imager::File::WEBP

Thanks TONYC for authoring and releasing Imager::File::WEBP

All three major browsers now support WebP in a backwards compatible way, so with a few small changes to our Imager scripts our webpages can load faster and bandwidth be used more efficiently. Huzah!

PostgreSQL 11 Server Side Programming - Quick Start Guide

Last week my book PostgreSQL 11 Server Side Programming Quick Start Guide was released.


The book is a Quick Start Guide, that means it goes straight to the point, in this case, programming on the server-side of PostgreSQL.

Why is this related to Perl?
Well, one very cool feature of PostgreSQL is the capability to execute functions, and therefore triggers and procedures, in pretty much any programming language available out there. And this of course, means Perl!
In fact, Perl is very well supported in PostgreSQL to the point that the DO statement does allow you to use PL/Perl code instead of the PL/pgSQL one.

The other language I show, as a "foreign" language, in this book, is Java. My idea was to show to the readers the differences between using a language like Perl and one that requires a full compile-deploy cycle.

Hope the book can be useful.

namespace::local above, below, and around

My namespace::local module has got some new switches in v.0.04:

  • -above (0.04) emulates namespace::clean:

    package My::Package;
    use Lots::Of::Imports; # imports will only be available until end of scope
    use namespace::local -above;
    sub do_things { ... }; # this will not be hidden
  • -below (0.03) hides everything that follows it from outside view:

    package My::Package;
    sub public { ... };
    use namespace::local -below;
    sub private { ... }; # not available outside this module
  • default mode still confines imports and/or functions between the use line and end of scope:

    package My::Package;
    # cannot frobnicate here
        use namespace::local;
        use Some::Crazy::DSL;
        frobnicate Foo => 42;
    # can't frobnicate here, too

I also added a list of symbols that this module shall not be fiddling with, which is most likely incomplete.

Still it looks more like an Acme:: toy, to be honest. Who needs to hide their private functions? Just document the public ones to the point where nobody cares to look inside! =)

Have fun.

A++ Moose

Still in cover mode here in the Moose-Pen

I found another sub that was not being tested seem I never call 'da_warn' in my tests.

This one is a little special;

        sub da_warn {
           my $self       = shift;
           my ($package, $filename, $line) = caller();
           my ($sub,$message) =  @_;
           warn("$package->$sub(), line:$line, $message");
it is in 'Database::Accessor::Roles::Driver' so not really part of Database::Accessor but as it is in the file I think it should be tested. I have to set it up first by adding this line into the 'Database::Accessor::Driver::Test' class;

Monthly Report - November

I would like to dedicate November 2018 to the London Perl Workshop 2018. The main focus was LPW, being member of LPW Organizers. Lots of preparation went in the background to make it such a successful event. Kudos to all fellow members, community members and sponsors.

Two things are common in every monthly report and I can't live without it. One, submitting Pull Request as many as possible and second daily uploads to CPAN, as of today, 1st December 2018, is the 468th day non-stop. Post LPW event, I blogged about my experience as usual but I also talked about new ideas we (Ferguson, Rick and I) discussed. Since nothing has been finalized, it is not fair to talk about it. Just to give an idea, we talk about how to bring in more people into the Perl fold, specially school and college levels.

Rakudo.js mini update - Firefox support

One pain point when showing Rakudo.js was that it depends on a new version of Chrome due to using not yet everywhere native JavaScript big integers.
It turns out Perl 6 developers use a much wider array than your average Joe, so I decided to spend some time to support Firefox (which has a BigInt implementation under way) as well as all the bizare Chrome offshoots which might use an older V8.
I've transitioned from using the not yet avaliable everywhere native BigInts to using the replacement jsbi.
As jsbi is fresh technology porting rakudo.js even uncovered a bug in jsbi which I reported (and it got fixed by maintainers),
Once BigInts are everywhere we can transition back to using them.

namespace::local: hiding utility functions in moo[se] roles

Ever since I came up with namespace::local, clearly inspired by namespace::clean, I was wondering who would need it in real life.

Now I seem to have found an actual application: roles. Roles must be very careful about what's in the namespace to avoid conflicts. So any private subs that are there to reduce repeating code should ideally be hidden from external observer.

And it is possible with namespace::local -below. The below switch is introduced in 0.03, and it allows the names defined below the use lines to propagate above the use line, but not past the end of scope. This can be seen as namespace::clean working in opposite direction.

Example: if you comment both use namespace::local lines, this code blows up.

The Mighty Meta Moose

Find and fix a bug day here in the Moose-Pen

The great thing is the new tests I added to fix up my subroutine covers as reported by Delve::Cover revealed that I may have two new bugs in Database::Accessor.

The two fails were;

not ok 92 - no_create flag error on create
ok 93 - no_retrieve flag error on retrieve
not ok 94 - no_update flag error on update
The test is fine as it is failing with the expected error message 'Attempt to use create with no_create flag on' with the error message 'No Create, Update or Delete with retrieve_only flag'. I looked though the code and that error comes from here

LPW2018 Silver Sponsors

Without the investment from our sponsors it would not be possible to run LPW as a free event. We’re grateful for the support at a Silver level from the following four awesome companies!

Here at Adestra we empower our clients to maximize marketing ROI through email-driven technology. Our flexible account structure, obsession with customer success, and award-winning service have gained the trust of global and growing brands alike.

We’re proud to say we treat our people well: from excellent opportunities for career development to a positive, collaborative culture and great company perks, our global offices are a fantastic place to work at any stage of your career. As our client base continues to grow, we’re looking for talented individuals who share our values to come and grow their careers with us. With opportunities in the UK, Australia, and North America, now is an exciting time to join Adestra and become part of our global success.

DBD::Oracle 1.76 released

Including a wide range of bug fixes and some helpful enhancements as detailed in the Changes file.

If you are using DBD::Oracle, there is no reason not to upgrade (YMMV)

Check it out or using your preferred CPAN tools

Tackling Legacy Projects: an Experience in Perl - Free Ebook

There are several definitions for legacy code that have similar points, but overall people interpret the notion in different ways. For some it’s code without unit tests, for others it’s old code, for most it’s both. It’s not necessarily something vigorously debated, but opinions differ on what makes code legacy.

In this short ebook you’ll find more than just definitions, but a different perspective on legacy code in general and what it represents for Perl. To make things a bit clearer, the ebook also contains one of our experiences with a Perl legacy code project and the challenges that went with rewriting it.

Have a look!

Back in the Moose Track

It figured it out day here in the Moose-Pen

Well I really should bow my head in shame again as I got the whole Devel::Cover concept backwards. I thought that changing the code in my application would change the results of cover. Well I was dead wrong on that some further reading on my part and a few more test runs of cover I finally figured out that;

line %  coverage branch
94  50  T  F        if $self->gather
for this sub

Be generous, but not very

This is another blog post based on my experiences of validating user inputs. Here is the previous one, where I argue against the use of "eval".

"Be generous in what you accept" says the adage. I want to argue that generosity works sometimes, but it's all too easy to be generous to a fault, and cheerfully responding to nonsense input is a losing battle. The problem with being too generous is that you end up correcting or even rejecting the slightly poor inputs in a flawed quest to make sense of complete drivel.

DuckDuckGo and MetaCPAN

Not sure where the fault lies, but all DuckDuckGo search results pointing at MetaCPAN pages have as summary the bottom text about, Google searches are not similarly afflicted, as they show a more appropriate summary.

About is a common blogging platform for the Perl community. Written in Perl and offering the modern features you’ve come to expect in blog platforms, the site is hosted by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.