Enter MooseX, Appendix II Last One I Promiss!

Well This should really be the last one in this series baring any big problems that come down the line if people ever end up using this MooseX.

So in my last post I applied the first patch to my MooseX by simply clicking a button on github and I must say I am pleased with the result

So not I get a full green board on CPAN testers for V0.00.05 with 33 passes and 33 attempts however I do see that my compatibility Matrix isn't that broad covering only two OSs.

Looking back a bit comparing to my first result I got 276 attempts, 95 FAILs, 17 NAs 164 PASSes, so I tested on a larger number of boxes but failed a large number of tests.

"Functional core & Imperative shell" : OO design, and isolated tests without mocks

Following Ovid's Sick of being mocked by unit tests and the link to the discussion is TDD dead between Kent Beck and others, I found this talk and it seems like a promising solution. I'm writing this post to share it with you all, but also to clarify ideas for myself.

The original goal is to do isolated unit testing without using Test Doubles (mocks, stubs, etc), and the method is called "Functional core & Imperative shell". According to its creator it also leads to cleaner design, which is more important than testing in the end. So we're fetching two stones with one bird.

Here is how to do it in theory:

Silliness of the day: digit-by-digit tab completion for ints/floats

I was hacking on Perinci::Sub::Complete these past two days and I thought I'd add a (silly) feature that most other completion libraries don't (bother to) have.

A month of my work on MetaCPAN report.

I just updated my blog about my work on MetaCPAN as I have been working on The Outreach Program for Women for fully a month. Here : My blog

Enter MooseX, Appendix I Not Again!!

Honestly I though my last post would be the final one of this rather lenghty series but I was wrong.

Seems soon after my release I got what I think is my first ever 'Pull Request' from github from the resident mooz giiyosewinini na Toby Inkster so I had to post on that today.

Well Seems there is a better fix for the bugs/errors that where thrown in the first version of MooseX::AuthorizedMethodRoles as the root of the problem was the inability of perls less that 5.8.8 to figure out that the $requires part of

 
 foreach my $key (keys($requires))
is a hash.

Well I must of really been up late when I wrote that up as I normally, as force of habit,
wrap my hash refs with {} like this

System Sleuthing - Using ptrace to Print Backtraces

I recently developed a Perl module that allows you to print backtraces when your program makes certain system calls; see my blog for the full story!

Moose MonkeyPatching With a Mock UserAgent

In this post: https://blogs.perl.org/users/samuel_kaufman/2014/06/when-a-fat-comma-is-confusing.html I mentioned I was using Test::LWP::UserAgent for my test. One thing I struggled with was testing ( with a mockup ) a service which was being instantiated completely beyond the scope of the test- so even though it took ua as a parameter to the constructor to override the default LWP::UserAgent->new, I couldn't reach down inside the Catalyst controller where it instantiated a module with the default parameters from the test.

So in case anyone else has had similar issues, here's how I got it working:

Giving up on weekly neoCPANisms

For a brief period of time (well, one week), I had a chain of 4 weekly neoCPANisms in NEILB's NeoCPANisms contest (which is subtly different from the Monthly New Distribution Challenge 2014 quest on questhub).

Then at the end of week 23, instead of pushing out an entirely new module (I have a two or three "almost ready" distributions in my CPAN folder), I decided to give up.

Enter MooseX, V Well Thats a Wrap

Well a wrap for Kwalitee at least as my little changes from my last post left me with only one Extra metric

is prereq

Well there is not much I can do about that unless one of the many legions of my readers, (well maybe a contubernium at least) will have to do that for me.

So I did improve from 86%/111.2 in version 00.001 to 100%/134.4 for version 0.00.04 so not bad but what does this mean?

Well in the end not much as it is only a game and I am sure there are plenty of Mods out there that have a less than stellar scores but are made to very high standard.

A marvellous source of color info

Here, I've entered ff9600:

http://www.color-hex.com/color/ff9600

When a fat comma is confusing

I frequently swap out commas for fat commas ( => ) when I think it reads better. One place this bites me in the ass is when I reread code where I'm using a function that takes two parameters but look like they could take more. This recently happened to me with Test::LWP::UserAgent.

I started with the docs' example:

$test_ua->map_response(
  "myapp",
  sub { HTTP::Response->from_psgi($app->($_[0]->to_psgi)) },
);

Then thought this would look prettier:

$test_ua->map_response(
  myapp =>
  sub { HTTP::Response->from_psgi($app->($_[0]->to_psgi)) },
);

Then of course I came back two days later and added:

When a failure is not a failure

[What I really should have done here is something like Tom Wyant or Joel Berger.  Being a literary type, that appeals to me.  Of course, with Dupin and Holmes taken, who would I pay homage to? Nero Wolfe, perhaps? Batman? Michael Westen? Harry Dresden?

Anyways, maybe next time, if I have more time to prepare.  For now, you’ll have to settle for plain ol’ me.]

At $work, I’m the guy who maintains the tool we use for branching, merging, pushing ... release management, I suppose you’d say.  I don’t actually do the pushes most of the time, but I’m usually the guy who takes the tickets when there’s something wrong with the process.

Enter MooseX, IV 100% Nice and Clean

Well I did it my Kwalitee results are now at 100% but I see from a comment on my last post that there is a way to fix an Emperimental metics

metayml has provides

and that is to use 'MetaProvides::Package' so a quick update to my ini file and of course it did not work as I did not have the plugin installed so after a few minutes looking blankly at my screen I figured this out and installed the plugin!

So after a few false runs I figured it out all I need to do it put the package that calls the other packages like this

[MetaProvides::Package]
MooseX::Meta::Method::Role::Authorized = 1

the one meaing look for other packages and in my META.YML I get

Conflict Resolution: local::lib and git's Perl

I ran into a frustrating problem the other day:

$ git add -i
/usr/bin/perl: symbol lookup error: ~/perl5/lib/perl5/x86_64-linux-thread-multi/auto/List/Util/Util.so:
undefined symbol: Perl_xs_apiversion_bootcheck
fatal: 'add--interactive' appears to be a git command, but we were not
able to execute it. Maybe git-add--interactive is broken?

I've seen this error message from Perl a lot. It basically means that I'm trying to load an XS module compiled for a different version of Perl. Since git is directly trying to run /usr/bin/perl (5.10.1) as opposed to the perlbrew Perl I have installed (5.16.3), the error comes as no surprise: PERL5LIB is checked before Perl's built-in libraries. So if you have a local::lib (which adds its directories to PERL5LIB) and try to use those modules in a different Perl, things may not work as you expected.

General hardware hackathon at YAPC::NA 2014

How many Perl programmers does it take to change a lightbulb?

Wait, I thought that was a hardware problem. Well, it used to be; now it's a new module to contribute to CPAN, a new web service, or maybe something not dreamed up yet. Thanks to a proliferation of inexpensive SBCs (Single Board Computers), such as Arduino and Raspberry Pi, and an amazing array of easy-to-use sensors and actuators, the lines between programming and hardware are blurring fast.

Sort the videos by date

In the last couple of weeks I had some more time publishing and featuring videos on the Perl TV site. Today I even managed to work on the UI a bit. It is still close to what Dancer provided as default, but now you can already opt-in to see the dates of the videos and the dates they were featured on. You can also sort by any of the columns.

For the former, there are two toggle buttons on the right side of the page. For the sorting, just click on the title of each column. (Currently only ascending sort was added.)

Try, for example the list of all the videos.

Just a little background

The objective of the PerlTV site is to collect, categorize, annotate, and promote Perl-related screencasts and videos. Its source (both code and content) can be found GitHub.

Enter MooseX, III Now Lets see whats up.

So I have the latest Kwalitee results from my latest changes and I have improved a little now at 96.88 up from my 84.83 and only one Core fail

package version matches dist version

Still haven't got that right but at leas my README.pod is acceptable to CPANTS.

So a quick look and yikes I guess I fixed the Dist::Zilla ini file

name = MooseX-AuthorizedMethodRoles
version = 0.00.02
author = John Scoles
license = GPL_1


but did not fix the main module

On the awesomeness of the Perl community v2 (201406)

Remember how I pointed out last year that the Perl community is *AWESOME*? Well, glad some things stay the same :)

This year I am part-time unemployed and was only planning to maybe visit YAPC::EU in Sofia. I wasn't looking to do another crowdfund because, well, others should get a chance too :) And in fact one such campaign is running right this moment for our very own Leon 'leont' Timmermans. The fact it has been up for several hours and is already closing to 10% makes me quite happy and confident I'll meet Leon in sunny Orlando in couple weeks.

The Captain Is Dead

Last year at YAPC::NA a few dozen of you helped me play test a new board game I was working on called The Captain Is Dead. Well actually back then it was still called Bridge Command. Almost universally you asked me to let you know when the game was ready so you could buy a copy. I'm here to let you know that the game has officially launched on Kickstarter.

tcid-300x500.jpg

I'd also like to give a shout out to Tony Cook, the maintainer of Imager. Nearly all of the graphic design work done in the game was rendered using Perl and Imager. It made running the hundreds of variations of the game over the past year a snap. Thank you Tony!

Google misleads users

RT #96394 in a nuthsell:
user searched for Perl CPAN PayPal, Google led to
Business-PayPal-0.03 on search.cpan.org which pointed the user
to "Latest Release: Business-PayPal-0.04" which he missed and thus opened the ticket.

In fact, as of this writing, the latest release is is 0.13, but who cares if you make sure only the stable, version-independent link is indexable by Google.

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.