Not-Perl: Career Advice for Programmers

Quite a few of you will have picked up one of my Perl Careers booklets when I've seen you at conferences. I've started keeping a long-form blog of Career Advice for Programmers here: Code for More.

How to get paid more, a guide for Perl programmers

So I wrote a guide on how to get paid more by understanding technical hiring processes:

https://www.slideshare.net/perlcareers/get-paid-more-the-anatomy-of-a-technical-hiring-process

Test::BDD::Cucumber and `prove`

Thanks to some sterling work by ehuelsmann, not least of which was badgering me to commit some code, Test::BDD::Cucumber now integrates directly into prove. This means you can run your feature files in parallel, and in a shuffled order more easily. This is a bit of a mouthful to achieve:

prove -s -j 5 -r --source Feature --feature-option extensions=.feature --ext=.feature examples/

and any suggestions on how to make…

Yak Shaving: XML::Writer edition

I am messing around trying to fix the QIF files that Lloyds TSB CC statements are presented as, and needed to write XML.

XML::Writer seems like a reasonable solution, but I’m not OK with writing a static header by using 300 calls to $writer->startTag(‘blah’).

This seems a good job for the computer; specifically for a SAX parser which will happily parse non-balanced XML. Anyway, the result is:

my $writer = XML::Writer::Lazy->new( OUTPUT => 'self');
my $title  = "My Title!";

$writer->lazily(<<"XML");
    <html>
        <head>
            <title>$title</title>
    </head>
    <body>
        <p>Pipe in literal XML</p>
XML

$writer->startTag( "p", "class" => "simple" );
$writer->characters("Alongside the usual interface");
$writer->characters("123456789");
$writer->lazily("</p></body></html>");

https://metacpan.org/pod/XML::Writer::Lazy

Which is considerably lazier, and allows you to intersperse actual XML::Writer commands with chunks of XML string and have it do largely the right thing.

DEFCON fail

Long-time Perlista hfb reports from a sadly regressive DEFCON:

https://plus.google.com/+ElaineAshton/posts/Eh9vDGFhy7w