If you like doing unusual things when you visit a new place, one...



If you like doing unusual things when you visit a new place, one of the things you should definitely check out while you’re in Madison for YAPC::NA 2012 is the National Mustard Museum

On the bottom floor they have an archive of the history of mustard. You’ll be amazed by all the things you didn’t know about mustard. In addition, they even have jars of actual mustard dating back to over 100 years.

On the top floor they have the most amazing selection of mustards for purchase you have ever seen, literally hundreds of types of mustards. And best of all, you can sample any mustard in the store whether you intend to buy or not.

You will have to take a bus, a cab, or drive though, because the National Mustard Museum is about 6 miles from the YAPC facilities. It’s worth the effort. This is a possible destination for the Spouses Program.

Batch-Printing on Command-line via Print-Driver

Situation
  1. You have: a PDF containing about 10.000 pages.
  2. You need: a file that can be sent to your printer (Postscript, PCL, whatever)
Condition
batch-command, no manual interaction with Acrobat

Possible solutions:
Ghostscript
gswin64 -sDEVICE=pswrite -res300 -sPAPERSIZE=a4 -dBATCH -dNOPAUSE -sOutputFile=C:/temp/new.ps input.pdf
A very good solution for PDFs of "normal" count of pages. A conversion of 10.000 pages may last one hour or more depending on the complexity of PDF file

pdftops.exe from foolabs ( http://foolabs.com/xpdf/)

Mo supports chained accessors

with the help of ingydotnet++ valuable suggestions, Mo now has the option to chain accessors:

package ChainedAccessors;
use Mo qw/chain/;

has 'first'  => (chain => 1);
has 'second' => (chain => 1);


package main;

$f = ChainedAccessors->new;

$f->first(1)->second(2);

$f->first;  # 1
$f->second; # 2

thanks also for the feedback in response to my previous blog post

Pagination has become kids play with Dancer ...

I published my first blog on 29th Sep'2011 about how Dancer and Rose::DB can be used together to build a web app in no time. Here is the link to that blog, if you have missed it.

I have been thinking of improving on that and first thing that came to my mind is how about adding pagination feature while displaying the items. There are many gems available on CPAN to help you in pagination. However I was looking for something that is easy to plug in with my Dancer web app. In my research I came across an example doing exactly what I was looking, although I find it incomplete by Alexis Sukrieh. Here is the link to that code.

I grabbed the idea from the above example and incorporated into my Dancer web app that I wrote as a part of my first blog. Here is the link to the code, in case you are looking for.

I am going to add this to my public github repository very soon.

This is a shot of the Gale VendeBerg Auditorium in the Pyle...



This is a shot of the Gale VendeBerg Auditorium in the Pyle Center. It will be used for many of the talks at YAPC::NA 2012.

Perl and Parsing 10: "Use" the Easier Way

In the previous post in this series, I described the way the Traditional Perl Parser (TPP) parses Perl's use statement. This post will describe an IMHO attractive alternative approach, using my own Marpa::XS. Marpa::XS has a prototype Perl parser as part of its test suite.

The TPP Way

If that previous post is not fresh in your mind, it may be useful at this point to look back at it. Summarizing, the TPP uses the "Ruby Slippers" method: It first simplifies the grammar so that, while convenient for the parser, the grammar falls short of describing the actual language. The lexer then fakes the input to the parser so that the parser's "wishful thinking" comes true.

In the TPP, the parser requires all use statements take this form:

use_statement ::= USE WORD WORD LIST

Here the WORD's may be either versions or names of modules -- the semantics looks at the internal representations to sort this out once the parsing is finished.

The Marpa::Perl Way

Request for Difficult Differential Equations

Firstly I would like to mention that I have just released version 0.06 of Math::GSLx::ODEIV2. For those of you who aren’t familiar with it (most of you I’m sure) this module represents a Perl-ish interface to the new GSL ordinary differential equation solver.

The major improvement of this version of my Perl module is the handling the Jacobian of the ode system. This allows the use all of the step functions in the original C library. In fact, other than one small feature that I would like to add (specifying quantity specific error limits), the module is just about feature complete.

Some pretty printing options for variables

Recently I needed something with the same functionality of Data::Dumper but prettier printing for dealing with nested structures. First stop Metacpan. I type in 'Data::Dumper' and the auto complete dropdown lists some suggestions and I try a few. Ovid's Data::Dumper::Names gives me the names of variables I pass in by reference. With Data::Dumper you would see this

$VAR2 = [ 
          [ 
            'plain', 
            'white' 
          ]
        ];
Now with Data::Dumper::Names it looks like this:

Brrrrrrrrr

Brrrrrrrrr :

It’s starting to get cold here in Wisconsin, and that got me to thinking that I’m glad YAPC is held in the summer. I love Wisconsin, but for many the winters are just too harsh. I found this old article that claims that during the worst Wisconsin winter lakes would add 9 to 11 inches of ice in just a couple days, and there were snow drifts as tall as 15 feet. 

CPAN Testers Summary - September 2011 - Construction Time Again

September has turned out to have been a very difficult and traumatic month for CPAN Testers. Our server problems have now been resolved, but it has meant more time than was intended has been devoted to rebuilding the website eco-system. It's still not complete, but we are getting there.

The first sites to be reinstated were the CPAN and BACKPAN mirrors. Soon after the Statistics site and Development sites were back online. The database rebuilds took considerably longer than expected, partly because the archive of the original NNTP reports had become corrupted at some point. The checks to ensure all interconnected parts of the databases were correctly referenced also took time. A full backup was then taken so we could start from a known point once all the moving parts were restarted. Just in case anything went wrong again!

DBIx::Class tsk tsk

Next time I upgrade DBIx::Class it will probably tell me I need to get a haircut.

DBIx::Class::Schema::connection(): You provided explicit AutoCommit => 0 in your connection_info. This is almost universally a bad idea (see the footnotes of DBIx::Class::Storage::DBI for more info). If you still want to do this you can set $ENV{DBIC_UNSAFE_AUTOCOMMIT_OK} to disable this warning. at lib/Territory/Model/TerritoryDB.pm line 23

Pittsburgh Perl Workshop Oct 8th and 9th.

Hope to see you at the Pittsburgh Perl Workshop.

Plain Black is Hiring

If you're looking to break in to web development, and have a chance to work on some of the coolest web apps in the Perl world, Plain Black is hiring 2 developers. Here's the job description:

Plain Black is hiring and we’re looking for a geek like you. Not your average geek, but someone who wears GEEK as a badge. Someone who breathes Perl, and drinks Linux. A geek who knows that there’s more you can do with SSH than just open a terminal to a remote box. Someone who believes that Internet access is not just a human right, but that it’s as important as air, water, and shelter. If we’ve described you, then please apply.

 

You must be able to:

Chaining in Moose, Mouse, Moo and Mo

Recently, I created a new issue on Github for Mo (https://github.com/ingydotnet/mo-pm), suggesting a chained interface:

YAPC::Europe 2011 Survey Results

During August this year, in Riga, Latvia, YAPC::Europe brought together 285 people to learn, discover and discuss Perl. As previous attendees know the YAPC conferences are a perfect opportunity to introduce yourself to the Perl community. YAPCs are now held all around the world and each is very different another. Each has their own charactistics, and they all get better and better thanks to the feedback from attendees old and new, which is why the YAPC Conference Surveys are well placed to concentrate that feedback for future organisers.

For YAPC::Europe 2011, the survey results are now online.

Work progress on WWW::Mechanize::NodeJs

Lots of people use WWW::Mechanize::Firefox. This makes me happy.

Some of these people would like to do away with needing Firefox to be running on the machine doing the automation. To look in that direction, and to gain some familiarity with nodejs, I started porting the proxy object backend MozRepl::RemoteObject to nodejs. I've uploaded the work in progress to Github as NodeJs::RemoteObject. There is a lot of copied and pasted code between the two ::RemoteObject modules, and likely, this will beget a third, shared incarnation of (Javascript) proxy object implementations.

The main thing that's still needed is to actually write a web "browser" implementing just enough to run most web applications, for nodejs. I think there already is something called "jsdom", which claims to be just enough of a browser to make this work.

The Perl Testing Workshop at YAPC::NA 2012, taught by Gabor,...



The Perl Testing Workshop at YAPC::NA 2012, taught by Gabor, will be in Room 226 of the Pyle Center. We thought you might like a look at the room before the workshop. The workshop will be held for the 2 days before the conference (June 11 & 12).

Moving my Perl presence to blogs.perl.org

(*STORE,*TIESCALAR)=
  map{eval"sub{$_}"}qw'map{print&&sleep$|}split//,pop bless\$|++';
tie$t,main;$t="Just another Perl hacker,\n"

I have been blogging for some time over at http://joelslinux.blogspot.com. It was and still will be a blog about Linux and the open source software that I use. I doubt it has many readers, in fact it was mostly for me to remember interesting tidbits should I need them again.

In the past few years I have become quite a Perl enthusiast, doing most of my day-to-day work in Perl and authoring several modules. To get a little deeper into the fray I decided to split my blogging, posting on Perl here in case it may be of use to anyone. I hope people find it informative and I hope to get feedback from those who do (or don’t for that matter).

New Beginning Perl book

So, I've been awfully quiet lately. There are a number of reasons for that, not the least of which is being the proud parent of a delightful little girl. Another reason has been simple: I'm writing a book.

DCI Revisited

A couple weeks ago I posted this introduction to DCI. I received a lot of feedback. Primarily I was told that I did not explain DCI concisely enough. In addition I received feedback that showed me I completely failed to convey the point of DCI. DCI does not replace OOP, it augments it and makes it easier to maintain.

After reviewing all feedback, and corresponding with many of those who provided it, I have written a new document. This document attempt to use simple language, to put DCI as simply as possible. Unfortunately the logical leap to grasping DCI is at least as large as the logical leap from Imperative to OOP, and cannot be consistently conveyed in a simple paragraph (at least not with my writing skills.)

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.