A couple years ago, I was admiring the engineering and craftsmanship in a set of window blinds. Artistically, I was interested in how the apparance changes dramatically due to lighting and self-shadowing as the sun changes position or the blinds are open to different angles. Engineeringly, I noted how the plate at the bottom was a cam that kept the strings taught at any angle.

So, I had to write a Perl model of the system. That's cool but borderline weird perhaps, but I justify my actions by having finished pictures on walls in gallaries.

use Blinds; my $x= new Blinds (34.75, 58); $x->{angle} = $ARGV[0] || 30; $x->render (\*STDOUT, "MyBlinds");
The Blinds object is constructed with the desired size. The slat width and other parameters defaults. The property sets the angle based on a command-line argument, so this sample animated the blinds in a loop.

You can see a picture and more information at my site. The Blinds uses normal Perl 5 objects in a typical way. In an earlier effort, mentioned on that page, I tried creating a language inside Perl, including a fancy object system that provided error checking on properties which had to be declared.

—John