Announcement for Sereal, a binary data serialization format, finally live!

It's been long in the making, but finally, I've gotten the Sereal announcement article in a shape that I felt somewhat comfortable with publishing. Designing and implementing Sereal was a true team effort and we really hope to see non-Perl implementations of it in the future. We're virtually committed to finish the Java decoder at least for our data-warehousing infrastructure. Any help and cooperation is welcome, as are patches to improve the actual text of the specification (which is kind of a weak point still).

By the way, for those who worried about the lack of a comment-system on the Booking.com dev blog before, we've added Disqus-support.

But now, I'm just glad it's out there!

Problems building mod_perl on Mountain Lion (MacOSX 10.8)

Over the weekend I upgraded my laptop to Mountain Lion, and decided to install Perl 5.16.2. I had problems getting mod_perl working. This is a summary of the problem and the (a?) solution, in the hope it might save others from banging their heads against it.

A Marpa tutorial: pattern searches

[ This is cross-posted from the new home of the Ocean of Awareness blog . ]

Pattern searches

We use regular expressions for pattern searching these days. But what if your search target is not a regular expression? In this post I will show how to use Marpa to search text files for arbitrary context-free expressions.

This tutorial builds on earlier tutorials. It is possible to simply dive into it, but it may be easier to start with two of my earlier posts, here and here.

The grammar

I will use arithmetic expressions as the example of a search target. Even the arithmetic subset of Perl expressions is quite complex, but in this case we can get the job done with eight lines of grammar and a lexer driven by a table of just over a dozen lines. Here is the grammar:

    
start ::= prefix target
prefix ::= any_token*
target ::= expression
expression ::=
       number | scalar | scalar postfix_op
    || op_lparen expression op_rparen assoc => group
    || unop expression
    || expression binop expression`
    
    

YAPC::Europe 2013 in Kiev, week minus 40. Announcing the Venue

Today we announce that the YAPC::Europe 2013 in Kiev will be held in the Ukrainian House national centre, a five-storey building in the very centre of Kiev.

image06.png

Let's first give a word to the official site of the venue.

Sparklines in Excel::Writer::XLSX

I've added Sparklines to the latest version Excel::Writer::XLSX.

Sparklines are small charts showing trends that fit in a single cell. They were invented (or at least named) by Edward Tufte.

In Excel they look something like this:

sparklines1.jpg

Excel::Writer::XLSX now provides an interface to Sparklines in Excel and to all of their options to allow worksheets like the following (taken from the output of one of the example programs):

sparklines2.jpg

On a related note, I also recently added Excel "Tables" to Excel::Writer::XLSX. Excel Tables are a way of grouping a range of cells into a single entity that has common formatting or that can be referenced from formulas:

tables.jpg

YAPC::Europe 2012 - The Survey Results

The Conference Survey Results for YAPC::Europe 2012 are now online.

Many thanks to the 124 respondents, who made up 37% of the attendees. Although we usually experience a greater response from European attendees, the responses we did get still give a reasonable picture of the attendees. Once again it seems the attendees are getting older with the average age of an attendee being in their mid-30s. For a good proportion of the respondents this was their first YAPC, so we are still encouraging newcomers to get more involved in Perl community events. With 327 attendees in total this was the 3rd highest attended European YAPC (only just behind Vienna (340) and Lisbon (330)).

Perl 5 Porters Weekly: October 29-November 4, 2012

Welcome to Perl 5 Porters Weekly, a summary of the email traffic of the perl5-porters email list.

This week's topics are:

  • perl-5.16.2 is now available
  • perl-5.12.5 RC1 is now available
  • What happened to the whole "small core" idea?
  • Eliminating the "rehash" mechanism for 5.18
  • benchmarking Murmurhash3 vs One-At-A-Time as perl's hash function

Windows port of Marpa::R2

A very good thing indeed. Can't wait to get my hand on it.

Install all metacpan favorited distributions

Today I had to install fresh Perl on one of my dev boxes and I was thinking if there is easy way to grab and install all of mine favorited distributions on metacpan.

I wrapped that into simple script, that reads all the favorited distributions from metacpan, using Mojo::UserAgent and installs them using cpanm.

Here is the script: https://gist.github.com/4030168

30 url mappers for Google code-in

Hi

Here's a list of 30 url mappers I'd like to treat as per the list of 122 class builders. Please comment re adds or deletes, evaluation criteria, whatever.

Catalyst::Dispatcher
CGI::Application::Plugin::ActionDispatch
CGI::Application::Plugin::REST
CGI::Application::Plugin::Routes
CGI::Application::URIMapping
Dancer::Plugin::Dispatcher
Dancer::Route
Forward::Routes
HTTP::Router::Route
Jifty::Dispatcher
Mojolicious::Routes
Path::Dispatcher
Path::Router
Pickles::Dispatcher
Pinwheel::Mapper
Plack::App::Path::Router
Plack::App::Path::Router::PSGI
Plack::App::URLMap
PlackX::RouteBuilder
REST::Application::Routes
Router::Dumb
Router::Generic
Router::Simple
Routes::Tiny
Scaffold::Routes
Silki::Action::REST
Sleep::Routes
Web::API::Mapper
Web::Dispatcher::Simple
Web::Simple

Omitted: Apache-specific, FCGI-specific, Engine X-specific.

Writing version of dependencies

Sometimes excess laziness is not a virtue. Whenever I add a dependency, I used to just write in dist.ini:

Foo::Bar=0

This is of course not correct. Starting from last week, I've changed this habit. now I write the version which was currently installed on my development laptop/PC at the time of writing. And if I am not lazy, I try "cpanm Foo::Bar" first to update it to the latest version.

A Parser for Marpa::R2

This proof-of-concept (test, module) parser takes input, invokes lexer as needed, evaluates parse tree(s) and returns the value.

CPAN Testers Summary - November 2012 - Kick

If I could kick the Amazon SimpleDB we have, I'd take great delight in doing so. Thankfully, our days of relying on it are numbered ... in a good way. More news on this will be forthcoming soon.

Google Code-In 2012

Could your module or project benefit from having someone

  • fix a specific bug
  • add a test for a specific feature
  • improve test coverage by 5%
  • write a tutorial
  • create a screencast for beginners
  • write an example program
  • create a homepage for the module

?

If so, you could be in luck. These are all potential tasks for students in this year's Google Code-In.

Following on from our success last year, The Perl Foundation is hoping to take part in the Google Code-In again this year. GCI is a programme similar to the Google Summer of Code, but aimed at students between the ages of 13 and 17. Students complete short well defined tasks for open source projects, and the two top students from each organisation will be invited to visit Google's headquarters in Mountain View, California for a five-day trip.

Tapper repositories moved

To all who follow us on github: The Tapper repositories are moved from http://github.com/amd to http://github.com/tapper. Please adapt your "follow subscriptions".

Tapper is an all-embracing test infrastructure, see http://tapper.github.com/Tapper.

Currently we (renormalist and Caldrin) work on a more out-of-the-box usage based on the raw CPAN modules, to minimize the necessity of /etc/init.d/ struggling and Tapper-Deployment for some simpler use-cases like "ssh" in contrast to the full-blown "machine-setup-from-scratch for virtualization".

Algebra of Grammars?

As in "I can parse integers and F can parse floats so I + F must parse integers and floats".

Not sure what I *F must do though. :)

Akin to parser combinators, perhaps.

Executable notation with Marpa just as the relational algebra is executable with SQL.

Looks like an algebra of grammars be defined in terms of their parseable sets (Algebra of Sets). Then I *F must parse only integers (intersection).

And then, if a problem domain can be reduced to an algebra of parseable entities, it must be parsed by an algebra of grammars with all benefits of mixing, matching, and reusing grammars at will.

That's all probably looks too trivial or too vague, but it starts making much more sense (to me at least) when doing general practical BNF parsing with Marpa::R2 now that grammars like this see the light of day.

Booking.com dev blog goes live!

I'm proud to echo the announcement that the Booking.com dev blog has just gone live. Quoting the announcement:

Booking.com is an online hotel reservations company founded during the hey-days of the dot com era in the 90s. The product offering was initially limited to just the Dutch market. We grew rapidly to expand our offerings to include 240,000+ accommodations in 171 countries used by millions of unique visitors every month - numbers which continue to grow every single day. With such growth come interesting problems of scalability, design and localisation which we love solving every day.

The blog is kicked off with just a quick, humble article of mine on a debugging module that I published after needing the functionality at work. In a given code location, it allows you to find where in the code base the current set of signal handlers were set up. We plan to publish new content regularly and have a few interesting stories already lined up. So stay tuned!

Dynamic ACL for EC2 with Dancer

An in-house Dancer webapp that's running on EC2 needed an ACL (Access Control List): a list of IPs that are allowed to access the application. Here is how we've accomplished it in a few lines.

Perl 5 Porters Weekly: October 22-October 28, 2012

Welcome to Perl 5 Porters Weekly, a summary of the email traffic of the perl5-porters email list. I'd hoped to get this published earlier, but it didn't happen.

In the US, we just switched back to "standard" time on Saturday. Rah, rah energy savings, but toddlers don't adapt well to legalistic time changes, so I was up and at 'em at the butt crack of dawn this morning.

Enough complaining, let's get to this week's topics. I hope you wanted a week full of discussion(?) around subroutine signatures, because that's what we got.

  • perl-5.16.2-RC1 is now available
  • 5.12.5 last call for patches
  • Consider Forbidding Developer Releases in Production Perls
  • No-taint support in Perl
  • What happened to the whole "small core" idea?
  • sub signatures
    • too many arguments
    • function to return the signature
    • too few arguments
    • status - I'm going quiet for a while ...

A Lexer for Marpa::R2

This proof-of-concept lexer (module, test) extracts literals (and other terminals) from a Marpa::R2::Grammar and turns them to regexes to tokenize string input for Marpa::R2::Recognizer.

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.