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.
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.
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.
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.
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.
Seriously pick any random file in lib/ and try to grok it
Ping me directly and ask how you can 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.
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:
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.
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 :)
Marpa claims to be linear -- O(n) -- for every grammar class that PEG, recursive descent, yacc or bison are, and then some. Dubious? Check out
"Linear? Yeah right."
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.
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:
Friday, 15 May: Deadline for sending a letter of intent. This
letter simply expresses interest in hosting the conference and provides
contact information (both email and telephone) for at least two organizers.
This is an optional step but it can be to your advantage to alert the
venue committee of your proposal.
Thursday, 16 July: Deadline for sending proposals to host YAPC::Europe
2016.
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.