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.
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.
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".
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.
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"?
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...