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.
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.
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.
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 )
Location:
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 .
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.
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)
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 = ?
GROUP BY 1, 2
What you can't see in that SQL is that there are many subtleties in it:
The perlxs man page recommends to define the PERL_NO_GET_CONTEXT macro before including EXTERN.h, perl.h, and XSUB.h. If this macro is defined, it is assumed that the interpreter context is passed as a parameter to every function. If it's undefined, the context will typically be fetched from thread-local storage when calling the Perl API, which incurs a performance overhead.
Unfortunately, many XS modules still ship without defining PERL_NO_GET_CONTEXT. This is probably due to the fact that for most modules, setting this macro involves additional changes to the XS code. For example, if your XS file has static functions that call into the Perl API, you'll get somewhat cryptic error messages like the following:
Last year I shared an article about how You Can Help MetaCPAN by Helping the QA Hackathon. A year later, you can still help MetaCPAN by helping the QA Hackathon. As one of the core MetaCPAN developers, I'm planning to attend this event next month. It's still the best chance that I get to sit down and focus on MetaCPAN. MetaCPAN has had the good fortune of having multiple interns working on code since the Hackathon last year and we've made a lot of headway, but there's a lot of heavy lifting which still needs to be done, particularly around how we use Elasticsearch. This is also a good chance for me to be in the same room with folks who work on the toolchain and to get a better feel for how MetaCPAN can help them.
Just to summarize the much more eloquent posts which have preceded mine, Mr. Neil Bowers of White Camel fame shared a very good summary of what goes on at a QA Hackathon.
A couple weeks ago I asked how you "join the conversation" but based on feedback I got, I don't think I communicated well. I think people thought I meant "which blogs do you read?" What I really meant was: when you write a blog entry, where do you post the link so that it's seen by people who are interested in that subject?
So for example, when I write about Perl, I post to blogs.perl.org. I want to blog about other topics too, like web development (JavaScript, CSS, etc); lifehacks; Unix, Linux, shell scripting; general tech / tech business; and database stuff. But when I blog I'd like it to have a chance of being seen. Please let me know your thoughts!
I read comments everywhere. Comment here, or if you prefer, at Blogger.
While being blocked from p5p I had to read a new outragious statement by a porter. Who is in reality not a porter like me, just some developer who happens to have no idea what he is talking about.
He struggles with his new super-op OP_SIGNATURE which is at second thought a better idea then the old way to assign lexical values from the call stack at the begin of subroutines, just that it cannot take the stack values, it has to go through an intermediate @_ copy, but that is just an implementation detail which can be optimized away, and goes then on like this:
Greetings Perl community,
i will give in a week a Talk about Perl - at a German Linux Conference. It will be part technical but in part also giving the people a realistic insight into our community. Slides will be as always on lichtkind.de and slideshare.
So but the reason i tell you this now is because i want to make sure i don't miss the major recent trends. So if you have this cool Perl project / tool / module/ API which is not that often talked about but should - please let me know and post below.
Thank you very much.
Update: I really can't say as much as I would like (there's stuff I can't share), but my publisher had a face-to-face with an Amazon rep and internal action was taken. Amazon's investigation is apparently over. The internal position seems to be "we're making money, there are words on pages, so there's no problem here." Amazon's investigation was short and sweet. Some bogus reviewers were removed, but "Felicity" -- one of the worst offenders -- is still there, despite the obvious fact that these are fake reviews. Many other obviously fake reviews remain. In fact, a new fake book with fake reviewers showed up. I genuinely do not know if this response is because of a careless employee or if Amazon discourages employees from shutting down profit streams.
Update 2: At least two of the fraudulent books are now 404s. It appears that Amazon may be taking action after all :)
If you need to generate GS1-128 compliant bar codes, then look no further than my new Perl module Imager::Barcode128.
[From my blog.]
Like many Perl hackers with a C background, I did my fair share of XS programming. But mostly, I contributed bug fixes and other minor changes. In the rare case that I had to add a new XSUB, I typically used another XSUB from the same project as template. Unfortunately, this cargo cult is common among XS authors.
When I wrote my first public XS module, CommonMark, from scratch, I decided to read the perlxs documentation front to back to get a better understanding of the features XS provides. It did pay off. There are many things I missed and some of them can be extremely helpful. So I take the opportunity to share the things I learned with my fellow XS writers in a series of two or three posts.
It's great when organizations with (marketing? public relations? good will?) budgets authorize financial backing of events like the Perl QA Hackathon. Donations to these kinds of efforts are one of the many ways to contribute to the Perl ecosystem. But did you know you can donate to the Hackathon personally?
This year, I decided that I wanted to make a donation to the Perl QA Hackathon (albeit modest). For those of you who have some spare change burning a hole in your wallet, maybe some of the reasons I decided to donate will resonate with you.
My relationship with Perl is personal. I use the Swiss Army chainsaw because I choose to. The fact that I am employed by a company that wants to leverage this choice is almost happenstance. Said another way, if my employer decided to stop developing in Perl, I would seek a new employer.
Although YAPC::Europe::2015 preparations are well underway in Granada, it is time for the venue committee of the YAPC::Europe Foundation (YEF) to think about the location of the 2016 conference. YAPC::Europe wouldn't exist without dedicated teams of volunteers, and we are always excited to see the enthusiasm and learn about the new ideas the community has to offer.
Further information about preparing a complete application can be found at here. Proposals submitted to the venue committee will be added to this public repository (you may provide private information separately) to benefit future organizers.
The deadlines which apply to this portion of the procedure are:
If you do not receive a confirmation for your letter of intent or proposal within a couple of days, please personally contact a member of the venue committee.
Please send your questions, letters of intent, and proposals to venue@yapceurope.org.
If you’d like to learn more about Amazon’s web services, specifically Simple Email Service and Simple Notification Service, and you’re in Madison, come to MadMongers tomorrow (Tuesday) night.
[From my blog.]
In terms of market share, there has been no shortage of comparisons between Perl and Firefox over recent years. For that reason then, I found recent analysis of survey results interesting.
In the last 12 months, Firefox's user share -- an estimate of the portion of all those who reach the Internet via a desktop browser -- has plummeted by 34%. Since Firefox crested at 25.1% in April 2010, Firefox has lost 13.5 percentage points, or 54% of its peak share.
I personally use Firefox (via Debian's Iceweasel) and have yet to find a satisfactory browser on Android. I rarely use iOS for any serious browsing (not having an Apple tablet device). Whilst I have Chromium (again, Debian) installed - I haven't found it's experience compelling enough to abandon Firefox and my suite of plugins/add-ons. Firefox Hello was a nice fun new addition as well - and dropping the "Facebook Messenger for Firefox" integration was disappointing.
blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.