Books, books, books ...

We will have a lot of books at the venue: Liz and Wendy will bring their incredible Perl library to the venue. If you want to know which Perl books exist, you should have a look at the library. As far as we know they have all Perl books ever written.

And there will be a booth where you can buy books. That booth is run by "Gutenberg-Buchhandlung".

Announcement: the App-Notifier CPAN Distributions

I would like to announce two new CPAN distributions of mine: App-Notifier-Service and App-Notifier-Client. These are derived from a few simplistic scripts I've written in shell and Perl, to allow me to notify when a task has finished (e.g: make ; finish-client) or a certain time has elapsed (e.g: sleep 240 ; finish-client), and I decided to create something more serious as CPAN modules.

App-Notifier-Service implements an HTTP service (using Dancer), which listens for requests, and once one arrives, implements a callback, which notifies the user on the localhost that the event occured. App-Notifier-Client complements it by implementing a client that connects to the service and sends the event.

Currently documentation may be lacking, and there are almost no automated tests in the distributions, but it appears to work nicely. To get started, read the documentation and you may wish to peruse some of these files from my home directory. First of all, the .app_notifier.yml file:

CPAN modules for making HTTP requests

I've published a review of CPAN modules for making HTTP requests. This covers 20 different modules from 19 distributions. I focussed on making GET and POST requests, whether the module supports https and redirects, and some other features.

As ever, I've no doubt missed a couple — let me know if you're aware of one not on the list. Also happy to hear if there are other aspects you think should be included in the comparison.

Happy Pi Day!

Did you know that 22/7 is actually a better approximation of pi than 3.14 is?

use DateTime;
use Math::Trig qw(pi);
use Test::More tests => 1;

my $today = DateTime::->now;
my $dm    = sprintf '%d/%d' => ($today->day, $today->month);

	abs( eval($dm) - pi ),
or diag("this test only passes on 22/7")

Breaking Glass: Perl on Windows

BinGOs will give a talk at YAPC::Europe 2012 described as

Perl. Windows. The two are often seen as incompatible.

But they aren't.

I will distill and present 13 years or so of experience of
running Perl on the Windows operating system.

Topics covered will include:

- Strawberry Perl
- ActivePerl
- Cygwin Perl
- Building Perl from source
- Active Directory manipulation with Perl

and much more.

Hunting segfaults (for beginners)

Uwe Voelker will give a talk at YAPC::Europe 2012 described as

Segfaults are nasty, sometimes they are hard to detect or hard to narrow down.

This beginner level talk (in regard to segfaults) will show two ways to narrow them down: Devel::Trace and core dumps plus gdb.


Reini Urban will give a talk at YAPC::Europe 2012 described as

address-sanitizer (aka ASan) is a memory error detector for C/C++, superior to valgrind. It comes with clang.

It finds:
* Use after free
* Out-of-bounds accesses to
** heap
** stack
** globals
* Use after return

It is very fast. The average slowdown of the instrumented program is ~2x, it's ~10-20x faster than valgrind. DEBUGGING builds should just use it.
The tool works on x86 Linux and Mac.
How it works, what errors it finds, some tools.

Any::Moose is out, Moo is in!

I've previously written about Any::Moose and suggested using it instead of Mouse in order to provide interoperability in code. You get Mouse unless Moose is needed and in that case you get Moose.

However, there are a few problems, mainly having some incompatibilities between Moose and Mouse (which has been drastically reduced to have as little side-effects as possible) and the load order being tricky. My original post relates to that specifically.

We now have Moo! Moo is very small, yet maintains much compatibility by simply not getting into the whole "metaclass protocol" thing, and giving you Moose-like attributes. Moo can also inflate properly into Moose objects, giving you what Any::Moose does, but correctly.

mst has written a very compelling post explaining how Mouse was started and how Any::Moose was designed in contrast to Moo, and why you should use Moo instead of Mouse or Any::Moose.

Moo is so awesome, I've started moving many of my modules to Moo. Dancer 2 is also based on Moo.

So, "can we have a smaller faster implementation of the basic parts of Moose?" - Yes, we can, it's called Moo.

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.