Suprisingly hard task of writing logs

At my $job, we often use files and logs as the cheap way of managing queues of data.
We then read them using Log::Unrotate module, but this is the topic for another post.
Anyway, it's important that all items written in log are never lost and never get corrupted.

So here is the task: write serialized data to file from multiple processes.
Sounds easy, right?

MooseX::Types::Structured - how I detest thee!

Yeah, thanks, “something failed validation”. You’re the damn computer, how about you tell me which field you didn’t like?!

Schedule finalized, early bird registration ending

Hey, folks. Thank you all for submitting so many excellent talks and making our lives difficult regarding choosing which to accept! Our main schedule is rather finalized now, any cancellations notwithstanding. That said, we still need lightning talks!

In addition, I would like to remind everyone that early bird registration closes at 23:59:59 EST5EDT on 2011-05-06. So register now if you want that low rate!

Oh hey

So it's been over a year since I posted anything here. I've been working on Perl code at a big company, and I've mostly been enjoying myself. It's not easy diving into a large legacy application, especially when you have strong opinions about legacy code. But there are plenty of crunchy problems to sort through.

I'm thinking about dumping more random Perlish thoughts here. My Perl world includes Parrot and Rakudo, so some connections may be tangential at best.

Why I Love Perl: The CPAN Ecosystem

são paulo

Tomorrow I leave for the São Paulo Perl Workshop. I thought for a bit on what I would want to talk about, which always depends on the audience. For this one, I'll go for the general audience.

Why I Love Perl: The CPAN Ecosystem

The Comprehensive Archive Network, or just CPAN, isn't any one thing. It means different things to different people, and even different things to the same people in different contexts. CPAN is a repository, or a website, a client, and many other things that a diverse and disconnected group of people have created to give people many ways to get or think about reusable Perl code where no one is in charge and there's no one person controlling all of the action. Find out how the parts relate to each other, what the different parts can do for you, and where to go to get help.

I'm also going to Rio after São Paulo and we'll see what we can arrange for a social event (or a talk) there too.

First week of GSoC and progress made with MetaCPAN

As you might have heard, my MetaCPAN project has been accepted for the Google Summer of Code. If you are unfamiliar with the proposal, you can find it here.

The first few weeks are called the "bonding period". In this period the student is supposed to bond with their mentors and the community, read docs and get to know the project.

My tasks for this period are mainly to contact maintainers and author of CPAN Ratings, CPAN Testers and CPAN Vote to figure out how to include their data in the index. With CPAN Testers this was quite easy. They provide a SQLite database that includes test results for each release on the CPAN. Unfortunately we were not yet able to contact Ask, who is maintaining the CPAN Ratings page. There is a CSV file that includes some data, but it's heavily aggregated and thus not very useful for MetaCPAN.

John Siracusa discusses Perl on Hypercritical

In episode #15 of Hypercritical, John Siracusa presented Perl in (largely) a very positive light to what I assume is mostly a non-Perl audience.

I'm including my notes on the discussion below, but I recommend listening to the podcast yourself to form your own impression: http://5by5.tv/hypercritical/15

I couldn't find a discussion area linked from the episode page, but I noticed someone posted it to Hacker News as "John Siracusa and Dan Benjamin on high-level programming languages [podcast]."


Notes on Hypercritical #15

Geeks love a meritocracy, but languages often become popular for reasons other than their technical merit. Why do languages become popular? They are the official language of a platform. They promise the ability to write once, run everywhere. They enable a new type of application (i.e. CGI). They allow you to use the hot new thing (Rails). It's your only choice (JavaScript, Flash).

Most languages stink.

What should a high level language have?

Perl Hunter Job Leads

I figure I might as well get blogging on Perl Hunting as well.

I have set of Perl job leads open now. This is a telecommute job from these
8 states or onsite in Silver Springs MD:

CA FL GA IL MD MI NC NY

Read more about this job

To apply for either job send your resume in PDF or plain text AND
samples of your Perl code to resumes AT PerlHunter.com.

If your shop has a Perl job you want filled, send it to me as well. I
have placed over 30 Perl developers all over the country and can help
you out. You save time and money by doing reading fewer resumes, and no
wasting hours of time interviewing candidates who have no chance of
being hired. Read more about my services at PerlHunter.com.

Yet Another Perl Podcast #4: Апрельские Perl новости

События за прошедший месяц ( апрель - 1.04.11-1.05.11 ):

Cсылки: RSS и лента на rpod.ru
Следите за анонсами в twitter

Dancer release codename "Yanick in Black"

Yesterday was May Day, also known as Labor Day. We finished a development release cycle successfully and it was about time to release a stable.

This release, as promised, is named after someone who has been in the Dancer community for a while and indeed deserved the recognition: Yanick Champoux. You can find the first commit by Yanick in the 4th development release of 1.2000 - wayyyy back. Since then he has also written quite a bit on Dancer as well, showing off how to use Dancer in production environments and having a lot of fun with it at the same time.

Yanick has made a major contribution to this release - the megasplat route ability allows for much more sophisticated chained actions. By using a double asterisk in the route syntax, you're able to get the remainder of the route path , already split, at your convenience. Then you can reroute using pass(). Here is an example from the documentation:

Resilience of the Internet Interconnection Ecosystem

Hi Folks

The title of this blog is a copy of the title of this article:
http://www.lightbluetouchpaper.org/2011/04/12/resilience-of-the-internet-interconnection-ecosystem/

On the hosting web site http://www.lightbluetouchpaper.org/ you'll find an on-going series of fascinating articles.

Cheers
Ron

Template::Simple .04 is on CPAN

I have released Template::Simple .04 to CPAN. This is a major update
with the addition of compiled templates, a runnable cookbook script and
a benchmark script. Templates can be compiled and run much faster. The
benchmark shows nested templates rendering up to 34 times faster than
Template::Toolkit and faster than Template::Teeny. If you want to flame
about the speed issue, you are better off adding entries to the benchmark (it needs a
redesign as it was sent to me) and showing faster templating
examples. The cookbook is a runnable script showing many examples of how
to use T::S along with pod describing each example.

The design philosophy of T::S is total isolation of data logic from the
template itself. A template designer can work independently from a coder
who works on the data. Also this give more flexibility you can mix and
match different templates with different data trees without rewriting
either. All the common idioms are supported including nested data and
templates, include files, loops, conditionals, etc. You can also customize behavior with code callbacks in the data. The cookbook script
in extras/ will get you started with all of the idioms. And with the
compiled templates you now get the fastest rendering.

Have the appropriate amount of fun.

Yet Another Perl Podcast #4: Анонс

Апрель выдался богатым на события в perl сообществе. Чего только стоит первый за три месяца релиз Rakudo Star (2011.04). Об этом и не только мы поговорим в очередном выпуске YAPP.
Если и у вас есть какие-то новости, которые кажутся вам интересными, присылайте ссылки на них и мы с удовольствием озвучим их.
Свои предложения Вы можете писать в
twitter: twitter.com/yapp_ru,
по почте: yapp_ru@gmail.com,
в jabber: yapp@demond.org
или в комментариях к данному анонсу на blogs.perl.org по адресу:
https://blogs.perl.org/users/perl_demon

Dancer is attending GSoC (Google Summer of Code)

By popular demand and after careful considerations, Dancer has been accepted to GSoC. Two proposals were submitted and one was accepted, so we will be happily participating.

The accepted proposal is by Carlos Ivan Sosa (gnusosa), you can read his blog post right here on his blog, which is powered by Dancer itself. :)

Carlos will be focusing on factoring out the stand-alone script into a module in core, and then inserting there all the logic of the scaffolded maintenance scripts, so upgrading will be easy as pie (or something else which is really easy).

The major point of reference for this is Catalyst, and it is probably of no coincidence that Catalyst has done such a cleanup of their own in a previous GSoC, so this is quite the circle closure!

Congratulations to Carlos are in order, and keep your eyes on his blog since he intends to update the community on his progress.

ElasticSearch.pm v0.37 released, with a small breaking change

Just released ElasticSearch.pm v 0.37 which has a small breaking change.

In version 0.36, $scrolled_search->next() returned the next $size results. Now, by default it returns the next one result, which makes it easier to write:



     while ( my $result = $scroller->next ) {...}


Dancing on a cloud made of pearls

Thanks to a post on Hacker News, I got access to the beta test for DotCloud. In this blog post, I show how I got started and successfully deployed a small Perl Dancer web app to the service.

I was extremely pleased with how easy it was to do the above, and wanted to share it!

Deploying a Perl App to DotCloud

Deploying a Perl Plack / PSGI application to DotCloud hosting is very easy.

Following the announcement that DotCloud are now supporting Perl I managed to get a test account and had a play.

I already had python installed on my Mac so the steps were...

  • sudo easy_install dotcloud
  • dotcloud create leotest
  • dotcloud deploy --type perl leotest.www
  • git://github.com/ranguard/plack-example.git
  • cd plack-example/multiple_roots/
  • dotcloud push leotest.www ./
  • open http://www.leotest.dotcloud.com/

My multiple_roots test is a slightly contrived configuration, using Plack::App::TemplateToolkit with multiple roots for static and dynamic content, this is configured in the app.psgi. I had put it together when I was developing Plack::App::TemplateToolkit so thought it was a good example to test.

The only issue I had was that the default configuration of DotCloud serves anything in ^static directly through nginx so I had to rename my directories to get it to work. Previously I didn't have a Makefile.PL as this had just been for testing, I created one, so the dependencies could be installed.

You can see the final (although visually dull!) result at http://www.leotest.dotcloud.com/.

I can see myself using this service a lot in the near future.

Three things I'd Change About Perl

Ovid asks about three things you'd change about Perl, which is similar to my standard interview question What are five things you hate about Perl?. I never really answered the question myself, although I did let go of one thing in my Frozen Perl 2011 Keynote: the connection between module names and filenames. Breaking that connection helps with my second thing.

I want first-class classes that I can store in a variable. I want to be able to load multiple and different versions of a distribution. As part of that, I'd want to load distributions, not particular modules. I'd get to the modules through the distribution. I haven't really thought about the syntax for this, though.

I would also be able to load things lexically:

Ch-ch-ch-ch-changes

Quickly now, without too much thought about it (unless you insist), reply with the top three things you would change about Perl (the language, not the community) if you could.

Graphical widgets in my text console? How perverse!

Things like this:

amethyst-buildconf-value-change.png

are now possible in Perl and Moose. Get from CPAN

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.