Virtual Spring Cleaning (part 11 of XX) - in which I determine the type of yak wool I need

In what is a somewhat mild case of yak-shaving, I need a portable way of identifying file types in several situations. For example, when indexing files for Dancer::SearchApp or when handling user uploads, I want to somewhat reliably identify various files. I want to determine their type without trusting what the user tells me they are, and I also want to send the appropriate Content-Type header when serving files again.

Virtual Spring Cleaning (part 10 of X) wherein I tackle finances

One of my tasks when I'm not working or writing Perl code is to keep the finances of the Frankfurt Perlmongers e.V. club in order. Part of this is doing the taxes but a more important part is to pay the incoming invoices in time and to keep all the receipts for this in order. As we do most transfers electronically, it was a long-term goal for me to provide the board with an automated monthly account statement.

Virtual Spring Cleaning (part 9 of X) wherein I retrieve content

Much of what I do involves retrieving stuff over the HTTP family of protocols. My go-to solutions are either the APIs of LWP::UserAgent/WWW::Mechanize or the API of AnyEvent::HTTP, depending on whether I want some kind of concurrency or not. Since I found Future as a somewhat nicer way of structuring callback hell a bit differently, I've looked around for a nice implementation of a HTTP client that works with various backends and maybe even without a backend.

Interlude 2, in which I write more about the release pipeline

The author tests in my module publication pipeline are only one part of the task. The other tasks are actually running the checks, making sure that my public Github repositories are updated with each release and actually pushing the distribution file out onto CPAN. Of course, I have these steps automated.

Virtual Spring Cleaning (part 8 of X) wherein I release leftovers

I have already mentioned it, but I didn't release Template::Provider::ArchiveTar right when I released Archive::Merged even though the two modules are really intended to work in tandem.