Hands-on Stackato Workshop

Jan Dubois will give a free workshop at YAPC::NA 2012 described as:

Stackato is a private cloud platform from ActiveState

In this workshop you will:

  • get a very brief summary of the Stackato architecture
  • install the Stackato Micro Cloud on your laptop
  • deploy sample Perl applications (e.g. Bugzilla) to Stackato in minutes
  • convert your own Perl web applications to Stackato

Preparation

We will have some USB sticks with VirtualBox and Stackato installers available, but to save some time you can also download and install the software ahead of time:

  • a hypervisor (VirtualBox, VMWare Fusion, VMWare Player)
  • a corresponding Stackato VM 

A good starting point for pushing your own application to Stackato will be to have it already running locally on your laptop.

This workshop will be given by Jan Dubois and Ingy döt Net.  Ingy is also presenting a talk about Stackato.

[From the YAPC::NA Blog.]

Seeking someone to host CPANDB::Generate

CPANDB is a pretty awesome tool, in my humble opinion.

It takes a whole variety of different data sets from the CPAN group of services, and cooks them down into a single unified SQLite schema that you can access via a convenient ORLite wrapper (or access directly if you wish).

This single database file can then be used both as a convenience for simple tasks, or to build deep and complex analysis metrics of the kind I used in the creation of the CPAN Top 100 website.

The biggest problem with this module has always been the problem of server resources. To generate the database originally required downloading the CPAN Testers database. Even today in it's updated form it needs the CPAN Testers summary database, and that doesn't necessarily calculate it's metrics the way that CPANDB likes them.

To make CPANDB a truly useful tool that other parts of the CPAN ecosystem can rely on it needs to become much more stable and be updated regularly.

Let Paths Be Paths Again

The de facto standard way of constructing portable filesystem paths in Perl is through the use of File::Spec's catfile and catdir functions. Example:

my $path = File::Spec->catfile('dir', 'subdir', 'file.txt');

This method, or a similar one involving Path::Class, is the most recommended approach and has been adopted by application development frameworks like Dancer (which has a wrapper method for it, named path) and Catalyst (with its path_to method).

The slight problem that I see with this method is that it makes code a bit more complicated, and thus a bit less readable. Paths become lists of parameters and no longer look like paths.

I wrote a simple module that tries to address this by allowing you to write paths the traditional way -- as strings, using a directory separator of your choice (/ being the default), while the catfile stuff happens behind the scenes. You can just say:

my $path = path 'dir/subdir/file.txt';

What it does is it splits the path string on each occurrence of the forward slash and feeds the resulting list of path components to File::Spec->catfile, which reassembles them using the appropriate OS-specific directory separator, and constructs the OS-specific path that you want.

The module is up on Github, and should also be available on CPAN shortly.

Re: What if we could drop archives into @INC?

An article written by brian d foy What if we could drop archives into @INC? got me thinking. Indeed, I've been burned myself by PAR, which is a great instrument, but I don't like that it does a huge unzip every time the application made with it starts. And I don't like even more so that some times PAR forgets to clean up these huge perl trees, eating space in my /tmp.

The problem why it is not that easy to override "use" and "require", is that these are semantic constructs, and are using perl's own file open/close operations, which neither are overridable even with *CORE::GLOBAL:: hack.

Nevertheless, after a couple of days learning about implementation of PerlIO layers and hacking them, the following module was born: File::Redirect. It's basically hacks into open() which is used by perl, and then emulates unix mount semantics.

Messaging, interoperability and log aggregation - a new framework

Tomas Doran will give a talk at YAPC::NA 2012 described as:

What's new with Marpa

Here's the Marpa "news" from the past few weeks. (Marpa is a new, powerful and fast parser and parsing algorithm. To learn more, check out its web page .)

Revision to the Theory paper

Most of my effort over the past weeks has gone into a paper on the math behind Marpa. I have just uploaded a revised version. I've fixed several typos, including a few nasty ones, for which I apologize. I've also improved the typography and smoothed out the presentation in many places. The basic structure and results of the paper are unchanged. The paper contains pseudocode, a correctness proof, and proofs of my complexity claims.

Deleting old releases

I plan to remove official releases of the various Marpa distributions (Marpa, Marpa::XS, Marpa::PP) that are more than one or two versions old. My guess is that this will release some disk space, and inconvenience nobody.

Updating the distributions

Redirect: http://perlservices.at

I've created a new blog at http://perlservices.at, a site which I intend to use to pimp offer my services, and will use that blog from now on. The design is not quite there yet. :)

London Perl Mongers Technical Meeting 2012-04-11

London Perl Mongers organises technical meetings every two months. The technical meetings are a chance to find out what has been going on in the Perl community, what techniques people are using and how Perl integrates with other software.

The next technical meeting will be on the 11th April 2012 from 7pm to 9pm (you may arrive earlier, please sign in at the reception). You have to sign up to attend, see below.

This meeting is sponsored by Venda who are inviting the world-renowned Damian Conway to amuse us for one evening and will appropriately be held at the Conway Hall. Many thanks to Anthony Webster, Venda and everyone involved for allowing us to use this wonderful venue.

Venda is a SaaS eCommerce provider with offices in London as well as the US and Asia. The platform is built predominantly in Perl, and powers over 100 sites for clients including Tesco and the BBC.

Damian will be presenting:

Temporally Quaquaversal Virtual Nanomachine Programming In Multiple
Topologically Connected Quantum-Relativistic Parallel Spacetimes... Made
Easy!

Perl NLP: Stemming and Lemmatizing

Tom Christiansen will give a talk at YAPC::NA 2012 described as:

Perl is used in the NLP (natural language community) for a variety of tasks. In biomedical texts, words derived from Latin and Greek pose a big problem for English-language stemmers, because existing standard algorithms like Porter and Snowball fail to produce the base lemmas when faced with irregular plurals. 

This talk reviews the problems with existing tools and presents the new Lingua::EN::Biolemmatizer module, which interfaces with the University of Colorado’s “BioLemmatizer” code to produce much more accurate results than were previously available.

[From the YAPC::NA Blog.]

My English stinks, thank you for patching it!

As a non native English speaker, writing good documentation is a hard task for me and often grammatical and spelling errors slip into my modules pod causing me great embarrassment.

I could use the spell checker more often*, but writing documentation is already a time consuming task, no fun, and well, I am lazy. In any case, that would not solve the grammatical errors.

The thing is that from time to time somebody sends me a patch correcting some of these errors and I want to say publicly how much I appreciate that kind of contribution.

A special mention goes to the Debian QA team, who seems to systematically revise the documentation of everything packed for Debian. That can't be much fun, but they keep doing it.

So, to all of you who have sent me documentation patches over the years, thank you very much, really.

How not to use Moose

Maybe this is legitimate and I just don't know why, but I have seen the following in a couple of projects where I have taken over after the original programmer left:

use Moose;

has [qw/foo bar baz/], is => 'rw';

no Moose;

sub something {}
sub somethingelse {}

App::ArchiveDevelCover 1.000

You can read about my latest module that helps you archive coverage reports generated with Devel::Cover in this post about App::ArchiveDevelCover on my blog. There is even a screen shot!

Conference Hotel SOLD OUT!

Unfortunately, due to the huge number of attendees at YAPC::NA 2012 this year, we’ve sold out the original conference hotel. We still have lots of rooms at the dorms, which you can book for only $42 per night for a single or $63 per night for a double.

However, we know many of you want to stay in a hotel. So we’ve arranged for an additional block of rooms at another hotel. The Hilton DoubleTree is only five blocks away from the conference facilities, and rooms under our group rate are going for $159 per night. Click here to make a reservation. The group code is TPF. If you want one of these rooms, book fast, or you’ll have to either stay in the dorm, or get a hotel that is farther away. Also, this block of rooms dematerializes on May 10th if they are not already sold out by then.

[From the YAPC::NA Blog.]

The new ORLite 2.0 learns some amazing SQLite tricks

ORLite is a light weight SQLite-specific ORM which is particularly handy for working with ad-hoc SQLite database and creating internal database APIs for large applications, most prominently the database API inside of Padre.

Aligning so closely with the features of a single database engine keeps the implementation size down to a minimum, at less than 1000 lines of code, and allows ORLite to do things that would be completely impossible in more general ORMs.

This is particularly true in the upcoming 2.0 release, a preview of which is available now.

http://svn.ali.as/cpan/releases/ORLite-1.90.tar.gz

This new major revision embraces SQLite's slightly unique rowid mechanism, allowing it to accurately distinguish between different copies of identical data.

Lets start with the following database in the file adam.sqlite

Divide and Conquer

At least that's the goal. I've split Catalyst::Model::REST in two, so there's a new Role::REST::Client as well as the original distribution.

Originally I started CMR because I needed to access some REST services from a Catalyst application. There was nothing useful around, so I wrote a simple Catalyst Model and wrapped it up on CPAN.

It's been further developed to when there has been new requirements, and a couple of days ago the nice people on #catalyst suggested to split the functionality into a distribution of its own. The use case being that a role can be applied to an already existing Catalyst Model. Or to any other class that needs to connect to a REST server.

So here it is. Use Role::REST::Client to access REST services from your Moose based Class.
Use Catalyst::Model::REST if you just want to start a new Catalyst Model Class,

How I roll - choosing the epigraph for 5.15.8

Thinking about the epigraph of my Perl release started about 10 days before the release. Certainly, I had been unconsciously mulling back and forth about killer quotes from books or other media for longer than that. About 10 days ago, I made the short list of two books that could give interesting quotes.

One was "Friday" by R.A. Heinlein. I've always liked the book, and it opens with the introduction of the protagonist as she kills a pursuer and stuffs him into a cabinet, reacting only on a hunch. Heinleins way of laconic writing should have made for an interesting quote from that scene.

Hardware Hackathon Talks

The hackathon and hardware hackathon have proven so popular that we’ve already sold out. However, we’ve acquired an additional room that will be available for hacking through-out the entire YAPC::NA 2012 conference. We did this to ensure there’s always a space to spread out and collaborate on projects. 

Some people are planning on giving talks or small demonstrations at the already sold out Hardware Hackathon. For example Robert Blackwell will give a talk called Moving Servo Motors with Perl and Andrew Rodland will give a talk called A Man With Two Watches is Never Sure

The hardware hackathon will be freeform for the most part, but if you would like to give a talk or a demonstration on the official schedule, go ahead and submit it. We’ll get it on the schedule. Also, in the notes indicate which of the 5 days of the hardware hackathon you’d like to give your talk. You’ll likely get a bigger audience if you do it in one of the first two days, however, you’d have to have already purchased your badge for the Hackathon since it’s already sold out. 

YAPC is nothing if not about collaboration and sharing ideas. We want to make sure everybody has that opportunity, so that’s why we’ve extended the Hackathon to be all 5 days. 

[From the YAPC::NA Blog.]

RFC: Single or multiple instances of ORM objects?

In our homegrown ORM we have an in-memory cache, which enables us to ensure that only one instance of any object is live in memory at any one time.

In other words:


    $one = MyObject->get(123);
    $two = MyObject->get(123);

    refaddr($one) == refaddr($two)

I find this setup useful because:

  • if you update one copy of the object, all other copies automatically update
  • get’ing the object again is cheap

When I do a search against the DB, it returns a list of objects, which I can then retrieve (in bulk) from:

Delhi.pm Perl Monger user group: Need suggestions

Hello,
Please visit my blog article at http://pradeeppant.com/2012/02/20/delhi-pm-perl-monger-user-group-need-suggestions/

I am looking for suggestions to revive Delhi.pm. A non-active Perl monger user group in New Delhi, India.

I have already received some valuable suggestions in comments section of my blog.

More ideas are welcome.

Thanks

Using WebKit to generate PDF slides

Today we can find a lot of presentations written in HTML or any other variant (XHTML, HTML5, etc) using JavaScript frameworks such as s5 or deck.js.

These frameworks allow the creator to do advanced presentations with simple HTML. This has a lot of advantages as the user

  • is in full control of the layout
  • can easily embed images, links, code, etc
  • can use a revision control tool

Although one major drawback of such frameworks is sharing the slides. Of course the slides can be put online on any HTTP server and be easily read from a browser, but not everyone has access to a public web server.

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.