Being A Perl Release Manager

Abigail will give a talk at YAPC::NA 2012 described as:

For a long time, all Perl releases were done by the pumpking. However, in recent years, we have streamlined the process, and now “everyone” can do a release of Perl, and get his/her 15 minutes of fame.

In this presentation, using my experience in releasing 5.15.9, we’ll show what it takes to make a Perl release.

[From the YAPC::NA Blog.]

Updates to Sys::HostIP

Sys::HostIP simply parses ifconfig/ipconfig (supports GNU/Linux/BSD/Windows) and gives you the interfaces and IPs found.

I stumbled upon this module when I was looking for a way to clean get all the ips of every interface on machines at $work. I needed something that parses ifconfig cleanly, because I didn't want to do it myself. I found a few and Sys::HostIP was by far the easiest, simplest, fastest and the one I decided to use. I noticed a few bugs open and contacted the author who gave me co-ownership. I since updated it and cleaned most of the ticket pool.

I've recently stumbled another situation, in which I want to find the IPs by order. Thinking I could just tweak the module to allow fetching it in order, I found that the logics is a bit of a mind boggle. I retained much of the original code and it supported both functional programming (as in functions) and object oriented, and I wanted to keep that.

A Perl lexer and parser for Graphviz dot files

Hi Folks

I've just uploaded to CPAN my new lexer and parser for Graphviz dot files:
GraphViz2::Marpa V 1.00.

There are 243 tests, or thereabouts, so install slowly...

Also, I've written a long article on the writing of this distro:
Lexing and Parsing with Marpa.

The 'Perl Tutorial' Tutorial

The web is crowded with tutorials about Perl. Perl has improved over the years, bringing new features, safer constructs and clearer syntax. However the old tutorials still are read and learned by far too many new Perlers. This article is to help you be able to select your information source critically.

Some things to look for:

The name of the language is Perl

Yes that’s Perl not PERL. The community is very adamant about this, so if the tutorial says PERL you know that it is written by someone outside the Perl community.

The current Perl version is 5.14, the year is 2012

Many tutorials that were great for Perl 4, or even 5.6 are now woefully out of date. If there is a date on the tutorial older than about 2007 or Perl version 5.10, it will be missing many of the new features and may use older, more dangerous syntax.

Recommends using ‘strict’ and ‘warnings’

How We Went Remote

VM Brasseur will give a talk at YAPC::NA 2012 described as:

Hiring remote workers is great for filling those holes on the team…but if you don’t have the correct infrastructure in place you’re just setting yourself—and your remote team members—up for a world of hurt. This session will detail how our engineering department went remote and thrived because of it.

——-

A lot of engineering teams are considering going remote now. And why not? There are excellent people everywhere. Why limit yourself only to those who can come into the office?

Because you may not be able to support those remote workers, that’s why.

There’s a lot more to having a remote team than just hiring someone then flying him/her in to visit the mother ship a couple times a year. Without the correct infrastructure and processes in place, remote hiring will turn into an exercise in frustration for you (at the home office) and set the remote worker up for failure.

During this session we’ll discuss some of the preparations you should make before bringing remote staff on board. This will include:

* Communication channels

* Development methodologies and processes

* DOCUMENTATION

[From the YAPC::NA Blog.]

udp_server with IO::Lambda

I'm turning again to my module IO::Lambda, which I think, doesn't get the resonance it could have. I've seen AnyEvent's tcp_server, which is great and easy to use, and was reluctant to add one to IO::Lambda, because it's so easy. Or at least subjectively so :)

But I'm thinking, well, it's one thing to not add it into common API for whatever reasons, but if it's simple enough, why not make it into an educational example? So I wrote tcp_server and udp_server, just for kicks, and indeed they're simple, just not that simple so they don't need any comments in the code.

So I'm starting with upd_server, which is the simplest of the two, a plain UDP server script that listens on port 5000 and prints whatever data it receives. To test it, fire it up in one terminal, and run 'nc -u localhost 5000' (nc is netcat on my machine, could be something else on yours) in another, and type something there. The UDP server should just repeat the same.

A Real Developer Challenge

Spotify is having a coding challenge to find "top-notch talent to join our NYC team". The challenge is to solve the most algorithmic puzzles in four hours... alone. "You may not cooperate with anyone, and you may not publish any discussion of solutions." What sort of developer will win this competition? Someone who is quick, dirty, has a mathematical mindset and lucky enough to write something that happens to work for the test data set. The "rockstar". Is this somebody you want on your team? Would you want to maintain their code?

Last year while on contract, the company in question was passing around their coding problem they used to test new hires. It was pretty typical stuff: give the data going in, the data they want out, and write a little program to do the transform. They even supplied most of the program, including a test; the prospective hire just needed to write one sort subroutine which could deal with "Low", "Medium" and "High" as well as numbers.

Perl at Fosdem 2012

Hi,

Next Sunday (5 february), Fosdem 2012 is hosting our Perl booth and Perl devroom. We welcome a bunch of impressive speakers. The schedule is published here.

If you are coming to Fosdem but did not select talks from the Perl devroom: read the text below and reschedule your day ;)
If you didn't plan to come to Fosdem but are or can free next Sunday, read the text below and book your day !
Best of all, Fosdem is free of charge and you don't have to register your presence.

Most talks in the Perl devroom cover specific Perl development aspects, ranging from beginner to expert stuff. If you are a Perl developer, these will certainly be most valuable to you! Check the schedule!

Perl Testing Workshop SOLD OUT!

The Perl Testing Workshop at YAPC::NA 2012 has officially sold out. We have no more seats to sell. We only have a few more seats left in the Zero to Perl Workshop and the Hackathon, so if you want to participate in either of those, be sure to buy a badge for them today!

[From the YAPC::NA Blog.]

On development in perl

If you go to a bookstore to get some books about modern software development, you will find a lot there, but all these books are written from and written for the "java-guys". In my opinion we need to show, that you can use all these techniques in perl too...

Test Driven Development
I cannot remember a time, where modules in perl from cpan were without a test-suite, and we have many test-modules out there, but all the books about tdd are about Java or .Net.

Automatic Acceptance Tests
All agile developers love automatisation. There is Fit developed in java and you need some time to find Test::C2FIT and even then, the documentation is not so easy to read, so we germans are happy to find the Fit Cookbook (in german)

Domain Specific Language (DSL)
I don't know a language in wich it is easier to build up domain-specific-languages, but if you look up the books, you will again find examples in java and in ruby.

More module versioning pain

Yeah, I know, I am always complaining about module versioning. But I think this is something we need to take care when releasing.

This time, it seems that Mail::SPF (JMEHNLE/mail-spf/Mail-SPF-v2.8.0.tar.gz) was indexed by CPAN as v2.8.0, but identifies itself as v2.008. Oh, joy!

On CPAN Namespaces

After the public buyers-remorse that I (almost) had on the name of my latest module Tie::Select, I got to thinking about the filling of CPAN namespaces.

CPAN is awesome; many have said that it is Perl’s killer app. It has tons of modules to do many many things. The problem is that some of the obvious names are gone. Certain namespaces have implications. For Tie::Select I thought of IO::Select, which exists. I thought of going underneath an existing module’s namespace, for example IO::Handle::Select, but this implies, at least to me, that it is either a part of, or derivative of IO::Handle. Its not, and in fact it isn’t even OO as that module is.

I have settled on the current name for now, but I am not totally happy with it. I got to thinking about other naming problems I’ve had. (And note I am not complaining about any of this, just ruminating):

Lodging for YAPC::NA 2012

We’ve posted it before here, and on the web site, but we want to make sure nobody missed it. Here are all the links you need for lodging at YAPC::NA 2012:

Lowell Center (Hotel at the Conference Facilities) - $89 / night

Chadbourne Hall (nearby dorm) - $42.10 / night

Madison Hostel (10 blocks away) - $22 / night

Parking Permit (If you’re staying at Chadbourne, or driving in each day.) - $12 / day

Get your reservations soon as they are filling up very quickly. 

[From the YAPC::NA Blog.]

presentingperl.org "may harm your computer"

Google has been marking www.presentingperl.org as dangerous for at least a few days already.

Firefox issues a warning and so does google search. Anyone know whats going on?

I want to check out some of the talks Mark Keating lists:
http://mdk.per.ly/2012/01/27/video-killed-the-presenting-star/


http://safebrowsing.clients.google.com/safebrowsing/diagnostic?client=Firefox&hl=en-US&site=http://www.presentingperl.org/

HTML::ParseBrowser rides again

When writing a review of CPAN modules I have a rule that if I come across an issue, I have to do my best to see it resolved. My process for this is something like:

A localizable interface to `select`

Have you ever forgotten to restore your original STDOUT (or other handle) when you want to select another one for a brief time? Does the usage

my $stdin = select *STDERR;
print "To STDERR";
select $stdin; 

seem clunky?

I have always loved the interface provided by File::chdir. It gives you the $CWD variable. When you assign to it you change the working directory. Even better, if you do that with the local directive, you dynamically scope the change!

It struck me, while I was working on the test suite for another project, that I wished that I could have that same kind of interface to select. And why not, they both need changing and restoring of a global property? So I gave it a try, and lo and behold it was simple!

CPAN Workshop: See one, do one, teach one

brian d foy will be giving a free workshop at YAPC::NA 2012 described as:

Become a CPAN author and upload your first module while in this workshop. I’ll get you the PAUSE ID, show you how to make a starter module, show you how to upload it, file a bug against it, and show you how to fix it and re-upload. After this workshop, you won’t be scared of the process. It’s easy once you’ve seen it done once. Not only that, you’ll be able to show other people how to do it.

[From the YAPC::NA Blog.]

True + True == 2

I've seen lots of new Perl programmers confuse 1 and true before, usually something like this:

do_something if boolean_function() == 1;

This is not only redundant, but it's also brittle and redundant. In Perl, it's very easy for a boolean function to return something other than one.

sub has_stuff {
    ...
    return scalar @stuff;
}

This code I found today in Module::Build::Base takes the cake.

if ( $self->check_prereq + $self->check_autofeatures != 2) {

(Yes, I fixed it)

Calling all Karen Pauleys...

Hi Karen

You sure make it hard to submit articles for publication on perl.com:

Hi. This is the qmail-send program at mail1.qnetau.com.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.

:
Connected to 199.45.135.9 but connection died. Possible duplicate! (#4.4.2)
I'm not going to try again; this message has been in the queue too long.

--- Enclosed are the original headers of the message.

An article on Marpa.eml
Subject:
An article on Marpa
From:
Ron Savage
Date:
Sun, 29 Jan 2012 14:44:19 +1100
To:
Karen Pauley

(Body supressed)

And, yes, it is a duplicate...

But don't worry, the article - not quite finished - has not been lost. I'll blog about it here soon.

Yours, /on-line/,
Ron

CPAN modules for defining constants

I've published a review of CPAN modules for defining constants. This covers the following modules:

Attribute::Constant • Config::Constants • Const::Fast • constant • constant::def • constant::defer • constant::lexical • constant::our • Constant::Generate • Constant::FromGlobal • Devel::Constants • ex::constant::vars • Readonly • Readonly::XS • Scalar::Constant • Scalar::Readonly

This blog engine had become too restrictive for writing these reviews, so from now on they'll be static web pages, with a reference here. Comments can be left here, or you can email me at neilb at cpan dot org.

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.