Imager::Barcode128

If you need to generate GS1-128 compliant bar codes, then look no further than my new Perl module Imager::Barcode128.

[From my blog.]

Linear? Yeah right.

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."

Writing XS Like a Pro - The INTERFACE Keyword

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.

Why I donated to the Perl QA Hackathon

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.

Call for Venue for YAPC::Europe 2016

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.

MadMongers (Madison Perl Mongers)

MadMongers (Madison Perl Mongers) :

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.]

Firefox is dead... or something

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.

Class Abuse

This situation arose recently and it got me curious...

What if you needed to access an algorithm in a very simple class method, but the functionality of the class is significant and would be a pain in the ass to set up and create an object in, not to mention resource-intensive, all to use one small function...

You could copy the algorithm, but what if it changes? Then you'll have to change it twice. That's no good. I don't like either option.

More

CPAN PR-Challenge: March Report #2

The second pull request for this month is, this time, in the distribution that was assigned to me, Exobrain. In this case, it was a simple PR on dependencies.

First, define the minimum version for Data::Structure::Util, the distribution for which I created my first PR this month, in order to make it pass all the tests in version 5.20 and above. Also, took some time to clean up the C syntax.

Then, remove some dependencies that seems no longer needed from dist.ini (were hard coded) and also define a minimum version for a required module directly in the use statement.

So, a simple PR, but one needed (there were some comments requesting this change, as well). You can see it in all its glory (cough!) here: https://github.com/pjf/exobrain/pull/62

Asked NeilB to mark this month assignment as complete but, if time permits, I will prepare a more interesting PR.

The Company Culture: Go Leader

hdjjfchg.png

The Westfield Leader has been using Perl for more than a decade (since 1998), providing many essential functions. Over time they have received considerable learning help from the Perl community.

They are privately owned weekly newspapers in Westfield, NJ since 1890. Perl contributed to helping us digitize all of the archives, which run as far back as 1907, and they are now searchable on the Internet.

Perl provides point in time backup (20 minutes) for the composing of files during press time production by editorial staff.

"Sometimes a file may crash on our LAN during deadline and this saves the day."

Utilising Perl and rsync, they backup business data, sales data and production data for local archival, then sync this to a remote location that also runs using Perl and Debian servers.

Introduction to Mojolicious



Introduction to Mojolicious

[From my blog.]

Tree::Renderer: A partial replacement for Data::TreeDumper

It seem that since Perl V 5.20.0, Data::TreeDumper won't install because it depends on Devel::Size, but in fact the latter could be marked optional (I'm told via an RT ticket).

For my own use basically, I'll soon release a simple module called Tree::Renderer, whose default output is almost identical to that of Data::TreeDumper.

So far, I've only implemented these return values for Scalar::Utils's reftype:
ARRAY, CODE, HASH, REF and SCALAR.

If you want support for other types let me know. Being lazy I hope not - in the nicest possible way, of course!

Lastly, yes, the name Tree::Renderer could be Data::TreeRenderer, etc, etc. Suggestions tolerated.

Test-More status update

The new Test-More stuff will NOT be part of 5.22 as originally planned. Instead the latest stable with ship with 5.22. The reason for this is a perl-qa consensus about a design decision that should be changed.

Back when performance was a problem I tried out using array based objects instead of hash base ones. In profiling, the object system was one of the big time eaters. While I changed the base to arrays I also changed how the accessors were built, and how some other parts of the objects worked. In the end my profiling showed huge improvements. Unfortunately I failed to measure the array base and other optimizations independently. I also failed to record my data, making it impossible for me to provide a sound argument for the array based design.

The Company Culture - the process

This week I will be starting the company promotion that I mentioned in my last blog post (https://blogs.perl.org/users/shadowcat_mdk/2015/03/perl-and-the-company-culture.html). I thought I would take a few moments to explain some more what I am doing and what the process will be.

As I said previously this is not a structured approach, there is no definite action or reward to be achieved and no promises on time. My plan is to keep collecting the information and to promote one company each week until I run out of information and/or companies.

How things get done in Djet

How things get done in Djet

CPAN PR-Challenge: March Report #1

This month I was assigned Exobrain. My first problem is that I can not install install it at all because dependencies are failing. The first failing dependency was Data::Structure::Util.

Looking around in Testers Matrix I found that is was failing only on 5.20 or above. Then, looked up the failing test, and understood Perl changed the way undef are passed to subroutines as first argument. After reading the Perl Delta and discussing with Andy Armstrong (the module maintainer) about that, the test was removed (it was based on a bug or not standard behavior). I did not get a chance to create the PR as AndyA fixed the code and released a new version.

Nevertheless, when trying to find the problem, I noticed the XS code was giving a lot of warnings on recent GCC, so I went out and fixed them, preparing a PR available here: https://github.com/AndyA/Data--Structure--Util/pull/3

Now waiting for Andy to release a new version.

Perl 6 for Mere Mortals - FOSDEM Video

My FOSDEM talk, Perl 6 for Mere Mortals, is now online:

You can see the rest of the Perl dev room videos here. Sadly, there were some technical problems, so a couple of videos have audio issues.

All of FOSDEM videos will eventually be here, but not all videos are ready yet.

Are you the one person left on the planet using a Palm Treo?

If you are, then I have two very important things to say to you.

First, why the hell haven't you upgraded to something - anything! - else?

Second, I just released updated versions of Palm::SMS, Palm::Treo680MessagesDB, and Palm::TreoPhoneCallDB. Now they should build with a vaguely modern perl toolchain (in the case of Palm::SMS) and will work with a modern version of Palm::PDB, which appears to have mysteriously travelled back in time and gone from version 1.29 in 2002 to version 1.016 today.

PEG: Ambiguity, precision and confusion

In my lastest blog post , I talk about PEG, the popular parsing algorithm.

CPAN PR-Challenge: February Report

Given the lack of answers and/or comments from Ovid and the Community on my Pull Request on MooseX::Role::Strict, and given my lack of knowledge on Moose internals, I will declare the February assignment as finished.

Nevertheless, if meanwhile anybody comments on my Pull Request and suggest any change, I am happy to make the PR better.

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.