Posts by Yanick Champoux

MacGyvering a Remote Disk Usage Utility

For each of my machines I have one backup directory per week of the year (01, 02, 03, etc) and — and this is the über-cool part of it — rsync’s ‘–link-dest’ is used to hard-link files that didn’t change since the previous backup run. This means that I can have weekly snapshots of all my machines at the fraction of the space a full backup would take. Very nice. files have a nasty habit to fill up all available disk space. In my case, the 100% mark was hit last week. Obviously, I had to delete stuff. But… which stuff? Here is a way to get a snapshot of the disk usage locally, and in a format that would allow you to navigate and examine it at will.

Guerilla Perl Installations

App::perlbrew is a tool that simplifies down to triviality the process of making local perl installations. With it, any user can, in the span of a few minutes, have a working perl that is totally independant of whatever the system has. This is a win for you — you’re now in control of your perl, and of your destiny — as well as for the sysadmin, who is now free of the prickly choice between system integrity and users’ happiness. The path to self-sufficient brewing is incredibly easy. First, you have to download and install perlbrew

Dist::Zilla, GitHub and me

Dist::Zilla is a little bit of a two-edged blade. Whereas it enormously simplify things for the module author, it can also create quite the speed bump for the casual contributor. In an effort to remove that potential hurdle from my own distributions, I’ve developed a certain pattern that, so far, seems to do the trick. In my dist.ini, I leverage the wonderful Dist::Zilla::Plugin::Git

DBIx::Class::DeploymentHandler is Awesome

DBIx::Class::DeploymentHandler is a fairly young module. It’s a little raw at the edges and a wee bit terse in term of documentation. It’s also a complex thing and, trust me, it’ll takes more than a few minutes of playing with it to get your mind around how it works. But once you begin to understand what it can do, Whoa, that’s one seriously powerful beast, that module is. But don’t take my word for it, let me show you.

Push… a Little More Than I Ever Wanted

Knowing how failible my memory is, I looked for some automated safety net to use with Git. The most obvious would have been to use a push hook, but alas Git has no such thing, and if the latest thread I caught on the topic still hold, one isn’t going to appear anytime soon. Since that venue is (for now) closed, I turned to plan B: crafting a new git command, git-safepush:

Having Fun with Logging and I18N

I must confess, that game I’m leasurely working on is nothing but a big fat excuse to dabble with fun bits of technology that I don’t get to touch with my usual projects. And in that optic, yesterday I fooled around with logging and internationalization stuff…. Yes, I know. I’m using a game as a pretext to work on logging and I18N. I’m ashamed of myself. But aaanyway, let’s see what I got to discover.

My Perl Worklist for 2011

Now that we are entering 2011, I thought I could stop for a few seconds to join the Todo meme and list what I hope be able to work on for the next little while during my spare time. So… Here’s what one could expect from little me in the new year, non-$work-related but still programming-wise:


Pod::Manual was born a little bit more than three years ago, and kind of lingered in alpha-land ever since. But now, I had the opportunity to return to the project and do terrible things to it. The code is even more alpha than it was before, and it’s now in a post-hack shamble, but at least it has been moosified and (or so I hope) pushed in the right direction.


Right now, Galuga has a widget that lists my CPAN distributions. But it’s a boring old static affair that is updated manually. Surely in this age of the Web 2.0, I can do better than that. My first instinct that to go straight for my CPAN author page and extract the information off the HTML

Getting Around Expiration Dates via Reincarnation (and Catalyst)

Web applications typically have a bunch of static files that almost never change. For all but the simplest apps, it’s usually a good idea to let the browser know that it can cache and reuse those files, so that we can all save a little bit of bandwidth and get things moving a wee bit faster. For that, we have the HTTP Expires header. Have a look.