MetaCPAN API and Android

Sterling Hanenkamp will give a talk at YAPC::NA 2012 described as:

I’ve been building an Android application to access Perl documentation through the MetaCPAN API. This talk will give a brif look at the MetaCPAN API and how it can be used to build a mobile app like this.

[From the YAPC::NA Blog.]

The Case of the Incompatible Safe

When I entered our rooms, I found C. Auguste Dupin lounging in his fauteuil by the window. His eyes were on the paper in his hand, but he seemed to be gazing beyond it in abstracted thought.

"A death?" I asked, smiling, remembering the events of a few days previous.

"Non, mon ami, simply a puzzle, and a rather pretty one. It appears that one M. Tueur, in attempting to improve his Perl, has entrapped himself in a web of conflicting requirements from which he can not extricate himself."

"Better him than me," I observed. "How did this come about?"

"Very simply. He found himself in a position where he had a string containing Data::Dumper output, which he needed to load back into his code. Now, normally this requires a stringy eval, but since he was justly cautious about doing this, he decided to use the Safe module instead."

"A wise precaution," I remarked, trying to hold up my end of the conversation.

"But then he wanted to do coverage testing."

DateTime is annoying

Am I the only one who always uses

my $dt = DateTime->from_epoch(1327673580);

as opposed to the correct

my $dt = DateTime->from_epoch(epoch => 1327673580);

??

Big Number::Phone update soon

There's lots of changes coming soon to Number::Phone - see github for a sneak preview.

They're mostly as a result of me pulling in data from Google's libphonenumber and automatically generating perl classes for all of the countries which I don't already handle. I refer to these as "stub" classes, because while many of them do have a lot of data, some don't, and in any case libphonenumber is missing some features that "full-fat" Number::Phone subclasses support. This isn't a criticism of libphonenumber, it's just a result of the two projects aiming at slightly different targets: libphonenumber is primarily designed for embedding in handsets; Number::Phone was primarily designed for telco billing, routing, and provisioning.

So, the major changes in detail ...

Workshops Over Half Full

Both the Perl Testing Workshop and the Zero to Perl Workshop at YAPC::NA 2012 are over half full. There are less than 10 seats remaining in each workshop; and at the rate they’re filling we expect them to be completely filled by the end of next week, if not sooner. 

If you are planning on attending the workshops, then please sign up sooner rather than later so you don’t miss your chance.

[From the YAPC::NA Blog.]

Dear LazyPerl, looking for a logger

I'm looking for a logger module like Log::Log4Perl but one I can hand a filename to and be done with it. No /etc configuration files or other crap to deal with, and still have debug/warn/etc log levels.

Any ideas? Something like:

use Log::EasyLog;

my $logger = Log::EasyLog->new( file => '/tmp/mylogfile' );

Deprecated not depreciated

I've seen a number of modules marked as depreciated, rather than deprecated.

deprecate: To mark (a component of a software standard) as obsolete to warn against its use in the future so that it may be phased out.
depreciate:
  1. To lessen the price or value of.
  2. To write off an expenditure for (a tangible asset) by prorating over a certain period, usually the estimated useful life of the asset.

I'm guessing that people aren't using their CPAN work to help balance their books...

Definitions from thefreedictionary.com

I love MooseX::Role::Loggable

I love Log::Dispatchouli. I really do. I does a lot of work so you don't have to, and that's usually the type of stuff rjbs does.

After using Log::Dispatchouli for two projects, I decided to refactor it. No point in having code duplicity, right? So I refactored it into a role and called that role MooseX::Role::Loggable. That code is obviously on CPAN and has been for quite a while.

Once you add MooseX::Role::Loggable to your app you can suddenly have logging, the way Log::Dispatchouli does it. How? You suddenly have a debug attribute, for example. You suddenly have a logger_ident and a logger_facility attributes that you can override (though they have default values, one is of your package name automatically). You can now call the log method, and the log_debug method that will log only if the debug flag is on.

It's so simple I've set up all applications at $work to use it.

Why you should use? Well...

  1. Supports logging to file, stdout, stderr
  2. Supports logging to syslog
  3. Supports prefixes (custom, per-method, etc.)
  4. Debug-level logging with baked-in "debug" attribute
  5. Uses Any::Moose, meaning it can work with Moose or Mouse
  6. Built for comfort, strength and flexibility

MooseX::Role::Loggable - try it!

Introduction to the Perl Data Language

David Mertens will give a talk at YAPC::NA 2012 described as:

Perl is awesome as processing text, but did you know that Perl can handle high performance computing, too? With the Perl Data Language, Perl can process large data at C speeds while using idiomatic Perl.

The Perl Data Language describes itself as “giving standard Perl the ability to compactly store and speedily manipulate the large N-dimensional data arrays which are the bread and butter of scientific computing.” What does this mean? In this talk, I will give an introduction to PDL from a Perl programmer’s perspective. I will cover basic PDL operations from creation and access to standard manipulations and will explaing basic plotting. Some of the more advanced topics will include slicing arbitrary chunks of data and, if time allows, writing code that interfaces with PDL’s processing engine.

[From the YAPC::NA Blog.]

united-domains sponsors YAPC::Europe 2012

united-domains AG joins this year's YAPC::EU as a Gold Sponsor. Thank you!

united-domains AG is the specialist for fast and simple registration of domain names with over 270 top-level domains.

logo_united_domains.jpgOur core product is the unique "Domain Portfolio", a web-based software tool for managing domain names. This Domain-Portfolio is used for management and configuration of all domain name of a company or a private person, regardless of which provider the domains has been registered with. The "Domain Portfolio" becomes the personal control center of the client. In our domain portfolio, we manage over 1.5 million domain names of more than 250,000 customers.

Since 2011 united-domains serves clients in the North American market with its own subsidiary located in Boston (USA).

Announcing Text::AsciiTeX

The PDL community has been buzzing with activity as they prepare for the 2.4.10 release.

For those of you who are unaware, PDL is the Perl Data Language, which gives Perl numerical array processing power. Implemented in C these computations are very fast, and with its sublanguage PDL::PP you can easily write your own C implementations of numerical algorithms too.

One of the things coming in this release will be the companion PDL::Book. Its been entirely written by the developers specifically for this release. The source is all in POD of course.

Padre 0.94 has been released... the annoucement is late!

Happy new year, Gong Hei Fat Choi ( seems there's more than one way to type that! ). I only added that in so we can claim we got a new Padre release out just after the new year... not saying which new year though...

It has been a while since Padre, the Perl IDE version 0.92 was released. The last release was november last year!

It became clear that Padre would not be ready for a pre-Christmas release, Adam Kennedy wanted more time to work on the bits of Padre that needed work. Looking at the Changes file, there was plenty.

This release should really be dedicated to Adam, the Changes file is testamony to this.

I asked Adam in IRC what the main items for this release were:

  • Search and Replace is far better than it was before,
  • File type filtering and the MIME sub system has been reworked,
  • The user interface got some polishing,
  • Focus control has been improved,
  • Version control improvements,
  • Preferences dialog improved,
  • and the debugger GUI.

Parking at YAPC::NA

If you plan on driving in to YAPC::NA 2012 each day, or are staying in the dorm rooms and driving to Madison, then you’ll need a place to park. All other lodging besides the dorm rooms has parking available, you simply have to ask for it. 

If you need parking, then you need to fill out this PDF form and submit it back to University Parking no later than May 15th. 

[From the YAPC::NA Blog.]

Padre 0.94 makes big strides in day to day usability

The march towards 1.0 continues for Padre, and the latest release represents a big step towards that goal.

Over the last couple of months there has been a huge focus on the core editor GUI features, and making sure they are all as glitch free as possible and high usable for day to day operation.

This focus on polish is particularly evident for me in the Find and Replace related code, which is smoother and more functional than it has ever been.

I find myself routinely leaving syntax checking and version control markers on now, where before their various glitches would make them too annoying for me to use.

The other exciting improvement for me in this release is that all the parts of Padre needed by the Padre::Plugin::FormBuilder plugin now work properly.

This means that I can finally do a long-awaited "proper" production release of the Form Builder plugin, and finally bring cross platform GUI generation to the masses.

YAPC::Europe 2012 in Frankfurt am Main

Finally we've received the contract signed by both parties. We are really happy to now be able to publicly announce the date and venue of the YAPC::Europe 2012.

The YAPC::Europe 2012 will take place from Monday, the 20th of August to Wednesday, the 22nd of August at the Johann Wolfgang von Goethe Universität, on the Bockenheim Campus in Frankfurt am Main.

We will post further information about the venue soon on this blog.

Stupid Lucene Tricks: Exact Match, Starts With, Ends With

Out of the box, Lucene does not provide exact field matches, like matching "Acer Negundo Ab" and only "Acer Negundo Ab" (not also "Acer Negundo Ab IgG" ). Neither does Lucene provide "Starts With" or "Ends With" functionality. Fortunately, there are workarounds.

The trick is in the indexing. When indexing a field in Lucene, you can enclose a field's value with known delimiters, for example "lucenematch Acer Negundo Ab lucenematch" (where "lucenematch" is the delimiter string). As long as the delimiter appears only as a delimiter, you can safely assume that a search using "lucenematch Acer Negundo Ab lucenematch" on a field will return only documents whose default Lucene field exactly matches "lucenematch Acer Negundo Ab lucenematch" and not those matching "lucenematch Acer Negundo Ab IgG lucenematch".

Intro to Unicode

Nick Patch will be giving a talk at YAPC::NA 2012 described as:

UTF-8 is the most popular character encoding on the web and has been for 5 years.  Modern applications have to be developed with an understanding of Unicode, and this raises a lot of important questions since the good old days of ASCII.  What is a character? … a code point? … a grapheme?  This talk will bring you up to speed on character codes, Unicode, and UTF-8.

[From the YAPC::NA Blog.]

Marpa and OO

Both publicly and privately I hear from folks who tell me that Marpa is an OO superclass waiting to happen. I can see their point. If there ever was a case for code reuse, the Marpa algorithm is one. On the other hand, any non-trivial use of Marpa requires additional semantics, so that the Marpa classes walk, swim and quack very much like abstract type classes.

Furthermore, the additional semantics that Marpa needs comes in pieces -- semantic actions. And even though these pieces often share little code with each other, they interact heavily as part of a specific structure. This means that their semantics are tightly coupled, both to each other and to Marpa. In short, Marpa's semantic actions look a lot like the methods of a subclass.

AnyEvent timers shouldn't use type constraints

While I'm rambling about AnyEvent (which I'll probably do more often), here's a note I'd like to give myself.

I'm using AnyEvent in a big app with objects (objects are, generally, good!) and I have a lazy attribute (lazy attributes are good!) of an AnyEvent timer. This is so the timer doesn't lose scope and will be closed.

At first the constraint was a EV::Timer object. On one machine this failed the type constraint while on another it worked. Some of you already know why. Then I changed it to a generic Object. This failed one as well. Why?

Because AnyEvent is basically like a hub for many event loops (ANY event loop, get it?) and apparently on one machine it used EV (a high-performance kickass event loop written by Marc Lehmann) while on another it hadn't. This meant that one AnyEvent->timer() returned an EV::Timer object while another returned an Array Reference. I removed the type constraint complete. It's now good. :)

sorta Perl 6 grant report

uh yes I have a running grant and want to close it in 2012 even it will take much more effort than just written down in the proposal. I was a bit shy with that to don't get rejected. I don't want to open any new projects til I get this done.

Recently I updated Index A, which is still the most usable part, because its a quick overview of all builtins and operators. There were tons of details I did: setting new links, cleaning up things I didn't understood myself exactly, making better examples, more "see also" for similar commands. There were even some Perl 6 commands new to me, which I added and we are currently approaching the entry number 650. But the most important bit was: I understand the strange socialtext wiki syntax a bit better, so I could insert a lots of anchors inside of lines. So not only similar terms are now interlinked. Even better, many (and soon every) commands can be linked from outside which is good for automatically generated links if you need some quick explanation to a perl 6 term which is linked to an even more detailed explanation and to tables where it is summarized with similar things.

Thats the link-syntax for the builtin "if":

http://www.perlfoundation.org/perl6/index.cgi?perl_6_index_tablet#if

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.