Recent Hacktivity Log

This is another "recent hacktivity log" of some of the open source work I've been up to lately.

New Command-Line App: App-Du-Analyze

App-Du-Analyze (with its command-line script of "analyze-du") is now available on CPAN. What it does is allow you to analyse the output of the UNIX "du" command, get results based on a prefix and a depth, and sort them. It is my preference for a disk usage analyser, with the benefit of being able to run several queries on the same data, by keeping the same du.txt file - a feature which I found is often lacking in GUI disk usage analysers.

Here's an example of using it:

$ export ANALYZE_DU_INPUT_FN="$(pwd)/t/data/fc-solve-git-du-output.txt"
$ analyze-du -p "fc-solve" -d 1
16      fc-solve/tests
120     fc-solve/docs
172     fc-solve/scripts
232     fc-solve/arch_doc
276     fc-solve/rejects
392     fc-solve/benchmarks
2920    fc-solve/site
4192    fc-solve/source
44208   fc-solve/presets

You can find a report about using an earlier incarnation of the same program to find the hotspots in a Windows XP disk.

New Versions of Maniac Downloader

I uploaded new versions of Maniac Downloader, which is a CPAN module that implements a download accelerator. What they do is convert the file open to sysopen (per Steven Haryanto's tip (thanks Steven!), and attempt to refresh stale connections after a timeout, which is a problem that bit me several times.

Working on my CPANTS Kwalitee Score

I worked on my CPANTS (= a CPAN Testing Service) Kwalitee score. My CPANTS page currently says I have an Average Kwalitee of 134.88, a CPANTS Game Kwalitee of 99.79 and a Rank of 68 in the league of "5 or more".

I was looking for something to do and decided to revamp my CPAN distributions' Kwalitee as much as I could. This involved quite a lot of actions:

  1. Converting distributions from "Makefile.PL" to "Build.PL" or to Dist-Zilla.

  2. Adding various test scripts for POD coverage, POD validity, CPAN changes validity, and trailing whitespace (the latter are not required by CPANTS but they are something I like to have for good measure).

  3. Resurrecting or tracing the version control history of various modules, either using App-cpangitify, using the old repositories over at, or the even older ones on my Subversion repository on

  4. Adding "use strict;" and "use warnings;".

  5. Having a $VERSION in all the modules (".pm" files).

Anyway, it was a good excuse to do a lot of clean ups, and doing all this work made me appreciate the utility of Dist-Zilla even more, but it kinda sucks that sometimes existing dist.ini checkouts break after an upgrade (like this App-CPAN2pkg pull request indicates).

Anyway, CPANTS still complains about some stuff in my modules, but a lot of them are false positives.

Khronos Group Kickoff Meetup

I went to the kickoff meetup of the Tel Aviv chapter of the Khronos Group. In case you do not know, the Khronos group is an industry consortium for maintaining some standards for hardware-assisted computing like OpenGL and OpenCL (whose specifications are open, but do not always have open source implementations). I got some free food and drinks there, and it was easy to travel to, and I caught a ride back home. The talks - one about OpenVX and the other about OpenCL 2.0 were enjoyable, but I think I would have liked more code and focus on "hands-on" development.

The Khronos Group's local chapters aim to reach out to the community of developers who use their APIs.

Anyway, I met there a few people from some companies like Intel and AMD. I talked with the AMD representative and he was a bit shocked that I was using the open source drivers for Linux on my ATI Mobility HD laptop, saying that the proprietary drivers were more performant and featureful, and that the open source drivers were primarily provided for servers. I remember trying the proprietary drivers, but recall having had some problems with them, and I also hesitate to use proprietary software, especially as kernel drivers.

On my way back, someone gave me a ride, and I talked with him about OpenCL and he gave me some ideas for a possible methods to still accelerate Freecell Solver using it. I'm not sure if they are practical, but they were still good food for thought.

Anyway, I'd like to attend more of their meetups. Update and Revamp

I dedicated some time to go over the contents of the Perl Beginners' Site ( and update it to reflect the new knowledge and best practices. Now the site is in much better shape than it was before. I still want to write an item for it in its news page.


Regarding Makefile.PL vs Build.PL, I have been going the other direction, moving back to Makefile.PL, ever since it's announced[1] that Module::Build is being deprecated. Of course, the Makefile.PL is generated by Dist::Zilla, and I'm converting as I release. There are a bunch of my dists still using Build.PL because I haven't done a new release for them yet.


Leave a comment

About Shlomi Fish

user-pic An Israeli software developer, essayist, and writer, and an enthusiast of open/free software and cultural works. I've been working with Perl since 1996.