RPerl in Paris - Part II

Hello everyone, and Happy New Year!

Previously, on "RPerl Around The World", the team was in Paris for a meeting with the Paris Perl Mongers, and then left for the London Perl Workshop.

We are now back in Paris for another meeting at the FPH building (Fondation pour le Progrès de l'Homme). Every Thursday, the FPH hosts a Linux technical meeting, providing a place for programmers to work on their various projects. Thanks to Emmanuel Seyman, we got to meet two of the Linux programmers, Stéphane Gigandet and Pierre Slamich. They work on a collaborative open source Perl project called Open Food Facts.

Open Food Facts is a food products database. It is a non-profit project meant to give as much information as possible to consumers regarding the food products they buy. The project was launched in 2012 by Stéphane Gigandet. You can learn all about it here: https://world.openfoodfacts.org/

This Paris meeting was an opportunity for us to learn about what Open Food Facts does, and for them to learn about RPerl and its possible use with their database platform.

openfoodfacts_logo.png

Skeleton Week: Perl plugin for collectd

This is the first year that I can recall during which I have not been at $work. I like the easy commuting, empty car parks, long lunches etc. then taking leave when everyone comes back.

UUArgSS.jpg

Since you won't be releasing (will you), it's a great time to work on some "we really should" projects.

Enhancements to monitoring are great candidates. There is always something else that can be graphed or alerted upon.

I stumbled upon this article detailing how to create a perl plugin for collectd. The author scrapes the html from the web interface of an ADSL modem, retrieving various stats which collectd then reports.

Check it out: https://apfelboymchen.net/gnu/collectd/collectd-perl.html

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)

RPerl at the London Perl Workshop

Only a few days after our Paris presentation, RPerl Team went to London for the London Perl Workshop.
It took place at the University of Westminster, in central London. We had an RPerl booth, and Will gave a talk about Perl 11.

If you missed the talk, here's a quick summary: Perl 11 is not (yet) a version of Perl, but is a philosophy, or a way of thinking about Perl toward reuniting Perl 5 and Perl 6. There are several projects that fall under the Perl 11 philosophy, RPerl, cperl, and WebPerl for example.

A quick Q&A followed, which continued at the RPerl booth. Also, the Team RPerl appeared one last time during Lightning Talks, giving a commercial for RPerl & Perl 11 as requested by the London Perl Workshop organizers.

It was a very enjoyable day, we got to make new friends among the community, and see old ones. We would like to express our gratitude to the London Perl Workshop organizers, for helping Team RPerl have a presence in the UK. Also, thank you to our friends Wendy & Liz for welcoming us to London after welcoming us to Glasgow, and thank you for the photo!

RPerl_LPW.jpg

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!

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;

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
- Cloudforfree.org, 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...

48052379_2158618961054495_3183407043713171456_n.jpg

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.

cover.png

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.

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 Accessor.pm 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;

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.

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.

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

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.

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!

Adestra
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 https://metacpan.org/release/ZARQUON/DBD-Oracle-1.76 or using your preferred CPAN tools

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

About blogs.perl.org

blogs.perl.org 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.