Dist::Zilla Its a Wrap VI

Last one I promis in the Dist-Pen

The go of my Dist::Zilla~Pod::Weaver round up.

Dist::Zilla Gets More Legal

Went back to law school in this post. Has a look at three section plugs ins [Legal::Complicated], [Legal::Supplemented] and
[LegalWithAddendum] all of wich let you tweak your leagize the way you want.

Dist::Zilla Gets Used

I had a look at the [ Requires ] section plugin today which is good on two fronts;
  1. you should list your deps someplace in your POD and
  2. it will find out all mods that are used so you can find ones that you many not require

Dist::Zilla Needs Support The first

Looking at the [Support] in this post and found that it was quite extensive so only covered its default functionality.

Dist::Zilla Needs Support The Second

A closer look at the [Support] section plug-in in this post. Took out some parts I did not like and added in bits and costom content to my likeing.

At Perl Station

So I visited Perl. More pictures to follow.

Perl train station at night


Perl train station during daytime

From the distance. Right Germany, Left Luxembourg, Behind France


PTS 2018 - Day 1

I'm at the Perl Toolchain Summit 2018 in Oslo for a few days working with the MetaCPAN team. This is the 10th year of the summit (although confusingly the 11th actual summit!), and the 3rd year I've been able to attend.

My focus for day 1 has been making MetaCPAN front end and API more resilient and also to put together a what to do if site down and Disaster Recovery plan (day 2 I will be testing that DR plan).

I've setup our 2nd datacenter back to being a production ready cluster (of Elasticsearch). I added health checks and load balancing from Fastly (our CDN) to both the web front end (now using 4 nodes, 2 in each datacenter) and also setup our API (3 nodes in 1 datacenter as they all need to talk to the same elasticsearch). You can see what is running where in our domains document.

Now Github are running public projects you can see what MetaCPAN team are doing and have done

A huge thank you to the sponsors who make this possible:

NUUG Foundation, Teknologihuset, Booking.com, cPanel, FastMail, Elastic,
ZipRecruiter, MaxMind, MongoDB, SureVoIP, Campus Explorer, Bytemark, Infinity Interactive, OpusVL, Eligo, Perl Services, Oetiker+Partner.

Dancer2 0.206000 released, addresses potential security issues

Dancer2 0.206000 has been released, and it is recommended that all users of Dancer2 should upgrade as soon as it is feasible to address several potential security issues:

  • There is a potential RCE with regards to Storable. We have added session ID validation to the session engine so that session backends based on Storable can reject malformed session IDs that may lead to exploitation of the RCE. Please see the Storable documentation for more information.

  • We have changed from HTTP::Body to HTTP::Entity::Parser (the same as Plack uses) for parsing requests. Apart from being faster, this change also resolves a situation when forwarding requests where the request body could be re-parsed without correctly seeking a filehandle to the beginning of the request body, potentially resulting in an infinite loop. The implementation using HTTP::Entity::Parser does not require the request body to be re-parsed. This addresses a potential DoS attack vector.

German Perl Workshop

I am just back from German Perl Workshop. The workshop is held every year and I finally had a chance to visit it!

I had these reasons to go:
  • Meet Perl hackers and community members who I have known online for years
  • Talk about TPF
  • Visit Perl, a small town in Germany

I'd like to express my gratitude for the organizers who worked hard to make it happen. They had to change the venue with a short notice and train track repair impacted the transportation but the organizers did a fantastic job.

My talk went well and the material is at https://docs.google.com/presentation/d/14zub1nzTlt-EPWJCAawHLb-MIKbDHXllHdqLhD-uZnk/edit?usp=sharing

The key takeaway is that TPF is doing its job well but I'd like us to reach more people to help the right people and market ourselves more.

There was a BoF among TPF volunteers. Good discussion was had and we will reflect that to the organization.

I hope to see you in Munich next year. IMG_6395.jpg

Dist::Zilla Its a Wrap V

Another non creative day here in the Dist-pen

Well another ten to do. Getting close to the end! This is the spot where I start my series of going over most of the available Section plugins.

Dist::Zilla Ready and Available

The first post of many looking at the various section plug-ins that are left over. The [Avaliability] plug-in is one works closely with Dist::Zilla and I also left you hanging with a problem I was having.

Dist::Zilla Flash Bugs

Well still suck in the [Availabillity] plug-in but I did find a bug which I patched locally and got the plug-in to work correctly for me. I think that is the second bug, well maybe 1.5 bug I have found since I started playing with Dist::Zilla.

Dist::Zilla Report Bugs

Well in post I am no longer finding bugs but I did look at the [Bugs] plug in so at least in my next POD I will have a blurb on reporting bugs.

Dist::Zilla Its a Wrap IV

Well still a few more of these in the Dist-Pen

Time to nock off another ten posts!

Dist::Zilla Tempate

In this post I decided to dig deeper into the Pod::Weaver template well really I just explain that the 'weaver.ini' file is the template/

Dist::Zilla On Style
This post I go a little deeper into the varios differnt template bundles out that and show the template works a in a little more depth.

Dist::Zilla Takes it in the Name
The first in my rathder long series of review of the various 'Section' plug-ins. To start the rather simplistic [Name]

Dist::Zilla Plots Version
A look at the [Version] section plugin a little more complex than the last.

Dist::Zilla Regional Report
This post deal with one of the more common section plugins [Region] and I intoduce the concept of moving stuff about and build an ordered document out of an bunch of unorded parts.

Tau Station is now live!

It's been a few years in the making, but Tau Station is now live!

It's a free-to-play post-apocalyptic interstellar MMORPG that runs in a browser, tablet, or mobile. The backend is written in Perl.

Join Tau Station and let's show the world the awesome things you can do with Perl! (And hey, spend money if you can; I need to keep the lights on) :)

We follow WCAG 2.0 AA standards for accessibility (blind and mobility impaired people can play).

Tau Station is now live

Dist::Zilla Its a Wrap III

Another less than insipred day here at the Dist-Pen.

Well ten more posts to look at.

Dist::Zilla Plan
In this post I sat down with my Database::Accessor code base and ran it though dzil test to make sure it was all working.

Very Little Dist::Zilla
Well went off on a tangent with this post. I had problems with this test case 31_elements.t and finally found a solution to the problem I was having was where to place some test classes so the tests would run without hard-codeing the paths.

Dist::Zilla Party Time
Well in post I finally mad a mile-stone in my porject, I got all the test cases to pass and I found another bug I fixed and my tests still passed.

Dist::Zilla is Sad or is that Happy?
Still stuck on the same bug but this time I actully found a better solution that got rid of a kludge I was using and did not like

Dist::Zilla Its a Wrap II

Well it not a very creative day today in the old Dist-pen

So careering on from my las post here it the next bunch of posts to do with Dist-Zilla.

Dist::Zilla Takes Instructions

Another chore post this time creating the README file.

Dist::Zilla VCS Opps!
In this post I had a go at linking up my distribution to my VCS which in this case was GitHub. Though I am quite sure I did things corrctly I was just way to earl in the developement cycle to actually hook things up.

Dist::Zilla Do Kwallitee Test
This was a first of a series on how Dist::Zilla does its testing. The first time I really figured out the difference between author, release and automated test cases. I also put in my first Test plug-in [Test::Kwalitee]

Dist::Zilla Likes Critic

This post I played with the [Test::Critic] plug-in and also figured out how to run just the 'author' tests.

WANTED: Perl 6 Historical Items

Read this article on Rakudo.Party

The Perl 6 programming language had a turbulent birth. It was announced in the summer of 2000 and the first stable language release shipped out only 2 years ago, on Christmas, 2015. A lot has happened during that decade and a half, yet the details are hard to piece together.

After my recent facelift to rakudo.org, I'm working on a (second) facelift to perl6.org website.

Part of the work involves bringing all the Perl 6 deliverables under one umbrella, so the user isn't thrown around multiple websites, trying to find what to install. At the same time, we want to strengthen the distinction between Perl 6 the language and the compilers that implement it, as well as encourage more implementors to give it a go at implementing a Perl 6 programming language compiler.

Version 3 of "Parsing: a timeline"

I have published version 3 of my parsing timeline. It has many changes-- so many, it might be considered a new work. It is longer and now provides sources. The new material includes coverage of combinator and monadic parsing, and operator expression parsing, making it considerably less Marpa-centric.

The link above is to the announcement on my own blog. You can also "cheat" and go straight to the timeline itself. For more about Marpa, my own parsing project, there is the semi-official web site, maintained by Ron Savage. The official, but more limited, Marpa website is my personal one. Comments on this post can be made in Marpa's Google group, or on our IRC channel: #marpa at freenode.net.

Refurbished App::DBBrowser


it's now available an improved version of App::DBBrowser with new features.
Some of the new features:
- attach databases to a SQLite database
- use sub-queries in different places of the statement
- choose if identifiers should be quoted or not

Dist::Zilla Its a wrap!

The great Dist-Pen wrap up part the first.

So has it been really sixty days of blogging about Dist::Zilla and Pod::Weaver? Yes it has so here is a quick round up of what is where.

For the first few post in this series I had a look at the basic install using Dist::Zilla

No Such thing as Moose-Zilla!

In this post I try my hand at building a distribution with Dist::Zilla. Here I found out about some of the required attributes that Dist::Zilla needs and how to use my first plug-in and generate my first distibution with dzil and had a quick look at the mass of Plug-in found on CPAN

Mmm! Dist::Zilla Tea

Carrying on from my first attempts I added in an 'Abstract' into the mix and then started to add in other Plug-Ins to really make a useful distribution for CPAN and learning that dzil has a clean as well as a build command.

'Dist::Zilla' A Bath for Your Distro

A new wobbly wheel for GUIDeFATE

Dist::Zilla Disclaims

Well it is section end day here in the Dist-pen.

Today I am looking at the I think the last section plug-in the [WarrantyDisclaimer] plug-in. This is your standard blurb type plug-in that will dump a bunch of legal words that is suppose to cover your arse if someone uses you code to control a self-driving car that goes berserk and crashes into a children's hospital causing a fire as the cute puppy store.

This plug-in has a number of subclasses that you can use to match up the license you are using to the correct subclass. So far there are six sub-clases

  • Default
  • Artistic
  • Custom
  • GPL1
  • GPL2
  • GPL3
Myself as I am using the GPL 3 so in my 'weaver.ini' file all I need to add in is

and after I install in parent class 'Pod::Weaver::Section::WarrantyDisclaimer ' and then a clean and build I get;

Dist::Zilla Templated

Well it 'T' day here at the Dist-Pen

Getting near the end of the section plug-ins I am looking at the [Template] plug-in. This one is much like the [GenerateSection] plug-in I had a look at in this post.

To use this plug-in to generate the same section I created in the other post above

=head3 Database::Accessor Tutorial 
Welcome to  Page xxxxx
I will first have to create that in a file with the {{}} in the right spots. So I created the file 'header.section' with this content;

Welcome to Page {{$name}} of the {{ $main_module_name }} tutorial.
Which is a little different than the other post as I finally figured out how to get the main module name in there. Once I installed the plug-in I now had to set up the 'weaver.ini' file like this

title={{$dist}}} Tutorial
text= Welcome to Page {{$name}
++[Template / Database::Accssor Tutorial]
++template = header.section
and then I give it a good old clean and build I get

A Guide to Versions in Perl

Version numbers in Perl are very important; they allow orderly updating and maintenance of modules and distributions across the CPAN, and allow CPAN modules and consumers to require the versions of modules with the bugfixes or features they need. However, in this context, they are also a very unique beast with a complex and bumpy history that leads to some surprises for those who are not familiar with the nuances. These are the things CPAN authors should know about versions in Perl, and are nice for consumers to know as well.

To summarize:

WWW::Mechanize Best Practices

Recently at $work we were discussing some of the behaviours of WWW::Mechanize when submitting forms. For instance, when you pass the fields parameter to the submit_form() method, Mechanize might take a very lax approach to submitting your data.

I've discussed some ways to make your useragent more secure and easier to debug. The whole article is at http://www.olafalders.com/2018/04/13/wwwmechanize-best-practices/

Dist::Zilla No See

It is the big 'S' round-up here on the Dist-pen today.

Well just a post-ette today as I am a little hard pressed to find things to blog about. I am going to have a quick look at the three remaining section plug-ins that start with 'S'

  • [SQL]
  • [SourceGitHub]
  • [Source::DefaultGitHub]


This is a neat little plug-in that I might find useful when I go the write up my DAD::SQL. If you wrap any sql in you POD like this


SELECT * FROM records where id =1

it will gather up all of those Blurbs and put them in a 'SQL' section. There is a single attribute 'keywords' that you can use to limit the scope of the gathered SQL, by default it uses all the reserved words found in 'SQL::Statement', so if you wanted to see only the 'select' sql you would add this to you 'weaver.ini' file

keywords = SELECT


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.