Blog moved to blog.schwern.net

My blog has moved to blog.schwern.net.

chef pinto cookbook

Pinto is an application for creating and managing a custom CPAN-like repository of Perl modules. You may find many posts on it on the site. I love the idea of pinto, so decided to contribute in some way. So there is pinto cookbook - a chef cookbook to install and configures pinto applications. I hope this cookbook will be useful for pinto users and developers.

Parallel Forking and Process Management

Stop me if you have heard this one before. You have a list of files you need to process in a text file with one item per line. Handling this is fairly simple you read a line in and process it over and over again until you processed the whole list. This works great, but if that list is 40,000 items long and each item takes up to 30 seconds to run it suddenly takes a very long time to finish. In this case processing each item is just a system call to another cli application with no shared resources, thus allowing processing of items in parallel with no fuss. For this task I am using Parallel::ForkManager and here are the important bits:

Thank You For Supporting Pinto!

The crowd funding campaign for Pinto ended last week and I'm delighted to report that it was a huge success! We completely surpassed our goal and received a total of $4,620.12 from 128 contributors (including payments through PayPal and Flattr).

I am extremely grateful to each and every contributor, and I am deeply moved by the overwhelming support of the Perl community at large. As a humble token of my appreciation, every contributor will get a free lifetime account on Stratopan. I will also list the name of every contributor in the documentation for Pinto and on the project web site.

I especially want to thank Viacheslav Tykhanovskyi, Gabor Szabo, Andy Lester, and Sawyer X who worked tirelessly to help spread the word about the campaign. I also thank brian d foy for organizing the campaign, and Crowdtilt for generously allowing us to use their platform free of charge.

I believe the success of this campaign has a lot to teach us about the strength of the Perl community, the power of crowd funding, and the future of open source software. So over the next several days, I'll be blogging about each of those things. And of course, you'll also be hearing about the progress I've made toward implementing the promised features in PInto.

Again, thank you, very much!

Sincerely,

-Jeff

Notes from a Newbie 16: Deploy

Notes from a Newbie document the creation and deployment of yardbirdfanclub.org with Perl Catalyst on shared hosting. They are intended for a Perl Catalyst Newbie who would like to study the creation and deployment of a simple Perl Catalyst application.

Now that we've developed a simple, functional application I will give you some information and advice about deploying it to a shared host.

Debian Bash Completion vs POD

It was bugging me that autocomplete for the perldoc command worked for modules and functions but not for bare .pod files. I'd be reading the FooBar docs and find a reference to FooBar::Cookbook::Tutorial and the magic TAB key would not find it for me. :(

--- /usr/share/bash-completion/helpers/perl.orig        2013-05-13 06:25:09.163377047 -0700
+++ /usr/share/bash-completion/helpers/perl     2013-05-13 04:10:34.523819280 -0700
@@ -23,8 +23,8 @@
     chdir($dir) or return;

     # print each file
-    foreach my $file (glob('*.pm}')) {
-        $file =~ s/\.pm$//;
+    foreach my $file (glob('*.{pm,pod}')) {
+        $file =~ s/\.(?:pm|pod)$//;
         my $module = $base . $file;
         next if $module !~ /^\Q$word/;
         next if $seen{$module}++;

Perl 5 Porters Weekly: May 6-12, 2013

Welcome to Perl 5 Porters Weekly, a summary of the email traffic of the perl5-porters email list. The big news this week is the release of perl-5.18.0-RC1 and RC2.

Topics this week include:

  • perl-5.18.0-RC2 is now available
  • Proposal: initial type annotation in SV
  • What does PERL_HASH_SEED do?
  • Designing an API
  • Should we make hashes return keys in FIFO order?
  • Release timing drift

Ludic Perl

Yep, indeed, contributing to the Perl community can be a very ludic activity (not to be confused with luddite!). I tried to list every Perl-related web resource where participants are encouraged to build up some kind of score. Most have charts where participants compete for the highest rank while some has an absolute goal (like 100% test coverage). The list has no specific order. Feel free to post the resources I forgot/am unaware of in comments!

Perl actually doesn't suck

I listened to http://devhell.info/post/2013-04-24/feline-tooth-extraction/ today and enjoyed hearing Chris Hartjes describe his recent experience with Perl. Quotes include:

"Perl actually doesn't suck"

"all of our services at work because we're moving to Service Oriented Architecture are either being done in Java or Perl"

"productive in Perl with a very short ramp up time"

For just the 5 minute clip: https://soundcloud.com/philipdurbin/perl-actually-doesnt-suck

Local hackathons (and how Perl can help)

Hi everyone, this is my first blog post on here (Gabor Szabo++ for reminding me that I need to blog!). Last week, I posted to the Houston.pm group inviting them to come out to the local City of Houston Open Innovation Hackathon.

I was planning on attending since I first heard about it a couple of weeks ago, but I saw this also as an opportunity to build cool things in Perl and show what Perl can do.

On the awesomeness of the Perl community

The Perl community is AWESOME! Much has been said and written on this topic: a lot of it true, some of it not so much, and sadly a nontrivial amount of it FUD. Yet, since this is about Perl, there is definitely more than one way to say it. So I will tell you one more personal-ish story.

Mojolicious 4.0 is coming soon!

As a newer member of the Mojolicious Core Development Team, I am more than usually excited for a Mojolicious release. This is because the next major release, version 4.0, is set to ship very soon! For those of you who don’t know, Mojolicious is a modern Perl web framework which is lightweight and easy to get started learning and using, while containing features that are cutting-edge. It’s asynchronous/non-blocking to the core, websockets work out of the box, comes with built-in DOM/JSON/UserAgent, etc etc.

Our fearless leader Sebastian Riedel (aka sri) will no doubt post a message with all the details when it ships. In the meantime, I want to share a little story of how community interaction, even at the StackOverflow level, can lead to innovation and enhancement of major projects like Mojolicious!

SOAP::Lite 0.716 released

I'm happy to announce the release of SOAP::Lite 0.716. Thanks to all the many contributors! Coming to a CPAN mirror near you!

0.716 May 10, 2013
! #17275 Client unable to detect fatal SOAP failure (e.g. unable to connect to host)
! #81471 Force array context for correct Apache header parsing in SOAP::Transport::HTTP
! #45611 deserializing SOAP message with composite attachment raises exception
! #84168 Test t/02-payload.t fails under Perl 5.17.10
! #85098 Monkey patch for LWP::Protocol confuses the toolchain
! #78692 / #84724 / #83715 Sending large object (many levels deep) throws error Incorrect parameter
! #78502 t/08-schema.t noisy under 5.17.2 (unescaped left brace in regex is deprecated)
! #78608 Documentation for "+trace"
! #78639 Spelling error reported by Debian tools

On Codifying Conduct

In which I muse upon the insufficiency of the reasonable person principle.

Belated "hello world"

O HAI o/

As many of you know - I am a very late adopter. The time has come, however, when the amount of things I want to say about Perl and its community no longer fit in my TODO cache. So biting the bullet (or two) I am declaring the civility free zone1 as open. Watch this space for more ;)

Cheers

Perl and Java in Phoenix

Announcing App::Midgen v0.22

So what’s new?

  • Switched output format type from build to mb
  • Extract more from t/ and xt/ directories
    • Find modules in Test::Requires blocks
    • Find modules in use_ok BEGIN blocks
  • Supports suggests in on_test in cpanfile

Announcing: UAV::Pilot v0.1

UAV::Pilot is a Perl library for controlling UAVs. It currently works with the Parrot AR.Drone, with plans to expand to others in the future.

Demo video

The current library supports basic commands, such as takeoff, pitch, roll, yaw, vert speed, and land. All the preprogrammed flight animations are also in place.Navigation data and video are not yet supported–see the ROADMAP file for future plans.

Github repository: https://github.com/frezik/UAV-Pilot

Should be up on CPAN shortly.

Reverse debugging with gdb

I managed to work with gdb's reverse debugging finally. That means I can step back in time, step to the previous lines and back to the callers, not only back out the backtrace.

It should work since version 7.0 but got it working only today. The first times I got annoyed by the warning:

Breakpoint 1, ...
(gdb) target record
(gdb) rn
Target child does not support this command. 

Hmm... I knew nothing about target "child" and I read that those should work fine: Native i386-linux ('target record'), Native amd64-linux ('target record')

This is because I used the gdb command run. Now I changed my .gdbinit to use start and continue and set proper breakpoints, and rn (reverse-next aka previous) works fine. I feel stupid.

$ cat .gdbinit

YAPC::Europe 2013 talks

I've changed the configuration file of the conference site and now all submitted talks are visible. Enjoy!

act.yapc.eu/ye2013/talks

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.