A Year of CPAN Uploads

On Thursday, 19th March 2015 I uploaded my 366th consecutive release to CPAN. To most that may well be "meh, whatever!", but for me it has been an exhausting yet fulfilling exercise. The last 60 days though, were undoubtably the hardest to achieve.

Facebook::Graph 1.1000

I’ve upgraded Facebook::Graph to work with the new Facebook v2 Graph API. For those of you who’ve been asking me to do this, here you go! For those of you using Facebook::Graph and didn’t ask me, you should know that Facebook will be discontinuing the Graph v1 API April 30th. If you don’t upgrade to this version of the module, then your apps will stop working. 

[From my blog.]

My perl 5.21.9

In February I had the pleasure and honor of releasing the latest development version of the Perl 5 language interpreter: 5.21.9. Here are my notes on the work and on the epigraph I've chosen.

Tiny Games with Perl 6

Note: due to positive feedback on the post and at a client, I've released DBIx::Class::Report to the CPAN. You can read the original announcement here.

An offhand tweet about Perl 6, inspired by this ycombinator response, led to what I think is my most popular tweet of all time (which, compared to many others, isn't that big of a deal):

But I was also asked what the heck the code is doing, so let me walk you through it.

New York City Perl Hackathon 2015

Thanks to a generous venue offer from Bloomberg, L.P., I am pleased to announce the Second New York City Perl Hackathon, to be held Saturday, May 02, 2015 ( 10:00 am - 5:00 pm )

Bloomberg Tower
731 Lexington Ave ( between East 58 & 59 Sts )
New York, NY 10022

This hackathon will have 2 different participant roles:
1- Project Leader : Participant has a project he/she want other Developers to hack on.
2- Developer : Participant signs up to work on one or several projects lead by a Project Leader.

For everyone who is considering to participate please hold the date and think about which role you will play ( Project Leader | Developer ) in this hackathon.

There is a two-part sign-up for this event:

(1) Use this meetup.com page to register for the event. You must provide your first name and last name for access to the venue and must bring photo ID to the venue on Hackathon day.

(2) Use the New York Perl Hackathon wiki page to sign up to work on particular projects on Hackathon Day. Be sure to read: Getting Ready for the Hackthon and Projects .

Semantic POD

I was working on some POD processing code when I went down the rabbit hole finding the proper module for handling POD files and created a draft just by listing a bunch of modules for POD processing .

But then this question popped up again:

I am probably missing something fundamental, but I don't understand why are there no semantic pod markups? I mean such as =method , =function, =attribute etc. Instead of that we use =head2, =head3, =item in a rather arbitrary way. Which means it is harder to display them in a similar way across modules.

Alberto Simões pointed me to Pod::Weaver which collects =method and =attr tags and puts them under =head1 or =head2 tags, but that's just made me wonder even more.

DBIx::Class::Report - generate ad-hoc dbic classes from SQL

Object-Relational Mappers (ORMs) are awesome if you think about your database a collection of objects. They're awful if you think about your database as a database. My primary client right now is ZipRecruiter and my work involves rewriting one of their internal systems to be more flexible. However, it involves tons of reporting. For example, I have this SQL:

  SELECT var.name, ce.event_type, count(*) as total
    FROM tracking_conversion_event ce          JOIN tracking_visitor visitor      ON visitor.tracking_visitor_id      = ce.tracking_visitor_id
    JOIN tracking_version_variant curr ON curr.tracking_version_variant_id = visitor.tracking_version_variant_id
    JOIN tracking_version ver          ON ver.tracking_version_id          = curr.tracking_version_id
    JOIN tracking_variant var          ON var.tracking_variant_id          = curr.tracking_variant_id
   WHERE ver.tracking_id = ?
     AND ver.version     = ?

What you can't see in that SQL is that there are many subtleties in it:

  • That count(*) as total sometimes needs to be replaced by sum(ce.num_events) as total
  • Sometimes I need different sets of fields returned (and that impacts the GROUP BY, too)
  • One of those JOIN statements sometimes needs to be a LEFT JOIN.

Test::More in serious need of review, be afraid!

Do you want Test-* to be released with only one pair of eyes spending any significant time looking at it? No? Me either!

This blog post is a cry out for review. Test-Builder/More/Simple are being seriously reworked. From my perspective as the author of these changes everything looks fine, but that is just one set of eyes.

How can you help?

The git history on master does not lend itself well to review. This is a harder problem to solve. I have been urged by a couple people to rewrite history to make things more clear. I will take the time to make a cleaner branch where history is easier to read. Assuming the new branch works out, and accurately represents history, I will rename master to something else (but always keep it so that people can see it)

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 run by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.