YAPC::Europe 2012 Keynote on Agile Companies

As some of you may know, I gave a talk at YAPC::Europe 2012 about Agile Companies. Due to some miscommunication, the video is not online (yet), but I'm trying to get that sorted.

Today I checked an email folder I don't read frequently and discovered that the survey feedback on my talk came in:

  • Q1: Your prior knowledge of subject?
  • Q2: Speaker's knowledge of subject?
  • Q3: Speaker's presentation of subject?
  • Q4: Quality of presentation materials?
  • Q5: Overall presentation rating?

My perl5 TODO list

Below is a formal list of possible optimizations, which most would agree on. We had these discussion in 2001 with damian were perl6 and perl5i took off. I'd like to work on these for perl5 core and need decisions. Most p5p hackers seem to be informed about the general possibilities and directions, but not all. We'd need this to improve general perl5 performance, and also help static compilation.[1]

We had this before, so I'd like to keep it formal. So each proposal gets a perl6-like name, and replies should change the subject to that name. I choose PDD for "Perl Design Draft".

Beforehand: "compiler" means op.c not B::C. compile-time and run-time should be obvious.

PDD01 const / readonly lexicals

The CONST op currently is a SVOP, holding a global gvsv. A CONST op might hold lexicals also, a PADOP type. The more constants the compiler knows at compile-time the better it can optimize. The following datatypes need to be represented as const:

[ Hiring ] Socialflow.com, onsite perl web developers

SocialFlow is a leading social media marketing company offering businesses and brands a solutions-based approach to connecting paid, owned and earned social media strategies.
/about

2012 has been a great year for us, thanks to the hard work and collaboration of incredibly smart people on the development as well as the business side.

We launched socialflow.com in February , and have built up an unbelievable list of clients ( Pepsi, The Economist, National Geographic, The Washington Post to name a few ) who use and love the product.

We’ve got a whole bunch of stuff geared up for 2013 and we need some good developers to help us build it.

This position is for someone who enjoys solving real problems for real clients across a wide spectrum of web development, from schema design to client side mobile browser optimization.

We're about 70% a perl shop, 30% python.

Some of the many open source projects we use:
perl: Catalyst, DBIx::Class, Moose, App::Cmd, Dist::ZIlla
python: cherrypy, fabric, pycassa, thrift, psycopg2

Swiss Perl Workshop 2013

It's going to happen!

Stay tuned. Updates follow!

Cheers,
Maettu & Roman

Perl 5 Porters Weekly: September 10-September 16, 2012

[cross posted from its original blog]

Welcome to Perl 5 Porters Weekly, a summary of the email traffic on the perl5-porters email list. Once again subroutine signatures dominated the list. I'll put all of the discussion about them at the end of this summary. I've added an "official" license to these summaries. It's Creative Commons BY-NC 3.0. You can find the summary of rights granted by that license by following that link. The full license text is available in the github repo. Obviously, the content of emails quoted here are owned by their respective authors.

This week's dusty thread is CALL FOR DOCS: how to dual life? from the week of August 6, 2012. Rik was looking for a volunteer to document the process of dual-lifing core code. He specifically called out Tie::Scalar and Time::local. Anyone have any insight into this? Contact Ricardo Signes.

This week's quote of the week is about an epic csh behavior relating to getcwd. As if you needed more reasons to avoid csh.

Plan (software) to live forever

How often have I told myself, "I'll kludge this now and rewrite it later"? And how many times did I actually go back and rewrite that kludgy bit? "Too often" and "not enough". Many job postings include the phrase "update legacy applications," as a euphemism for "rewrite poorly-designed spaghetti." The Y2K problem was a huge exercise in code out-living the developer's plan, with a healthy dose of cargo-culting thrown in. Lately, I've been learning to plan for a likely possibility: My code will survive to haunt my bug lists and my resume for a long time.

YAPC::Europe 2013 in Kiev, week minus 47. Venue Research

There was a tweet from Viacheslav Tykhanovskyi last Friday: My life during last weeks: waking up early to visit the next venue for yapc :-). Do you know what stands behind that less-than-140-character message?

Skype is borking Foswiki on a stick

Lately my foswiki on the stick has been throwing this error whenever I try launch it, looking into C:\xampp\apache\logs\error.log, this comes up:

(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

Skipping the long winded troubleshooting narrative, I remember that I just upgraded Skype to 5.10.0.116. After shutting down Skype, I am able to bring Foswiki up again.

It's interesting that Skype uses port 80 to do it's business.

Text Processing: Divide and Conquer

Another day another generic text processing problem that many developers have had to solve before. I have a list of patterns and need to find if they exist in a group of files. If I did not need to do complex post processing then I could just use the command line like so


grep -ri -f patterns files/

Sneak Peek of Beyond Perl Fundamentals

Safari has just posted a sneak peek of my new video course Beyond Perl Fundamentals, successor to a video course whose name should be intuitable :-)

Tons of hard work. Some people can sit in front of a camera and deliver a flawless lesson in one take. I flub. I spent many hours hand editing with Camtasia to sync separate audio and video streams and edit out every little click. Hope it was worth the effort.

How many ways to start a process do you know?

Note: The titular question applies only to different ways in Perl.

I am planning to write a small guide/comparison of the different ways to start a process in Perl and while thinking about all the ways i do know, became certain that:

1. my knowledge about the ways i know is not complete
2. there will be ways i do not even know about

Thus i am turning to the Perl community for help. Please tell me what ways you know to start a process in Perl and all of the permutations it can go through. :)

Idle alerts with bcvi

In case you haven't met it before, bcvi is a crazy backwards tool (written in Perl of course) that lets you type commands on a server to make things happen on your workstation. I've just released an update to the notifications plugin so I thought I'd blog about it here.

Here's a simple example to illustrate what the notifications plugin does. Imagine you've SSH'd into a server to kick off some long running command and you'd like to be notified when the command finishes. In this example, I'm running a database restore:

$ pg_restore -d acmecrm crm.pgdump; bnotify 'DB is restored!'

When the pg_restore completes, the bnotify command will be run. Bnotify is an alias for bcvi which will send a message back to your workstation to pop up a desktop notification.

CPAN modules for getting a module's path

I've written a review of CPAN modules for getting a module's path, as previously promised.

This covers 14 modules, some of which offer a lot more than getting the path, and two of which offer nothing more than that. As ever, please let me know if you know of any module(s) I've missed.

Perl interface to LDTP is gaining traction

I've written about the new Perl interface to the LDTP (Linux Desktop Testing Project) testing library that I had written. It already garnished some interest from people on Github. We've had some progress on that front you might be interested in. Also, we still need your help! :)

Perlybook features Perltuts.com

We added a new page to perlybook: http://www.perlybook.org/perltuts

On that page you can grab the tutorials that are available on Perltuts.com as mobi or epub book.

It was easy to integrate those tutorials: Write a small script that gets all tutorial names, store them in a cache and list them on the webpage. Write a source plugin for EPublisher and that's it!

Thanks to Mojolicious it's very easy to extend the webapp and the script to fetch the tutorial names was written within "a few minutes". For future web scraping tasks I'll use Mojo::UserAgent...

If you have ideas what sources we can integrate, please drop us a line at perlybook@perl-services.de!

Compiled db-4.8.30 for MinGW64

Installing DB_File has been a pain, especially when binaries for db is no where to be found and instruction is rare. After spending a lot of time going through Google search result, I finally found this good instruction.

The binaries are available here.

Optimizing compiler benchmarks (part 1)

Since my goal is to improve the compiler optimizer (staticly with B::CC, but also the perl compiler in op.c) I came to produce these interesting benchmarks.

I took the regex-dna example from "The Computer Language Benchmarks Game" at shootout.alioth.debian.org/

Ooh, pretty!

CPAN Ratings has had a face lift.

Mass-Testing Dancer's Plugins

cross-posted from dams blog

Mass-Testing Dancer's Plugins

So, as I said at YAPC::EU 2012, one thing that remains to be done before Dancer 2 can be released : migrating the plugins, making sure they work with it.

To be able to do that, what's best than an automatic testing facility ?

The goal is to get all Dancer plugins, test them with Dancer1, and Dancer2, and produce a report, to check which one fails and need fixing.

Step 1. Get the list of Dancer plugins.

Easy ! let's use Metacpan. After searching, I finally got a way to get the list of all modules that depend on Dancer. Then filtering out the ones that don't contain "Plugin" will do the trick.

Introducing HTTP::CookieMonster

If you've ever had the pleasure of poking around in your WWW::Mechanize or LWP::UserAgent cookie_jar, you'll know it's not an entirely painless process. It's certainly not impossible, but it feels a bit like jumping through hoops. The cookie_jar functionality in LWP::UserAgent and the modules which inherit from it is provided by HTTP::Cookies. Before I go any further, I'd like to thanks Gisle Aas for HTTP::Cookies, which is a very important bit of code. This isn't a complaint about HTTP::Cookies, but rather an attempt to make it even more accessible.

Before we do anything with cookies, let's make one request to ensure we have some cookies in our cookie_jar.

    use WWW::Mechanize;
    my $mech = WWW::Mechanize->new;
    $mech->get('http://www.nytimes.com');

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.