Moose Relations

So after yesterdays re-loadfest of getting all my win- registry in order, downloading the latest Strawberry perl, upgrading Moose and getting all the other perls in a row. I tried to work on my DA again and got

Class::MOP::load_class is deprecated at C:/Dwimperl/perl/site/lib/Class/MOP.pm line 69

yet agin.

Well this time I took the time to look at the rather shortened message, only about 15 lines compared to about 120+ for the first time I tired these new MooseXes so at least some things have been fixed up.

Anyway I spotted the problem seems 'MooseX::Role::Parameterized::Meta::Role::Parameterized' needed to be updated if MooseX::RelatedClassRoles is going to work. So a quick cpan install and the latest version was up and running. Now I only get
MooseX::RelatedClassRoles::__ANON__::SERIAL::1' requires the method 'LSD_class' to be implemented by 'DA_RC' at C:\Dwimperl\perl\site\lib\Moose\Meta\Role.pm line 472 …

Android App with the Perl5 to Java compiler

We've had another hackathon at work.

Yati, Bas, Luca and I hacked on the Perlito Perl5-to-Java compiler and also a bit of Perl5-to-JavaScript.

The changes are in GitHub and will be published in the next CPAN release.

The latest cool addition is an Android App example:

QA Hackathion in Rugby, Warwickshire, 2016

This year I discussed less and got more focussed on one thing, namely PAUSE, thanks to the kisses of the muse we got flooded with, that is Kenichi, Neil, Matt, Peter and me. Thanks to that, PAUSE is, I daresay, in a better shape than ever before and definitely on a good track towards the future.

Here's a short run down on my activities at the QAH in Rugby:

Fixed a bug discovered by Leo Lapworth in rrr synchronization: it turned out that a crontab item got mangled recently.

Joined the Test2 discussion.

Set up a smoker run for 5.18.4 with the Test-Simple releases 1.302014_001..7.

Finished the pre-Hackathon activities on getting the Perl Authors Upload Server (PAUSE) to work with two separate puppet instances, one for the system operation team, and one the application (together with Robert Spier).

Added sysv startup gears for the new plack-driven PAUSE server and fine-tuning configuration (together with Slaven Rezić and Kenichi Ishigaki).

Reflections on Test2

In a future post I will recount the details of my delightful experience at the 2016 Perl QA Hackathon (N.B. now published here). Since this is my first post since that time I do want to tip my hat to the great sponsors of the event and to my own employer ServerCentral without whom I would not have been able to attend. I will thank them in more detail in that post.

Before I get to that however, I want to post a reflection on one discussion that is and has been weighing on my mind since then. That topic is the upcoming release of Test2, which I consider to be a very important step forward for Perl’s testing architecture.

No News today

Well today’s blog was suppose to be me looking at some of the MooseXs I reviewed the other day. However I seems that Moose has moved quite foreword since the last time I did a new install and it seems I was getting 'Class::MOP::load_class is deprecated' in almost every thing I wanted to play with.

Well had a quick look at my Moose version was quite out of date. I had 2.06 or alike and I see now there is a shiny new 2.2009 release that is less than a month old so in that goes.

Well with the regular rigamarole I tried to reinstall my Moose and it crashed then my Padre stopped working. So I am thinking it is going to be one of those days where not much get accomplished.

Available for Perl Work

Hi All,

I am available for Perl work. I can work remotely or locally in the
Boston area. Also I can be on-site a reasonable amount of time depending
on travel logistics.

You can see my design and coding skills on CPAN (id: URI).

Damian Conway said this about me in his acknowledgements in Perl Best
Practices: "To Uri Guttman, for seeing things no one else did, in ways
no one else could."

If your Perl team is large enough (say > 5 or so), one of the best ways
to use my services is supporting your team with code review, optimization,
and related skills. This can be a part time deal and your team
will get productivity gains greater than the time invested.

Here are my areas of interest and expertise:

Architecture, Design, Development
Code Review, Mentoring, Refactoring
Optimization, Scaling
ETL, Parsing, Data Munging, Templating
Networking, Communications, Dataflow
Documentation, Specifications

You can reach me at U r i AT P e r l h u n t e r .com or call me at
781-643-7504.

As a bonus, let me know if you want a preview or to be a tech reviewer
of my article on dataflow architecture.

thanx,

Uri

Perl 6: The S/// Operator

Coming from a Perl 5 background, my first experience with Perl 6's non-destructive substitution operator S/// looked something like this:

(artist's impression)

You'll fare better, I'm sure. Not only have the error messages improved, but I'll also explain everything right here and now.

The Smartmatch

The reason I had issues is because, seeing familiar-looking operators, I simply translated Perl 5's binding operator (=~) to Perl 6's smartmatch operator (~~) and expected things to work. The S/// was not documented and, combined with the confusing (at the time) warning message, this was the source of my pain:

my $orig = 'meowmix';
my $new = $orig ~~ S/me/c/;
say $new;

# OUTPUT warning:
# Smartmatch with S/// can never succeed

Applying user-supplied regexes

My first post... not the snappiest title, but here goes...

Multiple Grep and Capture

I have a requirement for a module which performs the following:

Given a client-supplied list of regex patterns, which may or may not capture part of their output

And a search text
When I run my function.
Then return a list of tuples, where the regexp matches the search text. Each 'matching' tuple consists of the regexp, and an array of the captured elements of the text.

Important to note that: * we don't know up-front which regexes will be supplied - only that they should be valid * we don't assume there are any capture groups, but if there are, we would like to hold onto them

First attempt...

for my $re (@regexps) {
    my @captures = $search_text =~ /$re/;
    push @result, [ $re, \@captures ] if $&;
}

Searching for Mrs X

So yesterday I muddled myself up quite well, so It took a little time to see if I could come up with a solution. Thinking that someone else might have had the same problem I did a troll of Map of CPAN looking for a MooseX that might help me out.

Now I was looking at briefly at one point of using a delegated object but the problems with that is I contaminated my parent object with unneeded code and I would also have to iterate all the way though my attributes, never a good practice.

Perl 5 Porters Mailing List Summary: April 14th-27th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for two weeks I've missed. Sorry about that. Enjoy!

Alpine Perl Workshop 2016

This year, Austrian and Swiss Perl Monger groups join forces to host the first Alpine Perl Workshop, taking place at the University of Innsbruck on 2nd and 3rd September 2016 (that’s a week after YAPC::Europe). Attendance is free, though we do offer a voluntary business tariff (90€).

We are currently looking for Sponsors and Speakers.

Registration and Call for Papers is open: http://act.yapc.eu/alpineperl2016/

Please contact us if you like to volunteer with the website design.

Call for Papers

We are looking for talks about Perl 5, Perl 6, CPAN, other Perl-related topics, not-so-much-Perl-related topics and other interesting stuff. We offer 20 and 40 minutes slots, but prefer two shorter talks to one long. There will also be lightning talks (5 minutes).

Talks can be in English or German, preferably in the language you feel more comfortable in. As we expect some guests who might not speak German, it would be a good idea to provide English slides if you plan to speak German. But please consider that the majority of attendees will be German speakers (if we consider schwiizerdütsch, tirolerisch and even wienerisch as German..)

Please submit your talks via the website. Deadline for talk submission is 31st July 2016.

MetaCPAN at the 2016 Perl QA Hackathon

We made some very good progress on MetaCPAN at this year's QA Hackathon in Rugby. The whole post can be found here.

Well that's not it!!

So lets see how I am going to move those annoying 'sub SQL' that I have in my DA::View and DA::Element packages out of them and into my LSDs.

So going blindly where I have gone before though the I might Role for the Element class in DA::LSD::SQL and see what I can come up with. So I duly added this

My first QAH (QA Hackathon)

The QA Hackathon gathers various major contributors to the core infrastructure of the Perl language and the CPAN. People who have immense responsibility and whose contributions fuel our work and our businesses.

The QAH is a good opportunity for these contributors to discuss important topics, reach solutions or make decisions on how to move forward, and to hack on all the core infrastructure.

I was invited to this QAH hoping I will be able to contribute. While I finally got to see a lot of people I missed and had the pleasure of meeting people I've always wished, I also tried to work on several things, all described in the results page. I'd like to get into a bit of details regarding the work I did. Let's hope it was useful enough to justify my attendance.

Perl QA Hackathon - Thanks

Besides thanking the sponsors, I also want to have a dedicated entry to say a big Thank You to the organizers. Neil Bowers, JJ, and Barbie. It was an incredible experience, well organized, nice city, and especially a nice hotel which although it could not provide "the real Wall" at least tried very hard to surround me with little Perl history hints:

Thumbnail image for Nick-Clark.jpg

I'm looking forward to whatever Sawyer device they will invent after his 16th Perl release in a row. :-)

Another big Thank You to the Wendy for the support with fresh and healthy food. And also for the less healthy and chocolate stuff :-). And another big Thank You to all the other great attendees there - it is always a pleasure to spend the time with you all.

Thumbnail image for sandwich.jpg

use Net::SMTPS for specifying ssl version v1

I am migrating a couple of my domains from mandrill to sparkpost
Net::SMTP by default uses SSLv3 which is not allowed by many providers due to the poodle vulnerability . I had a problem with sparkpost API and had to use Net::SMTPS which is a wrapper for Net::SMTP and you can specify the SSL version.

And now for Tea

Now in my last post I left off with a bit of a code mess. Roles bleeding code into each other and my API in a dreadful state.

Well on thing I have seen before in non moose apps was use something called 'Class::Rebless' to rip the 'DA::LSDs' from my DA class but that is sort of an abuse of that code as it really is just for renaming name-space and I am not sure it will do what I want.

I had a look about the Moose::MOP class and found something called 'rebless_instance' which should take my original class, in this case DA with one or more LSD roles back to just a DA class.

Seems like a good idea but I think I would be opening myself up to a whole new slew of problems as I would only have a base object perhaps with it attributes in place and any other roles I may want removed.

So what to do??

Extra-Typical Perl 6

Have you ever grabbed an Int and thought, "Boy! I sure would enjoy having an .even method on it!" Before you beg the core developers on IRC to add it to Perl 6, let's review some user-space recourse available to you.

My Grandpa Left Me a Fortune

One way to go is to define your own custom Int-like class that knows how to perform the .even method. You don't have to reinvent the wheel, just inherit from the Int type. You can mix and match core Perl 6 types and roles any way that pleases you.

Perl QA Hackathon report - part 3: Net::SSH::Perl v2

This year at the Perl QA Hackathon I had three topics: benchmark update Perl until 5.24, enable CPAN test reporting on L4Linux, release a Net::SSH::Perl v2 to CPAN.

Part 3 - Net::SSH::Perl

I am co-maintaining Net::SSH::Perl, though usually I just apply patches that come up on RT or github.

Some months ago Lance Kinley implemented modern ciphers like AES, more key exchange algorithms, etc. on github - however he started from a CPAN .tgz snapshot. With the help of E. Choroba I got Lance's history rebased to my repository. However, I was short on time and wanted to do release polishing during the hackathon, and so I did.

The only trouble I had was that another patch from Brad Lhotsky which I merged earlier did conflict with Lance's changes in a way that I could solve in a git way but some tests kept failing and I did not understand why.

To be sure to not screw things up I had to give up merging and only released Lance's extensions to CPAN as a new major release v2.01.

As a side effect I also uploaded another new module from Lance, Crypt::OpenBSD::Blowfish, to CPAN.

If you are a user of Net::SSH::Perl please test if it works.

Debugging adventure - why it's hard to estimate

This is the second instance in recent time where I thought it was a quick fix but ended up taking way more time than it should. The first was an iOS app submission which was something Apple changed recently. This is a perl example so posting it here.

Mandrill is shutting down . I was using their service for my domains table tennis match and Brainturk brain games online . I looked at the alternatives and settled with sparkpost . This is the sparkpost example for using perl . It seems simple enough so I asked my employee who is learning perl to try it out . When we ran the example we started getting an error . This example uses Net::SMTP and running it in debug mode gave us this

RCPT TO: <x@mydomain.com>
550 5.7.1 relaying denied

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.