Projects
I've written and released a number of "free software" projects, you can find them listed below.
They're released under a mixture of different free software licences, usually according to the norm for that type of project, for example Perl modules are under the Perl Artistic Licence, whereas Javascript projects are under a Creative Commons "Attribute-Share Alike Licence".
Please examine the individual project pages for specifics.
Also please note that although the projects themselves are freely distributable, the documentation, tutorials and examples on this site are generally not.
Template::Sandbox.pm
Template::Sandbox.pm is a Perl module that lets you process templates in a setting sandboxed from your application.
It's designed to run in a webserver environment, but is entirely application-agnostic. For example, this site is generated by using Template::Sandbox.pm from a command-line script to build static HTML pages.
Template::Benchmark.pm
Template::Benchmark.pm is a Perl module that lets you run a variety of benchmarks across different template engines.
It's designed to let you choose different sets of features, and automatically calculate which template engines support those features.
It uses a plugin framework so that it's easy to make it compatible with additional template systems.
Text::Matrix.pm
Text::Matrix.pm is a specialist table display module for display of matrices of single-character (such as Y/N for yes/no) or short multi-character data against row and column labels that are sufficiently longer that conventional table layouts distort the layout of the data.
The core aim is to base the layout on the tabular data concisely and formated regularly to reflect the terseness of the underlying data, without being forced to compensate for the longer length of the labels for the columns and rows.
Text::Matrix.pm will also optionally split the matrix into several sections based on width of the generated matrix, suitable for display in situations where you don't want external line-wrapping to confuse the layout. (Display on an xterm, cut-n-paste into an email, etc.)
Cache::CacheFactory.pm
Cache::CacheFactory.pm is an attempt to solve the 'subclass hell' of extending Cache::Cache.pm. Rather than create a new subclass for every new combination of features you want, you can write or use policy modules and Cache::CacheFactory.pm assembles a cache to meet your chosen storage, pruning and validity policies.
sgMagnifier.js
sgMagnifier.js is a Javascript library to produce a mouse 'rollover' magnification effect, suitable for use in image gallery navigation.
sgTooltip.js
sgTooltip.js is a Javascript library to produce tooltip hotspots linked to arbitrary numbers of tooltip div elements.
Unlike many Javascript tooltip libraries, this doesn't enforce any requirements in terms of what serves as a hotspot or as a tooltip, there's a many-to-many relationship between hotspots and tooltips, and you need to write no Javascript to use the library.
ajaxTemplate.js
ajaxTemplate.js is a Javascript library to produce a simple rules-driven mini-template processor within your HTML.
The intent is that when writing a page with, for example, a list of entries with an AJAX submit form, you ideally want the design of an entry in the list to be within your server-side template, and not to need constructing programatically in Javascript (let your programmers program and your designers design...)
ajaxTemplate.js lets you embed a 'blank' copy of the entry HTML segment, and do a copy-and-paste with rules-based substitution from within the response handler of your AJAX request, preserving separation of design and functionality, and furthermore keeping the design all in the same place (reusing the same template snippets that produce the populated entries in the list.)
Perl Template Roundup
Perl Template Roundup is a periodic 4-CPU-days run of benchmarks using Template::Benchmark in all manner of permutations and combinations (over 1200 of them) to generate what is hopefully the most exhaustive set of benchmark data for Perl templating systems.
There's pretty charts to make it easier to digest too.
