The UK Is A Real Place


For this year's Perl QA Hackathon, I travelled to the UK for the first time. I don't know what I was expecting, but what I got was kind of surreal. I've watched a lot of British television and movies. But experiencing it was a lot different.

I knew things would be different. But the interesting thing was how subtle the differences are. Everything's closer together, but the effect is warm and cozy not oppressive (despite the weather). The roads are a lot different. I can see why some modern subdivisions are eschewing a grid of streets with a curvy, winding road system (though the effect in the US is anti-pedestrian).

Asda was very familiar though. Freakishly familiar. Finding out that it was owned by WalMart makes absolute sense. The interior of The Lawrence Sheriff pub was familiar as well, but because it's a JD Wetherspoon, which is a franchise (picture the interior of pubs in the Cornetto trilogy).

When I got back, all I could think about is how loud Chicago is. And how organized. Efficient (that's not a compliment). A lot of the difference between the two boils down to "big city" vs "small city". Rugby has 70,000 people, and another city I've lived, Oskhosh, WI has 70,000 people, and the differences are still severe. Records of the village of Rugby go back to 1000AD. The hotel I was staying at pre-dated the entire city of Chicago (by perhaps 100 years). The hotel probably pre-dated the United States. It's difficult to fathom.

And now, watching UK TV as I often do, I find myself recognizing the styles. There's now a very obvious difference in my head between "generic human dwelling" and "English house", and between "generic human village" and "English village".

All in all, I really enjoyed the trip. Next up: Germany. I hear that a mad king created some interesting architecture...

Perl QA Hackathon - CPANTesters


This year, I was invited to the Perl QA Hackathon in Rugby, UK. It was wonderful to meet all the Perl people I'd been interacting with all this time.

My goals going into the hackathon weren't that clear: I've recently begun adopting the CPANTesters project, and I had to take the opportunity to talk with its former leader, Barbie, fix some current issues, and then...

While Barbie fixed the version summaries and Metacpan issue, I started work on an automated deploy for CPANTesters using Rex, which will allow for reproducible deployments and development virtual machines, and I began keeping track of the project and future goals in a CPANTesters project meta-repository, which should help with keeping CPANTesters going as an open community project. I'll be making future blog posts on both of these, though I've spoken about Rex before.

Thanks to Barbie for 10 years of CPANTesters, and special thanks to Capside for their donation, both monetary and avian, as they sent Oriol Soriano to help with some CPANTesters tasks.

And finally, thanks to all the other sponsors of the hackathon. Without their support, we couldn't do all the work we do on the Perl ecosystem.

A Community is a Reflection of its Leaders


I've been in charge of a certain community for a very long time. Before my actual tech career started, even. Back when doing websites was just a hobby I didn't want to ruin by getting money involved.

I was put in charge of this community after only a few hours of effort: I wanted to learn something, I saw that a community didn't exist for this topic in some prime community real estate, and so I created one. Instantly, I was the leader of a community. Within weeks, people started pouring in.

The funny thing about being in charge of a community is that it doesn't require merit or community-building skills. Being in charge of a community merely requires that one have authority: The ability to decide who is part of the community and who is not. Because I founded the community, I had the authority.

Continue reading A Community is a Reflection of its Leaders...

ygrok - Parse plain text into data structures


As a data warehouse, a significant part of my job involves log analysis. Besides the standard root cause analysis, I need to verify database writes, diagnose user access issues, and look for under-used (and over-used) data sets. Additionally, my boss needs quarterly and yearly reports for client billing, and some of our clients need usage reports to identify data they might be paying for but not using (which we can then shut off to reduce costs). This has recently become a popular space for new solutions.

On the other side, as a sysadmin, I need to get other reports like how all the machine's resources (CPU, memory, disk, network) are being used, what processes are running on the machine and how those processes used resources over time. This is basic monitoring, and there are lots of solutions here, too. In the true Unix philosophy, there are command-line programs to query every one of these, which write out text that I can then parse.

In my previous post about ysql, I showed how to use the ysql utility to read/write YAML documents to SQL databases. Now, Yertl has a ygrok utility to parse plain text into YAML documents.

Continue reading ygrok - Parse plain text into data structures...

List::Slice - Slice operations for lists


How many times have you needed to do this?

my @found_names = grep { /^[A-D]/ } @all_names;
my @topfive = @found_names[0..4];

Or worse, this.

my @topfive = ( grep { /^[A-D]/ } @all_names )[0..4];

There's got to be a better way

Or this.

my @bottomfive = @names < 5 ? @names : @names[$#names-5..$#names];

Or this.

my @names
        = map { $_->[0] }
        sort { $a->[1] <=> $b->[1] }
        grep { $_->[1] > $now }
        map { [ $_->{name}, parse_date( $_->{birthday} ) ] }
my @topfive = @names[0..4];

There's got to be a better way!

There's got to be a better way

Now there is! Introducing: List::Slice!

Continue reading List::Slice - Slice operations for lists...