YAPC::Europe 2013 in Kiev, week minus 39. Some ideas about the extended programme

Hi,

Today I'd like to compile a list of events that would be nice to have in the extended programme of the conference. As you may know from our previous weekly newsletters there will be no auction in Kiev, at least there will be no live auction which became boring and unnecessary during the last few years (let's don't think about money we could raise there).

What other things can we find entertaining?

Perl Quiz. If you were lucky to attend the dinner at YAPC::Europe in Lisbon you may not only remember that there were plenty of food, dozens of types of meat, but also there was a quiz lead by Damian Conway. A few teams were answering different questions about Perl and its community. Some questions were very easy from the first look but were quite difficult to answer, which made the quiz very entertaining event.

quiz.jpg
Photo by cowfish

A Marpa tutorial: iterative parser development

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

Developing a parser iteratively

This post describes a manageable way to write a complex parser, a little bit at a time, testing as you go. This tutorial will "iterate" a parser through one development step. As the first iteration step, we will use the example parser from the previous tutorial in this series, which parsed a Perl subset.

Text Processing Part 2: More Speed

In my previous post Text Processing: Divide and Conquer I took a text processing problem profiled it, then developed a few possible solutions. I benchmarked these options and now use the fastest solution… that I tested for. Two comments were posted for that article that gave insight into different and faster ways to solve this problem.

C Programming: What is the difference between an array and a pointer?

Why is a raven like a writing-desk? (Lewis Carroll)

This is a copy of an article I wrote a long time ago. I'm putting it here to give it a more permanent home. Sorry for being off topic again!

Introduction

I'm glad you asked. The answer is surprisingly simple: almost everything. In other words, they have almost nothing in common. To understand why, we'll take a look at what they are and what operations they support.

Helios 2.60 Released

I am glad to note that Helios 2.60 has been released! The new version brings significant performance enhancements via new database handling code. There is also a new modular, extensible configuration API and other new configuration options and enhancements. You can check out the full change log here.

For more information about the Helios distributed job processing system, check out the Helios website or our project on GitHub!

libcurl as LWP backend (or "all your protocol are belong to us")

Suppose you are planning to scrap a few thousands of pages using WWW::Mechanize.

Over HTTPS. Via SOCKS5 tunnel. On an aged CentOS box (think Perl v5.8). With no root privileges. Bonus points if it uses HTTP compression. Better prepare for some serious yak shaving.

If only WWW::Mechanize was written on top of libcurl, instead of LWP::UserAgent! (spoiler: I doubt it could ever happen; libcurl is all about manipulexity; whipuptitude is beyond it's scope) How cool supporting all that features out-of-box would be?

$ curl -V
curl 7.28.0 (x86_64-apple-darwin12.2.0) libcurl/7.28.0 OpenSSL/1.0.1c zlib/1.2.7 c-ares/1.7.5 libidn/1.25 libssh2/1.2.7
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

Now, what about this?

$ PERL5OPT=-MLWP::Protocol::Net::Curl=verbose,1 mech-dump https://google.com

Using Padre for the first time

Recently I have been doing some in depth research with regards to development tools of all kinds. Currently I am working my through the various IDEs available in both the open and close source worlds. This is what spurred me into giving Padre another shot. The last time I tried to install it there was a dependency problem and it was not worth solving. So that is my first step, install Padre.

LCLOC of the month

Here's the Least Comprehensible Line Of Code I came across this month. Took me a while to make sure it really did what I thought it did.

my @array;
# ...
@array = map {$_;} (@array, keys %{$this->{'someobject'}->get_some_hash_ref()});

Bonus points for using $this instead of $self.

The sad state of syntax highlighting libraries on CPAN

I just posted reviews of several code syntax highlighting libraries on CPAN. In short, most of them are crap and there is nothing remotely similar to Python's Pygments or Ruby's coderay (oh how the mighty CPAN has fallen). I found that Syntax::SourceHighlight, a Perl interface to GNU Source-highlight, is the only usable one. One downside is just that I need to pull over 100MB-worth of Debian packages to have it installed, a huge dependency especially since my original requirement is merely to colorize the terminal output of some JSON and YAML. And it's too bad that it doesn't support YAML out-of-the-box yet. So I don't plan on using it anytime soon.

Currently I'm investigating (via the lazy web) utilizing emacs'/vim's syntax-highlighting capability. It's a good bet that one of those two editors are available on a standard Linux box. A pure-Perl library would be ideal though.

Filters with Template Toolkit

In the last days I've been preparing a web site where I want to show values in four different currencies, accordingly with the user choice, and keeping up with the current exchange quote. I do not want to talk about how to get those values, or what values or website I am building, but just share an experience I've got with Template Toolkit that made it easy to separate the values conversion from the core code.

Patch known perlcore ptr problems

App::perlall 0.27, a better perlbrew at CPAN for multiple global perls, now patches some of the known security problems with buffer-overflows and use-after-free errors for the perl production releases.

E.g. perlall build 5.14.2-nt builds a patched non-threaded perl, with proper entries in patchlevel.h. A proper 5.14.3d-nt-asan not yet.

I currently patch only 4 known errors for non-threaded perls from 5.10 to 5.16. The latest "security fix" 5.14.3, blead and threaded perls are in a worse shape. I will add more fixes to App::perlall for these perls later. The amount of work is overwhelming. There are at least 2 more buffer-overflows and use-after-free errors which need to be backported.

The details are in a Devel::PatchPerl plugin called Devel::PatchPerl::Plugin::Asan

Promoting Perl Workshops and Conferences

I'd like to thank all the Perl Workshop, YAPC and OSDC organizers who were kind enough and posted a Perl Weekly banner on their sites.

I maintain a list of future Perl Workshops and conferences, and include the 3-4 closest ones in every edition of the newsletter. If you would like to see your event listed there, and sent out to over 4,000 people, please let me know.

Three Command-Line Utilities

So, November is NaNoWriMo ("National Novel Writing Month"), and I was hoping to get some serious writing done (instead of coding), but I kept being distracted with coding and random writing in various Internet forums. Well, hopefully this blog post will compensate a little for that.

In this post, I'd like to cover three command-line utilities - two of them new and were written by me, and one of them somewhat older, but also written in Perl.

The first utility is GNU Parallel, which allows one to run several command-line jobs in parallel, using forking and/or ssh remote logins. I used it to speed up some processing I've been doing on my computer. For more information and some examples of usage, see my post about it to the linux-elitists mailing list, and also read Thomas Sattler's response which provides some further insights.

On the utility of Module::Build::CleanInstall

Not too long ago, I asked for input on a new module: Module::Build::CleanInstall.

TL;DR its out there, go use it!

Filtering CPAN results by release date

When is the last time you used a CPAN distribution whose last release date was more than five years ago? I don't mean just in hacking around or for research purposes. I'm talking about something that mattered, that lived somewhere other than your development machine and could be seen/used by other people. Even if you have an answer for me, it's certainly going to be the single exception to a vastly superior rule, no?

For the vast majority of my searches, I really couldn't give a fluff about anything last released in 2007 or earlier. I'm not advocating removal or anything (or am I?) but the language and its developers move on. Shouldn't CPAN?

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

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.