Executable notation with Marpa just as the relational algebra is executable with SQL.
Looks like an algebra of grammars be defined in terms of their parseable sets (Algebra of Sets). Then I *F must parse only integers (intersection).
And then, if a problem domain can be reduced to an algebra of parseable entities, it must be parsed by an algebra of grammars with all benefits of mixing, matching, and reusing grammars at will.
That's all probably looks too trivial or too vague, but it starts making much more sense (to me at least) when doing general practical BNF parsing with Marpa::R2 now that grammars like this see the light of day.
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.
Could your module or project benefit from having someone
fix a specific bug
add a test for a specific feature
improve test coverage by 5%
write a tutorial
create a screencast for beginners
write an example program
create a homepage for the module
?
If so, you could be in luck. These are all potential tasks for students in this year's Google Code-In.
Following on from our success last year, The Perl Foundation is hoping to take part in the Google Code-In again this year. GCI is a programme similar to the Google Summer of Code, but aimed at students between the ages of 13 and 17. Students complete short well defined tasks for open source projects, and the two top students from each organisation will be invited to visit Google's headquarters in Mountain View, California for a five-day trip.
Currently we (renormalist and Caldrin) work on a more out-of-the-box usage based on the raw CPAN modules, to minimize the necessity of /etc/init.d/ struggling and Tapper-Deployment for some simpler use-cases like "ssh" in contrast to the full-blown "machine-setup-from-scratch for virtualization".
I'm proud to echo the announcement that the Booking.com dev blog has just gone live. Quoting the announcement:
Booking.com is an online hotel reservations company founded during the hey-days of the dot com era in the 90s. The product offering was initially limited to just the Dutch market. We grew rapidly to expand our offerings to include 240,000+ accommodations in 171 countries used by millions of unique visitors every month - numbers which continue to grow every single day. With such growth come interesting problems of scalability, design and localisation which we love solving every day.
The blog is kicked off with just a quick, humble article of mine on a debugging module that I published after needing the functionality at work. In a given code location, it allows you to find where in the code base the current set of signal handlers were set up. We plan to publish new content regularly and have a few interesting stories already lined up. So stay tuned!
An in-house Dancer webapp that's running on EC2 needed an ACL (Access Control List): a list of IPs that are allowed to access the application. Here is how we've accomplished it in a few lines.
Welcome to Perl 5 Porters Weekly, a summary of the email traffic of the
perl5-porters email list. I'd hoped to get this published earlier, but
it didn't happen.
In the US, we just switched back to "standard" time on Saturday. Rah, rah
energy savings, but toddlers don't adapt well to legalistic time changes, so
I was up and at 'em at the butt crack of dawn this morning.
Enough complaining, let's get to this week's topics. I hope you wanted a
week full of discussion(?) around subroutine signatures, because that's what
we got.
perl-5.16.2-RC1 is now available
5.12.5 last call for patches
Consider Forbidding Developer Releases in Production Perls
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?
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.
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 :-)
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.
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.
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.
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.
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.
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.
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.
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:
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.