122 class builders for Google code-in

Hi

Here's a list of class builders which I'd like to turn into a task to assess them (I'd mentor it) for Google's code-in. If you have any suggestions (add, delete), please do so in the comments.

Assessment would include features, outstanding bugs, reviews, date of last update, whatever. Perhaps even speed.

Testing is a Feature of Your Service

My job at Bank of America consists largely of data collection and storage. To collect data in Perl, I have to write XS modules to interface with the vendor-supplied native libraries. Because I want to know my code works, my XS modules come with robust test suites, testing that everything works correctly.

Since the XS module was intended to be used by other, larger systems, I decided to help those larger systems test their dependency on my module: I included a Test::MockObject that mocked my module's interface. By using my test module, the tests can try some data and see if their code works.

But the hardest part to test is always the failures. How do they test if the news service goes down in the middle of a data pull? How about if it goes down between data pulls but still inside the same process? How do they test if the user has input an invalid ID for data?

A grammar that exemplifies, describes and parses itself

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

I've written a grammar in Marpa's new BNF interface, to parse Marpa's new BNF interface. In the 70's, when I learned parsing theory, this was a very fashionable thing to do, perhaps because yacc had done it, in Appendix B of the original 1975 paper. By 1979, Hoftstadter's book Godel-Escher-Bach (GEB) was out, and the next year it took the Pulitzer for General Nonfiction. Self-description, recursion, self-reference, self-embedding, you (preferably autologically) name it, these things were all the rage.

YAPC::Europe 2013 in Kiev, week minus 41. Venues

Viacheslav Tykhanovskyi summarises his trip over the venues in Kiev during the last few weeks. He did a huge job and now the huge job for us is to pick up the best venue :-)

Net::Icecast2 is out!

My friend and co-worker Pavel Zhitomirsky, who also organized the last TA.pm meeting, has made his second CPAN contribution: Net::Icecast2.

While trying to work with Icecast, he found that there is no Icecast 2 API on CPAN and decided to write one. As usual, he writes Modern Perl with all the usual bells and whistles: Moo (+ Sub::Quote), MooX::Types::MooseLike, read-only attributes, documentation, Dist::Zilla and so on.

It's on Github to hack on, and I assure you he is very cooperative. Feel free to help out, suggest improvements or offer any criticism.

Auto-detection of clusters in Graphviz *.gv files

Hi

I've released GraphViz2::Marpa::PathUtils V 1.01, which now offers an algorithm that performs auto-detection of clusters in Graphviz *.gv files, via the find_clusters() method.

Download, or read the docs at the usual place:

GraphViz2::Marpa::PathUtils

Peruse the demo.

The most complex input file I tested ran foul of a bug in Graphviz itself, which I've reported. I am using Graphviz V 2.26.3, and the bug has been kindly confirmed by Ryan Schimdt in 2.28.0 and 2.29.20121022.0445 on OS X. So, that image is not yet on the demo page.

Note: An option in the code allows outputting the resultant *.gv file, hence making it available for further processing, and the format of the (optional) output image (svg, png, ...) is also an option (which is passed to 'dot').

Note: Nodes and edges using ports are not yet supported.

Thanx to Ron Newman (on the Graphviz mailing list) for the suggestion to implement this (despite the complexity of the code I had to write :-).

Lastly, the previous algorithm in the module (in V 1.00), accessed via the find_fixed_length_paths() method, finds all paths of a given length starting from a given node. Demo output is included in the above URL.

Strawberry Perl 5.16.2.1 released

Strawberry Perl 5.16.2.1 is available at http://strawberryperl.com
(all editions: MSI, ZIP, PortableZIP for both: 32/64bit MS Windows)

More details in Release Notes:
http://strawberryperl.com/release-notes/5.16.2.1-32bit.html
http://strawberryperl.com/release-notes/5.16.2.1-64bit.html

RFC Module::Build::CleanInstall

Edit: Module::Build::CleanInstall has been released!

Following the recent work (chronicled here) by Yanick Champoux and this StackOverflow question, I got it into my mind to try to write a Module::Build subclass which first removes all the files previously installed by a module before installing the new version. In those posts, this is motivated by File::ShareDir concerns, but this problem is more general than that.

If your new version of a module does not come with some file that a previous version did, installing the new version will not remove that file. Most of the time this is ok, but every now and again you need to know that those files don’t exist. That’s usually when you see warnings in the POD saying, “be sure to remove all previous installations …” or “only install on a fresh copy of Perl”. The author knows that a problem is possible, but the user has to fix it. Sounds bad.

no ident specified when using Log::Dispatchouli (MooseX::Role::Loggable)

Sometimes when working with the lovely MooseX::Role::Loggable you might encounter the following fatal error:

no ident specified when using Log::Dispatchouli at Loggable.pm line 117.

I keep running into this and resolving this each time without remembering what this means, so I keep having to debug it all over again. While I've documented this issue in the new version of MooseX::Role::Loggable, I'd like to explain it here as well.

git related bourne-like shell functions

Wanted to post git related shell functions, so they are now at PerlMonks.

How to put desired data & snaps in word .doc defined format from xls & snaps folder?

I have an xls containing (Sr. Name Address Remarks etc) & a folder containing pictures with the same Name as in xls Name.
Now I want to convert desired data from excel & snaps/images from folder to a Word .doc file which has a format (Sr. Name Address Remarks etc & a portion for placing snaps/images.
Is there any SCRIPT or Software which runs & creates .Doc file.

Tree, Tree::Binary, Tree::DAG_Node, Tree::Persist and Forest

Hi

I wanted to title this post: The Tree::Hugger Chronicles: Tree, etc, but that was too long.

Anyway, I mention Forest only to say I won't mention it further.

I've become co-maint (or accidentally, owner) of various Tree-ish modules, so I thought I mention what's up. Each module is followed by an extract from the CHANGES file.

o Tree: I've just released V 1.03:
- Rename Tree::Binary to Tree::Binary2 so it no longer clashes with the Tree::Binary shipped in the Tree-Binary distro. MetaCPAN was getting confused, and automatically redirected links from this module's Tree:Binary to the other one.

o Tree:Binary: No activity.

CPAN In The Sky With Diamonds

A few weeks ago, I pondered a service for hosting private CPAN repositories in the cloud. The idea was well received, so I pulled together a prototype. The result is here:

http://alpha.stratopan.com

Be aware that this site is not secure nor reliable, but I think it demonstrates the concept pretty well. Most of the links on the landing page go nowhere. Just click the big "Sign Up Now" button and you'll be on your way. If you like what you see, let me know.

Another view of XML schema attributes vs. elements

Another way to look at whether you should add information as an attribute or a child element while designing an XML schema element is whether you are talking about an IS-A or a HAS-A relationship.

Attributes are great for IS-A relationships -- "I am an element with ID='20121101-i1' or "I am an element for the Dublin Core (METS MDTYPE='DC')".

Child elements are great for HAS-A relationships -- "I have several groups of files" or "I have binary and XML data for a file".

Garbage Collection

UntitledGarbage Collection

A Marpa DSL tutorial: Error reporting made easy

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

Using Marpa's facilities for error reporting, a quickly written domain-specific language can, as of its first draft, have error reporting whose helpfulness and precision exceeds that of carefully hand-crafted production compilers. This post will show how, with an example.

Two techniques will be used. First and most basic, Marpa's knowledge of the point at which the parse can no longer proceed is 100% accurate and immediate. This is not the case with yacc-derived parsers, and is not the case with most recursive descent parsers.

Read/Write Web bag o links

* Command Query Responsibility Segregation - http://martinfowler.com/bliki/CQRS.html
* https://metacpan.org/module/Web::Hippie
* https://blogs.perl.org/users/joel_berger/2012/10/a-websocket-mojoliciousdbi-example.html
* http://www.slideshare.net/dkrotkine/dancing-with-websocket
* http://daniel.wertheim.se/2012/05/01/realtime-web-application-using-cqrs-and-websockets/
* http://jfarcand.wordpress.com/2010/10/25/scalling-your-websocketcomet-real-time-application-using-redis-pubsub/
* http://blog.newsblur.com/post/20371256202/building-real-time-feed-updates-for-newsblur
* http://cdent.tiddlyspace.com/TiddlySpaceSockets
* https://github.com/carlhoerberg/knockout-websocket-example
* http://stackoverflow.com/questions/12733985/job-processing-via-web-application-real-time-status-updates-and-backend-messagi
* https://gist.github.com/3764706
* http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook#REALTIME_WEB
* https://hacks.mozilla.org/2011/06/a-wall-powered-by-eventsource-and-server-sent-events/
* http://www.html5rocks.com/en/tutorials/eventsource/basics/

When to create a branch in Git?

Upon reflection:

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 297 commits.

I think maybe I should have created a branch…

Let's Have a Distributed Perl Hackathon

Q. What is a hackathon?

A. In the Perl world, it's a meeting, generally of one day's or a weekend's length, where Perl hackers come together in one physical location (primarily) to work collectively on projects which will improve Perl, CPAN and the Perl ecosystem.

Q. What is a "distributed" hackathon? Is it something like a "distributed" source code control system?

A. In a way. A distributed hackathon, like a distributed source code control system, is designed from the outset to be clonable. In the Perl community, we've had many hackathons over the past eight years, but they generally haven't been planned to be clonable, i.e., easily reproducible in different locations at later points in time. They've been planned as events in one geographic location that when they're over, they're over. They aren't intended to be reproduced elsewhere.

Q. What would it mean for a hackathon to be "clonable"?

Calling David Hand, author of Tree::DAG_Node

Hi

Neither I nor Sean Burke can get a response from David, bit if anyone knows him, please let him know I'd like to take co-maint of Tree::DAG_Node in order to fix bugs.

So, I'll ask the CPAN admins on Friday to do that if I don't hear from him beforehand.

If he doesn't want me to be co-maint, I'll fork the code...

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.