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.

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.)

© 2009-2010 Sam Graham, unless otherwise noted. All rights reserved.