This page provides a comprehensive overview of the most interesting of my various "side-projects".
Domkol is an application to visualise complex functions in a web browser. It uses Canvas to render the domain colouring of a function, SVG to render graphs (in 3D) of a chosen circular subset of the domain, and JQuery UI to interact with the visualisation. It allows the function itself to be changed interactively, for example to drag the zeroes of a polynomial around the domain.
Style Adjuster is a Chrome extension which enables the "adjustment" of CSS property values. In particular, numerical values such as dimensions and colour components can be adjusted using a slider, so that the user can move the slider left and right while looking at the continuously changing result in the browser. This is more efficient than the typical "try a value, refresh the browser, try another value etc" style of CSS editing.
Dealing with this limitation was sufficiently difficult that I wrote a separate test extension just to figure out how a dialog in a popup window from a Chrome extension can be made to act on the target tab.
Correspondence defines an HTML-based format. Data can be coded in this format manually, but it is somewhat verbose. Correspondence-Markup is a concise markup language I have defined which can be parsed and compiled into the HTML format.
The parser and compiler is written in Ruby, and packaged as a gem. It uses the Treetop parsing library.
Correspondence-Markup is one project where I used test-driven development, i.e. writing tests first, and then writing code to pass the tests. (Tests were written using rspec.)
This project is now somewhat obsolete, as it has been superceded by Correspondence-Bracketup (for which see the project below).
Following from the development of Correspondence-Markup, Bracketup is a generic markup format, or more specifically, a generic framework for defining application-specific markup languages. Bracketup supports the definition of data formats such as that required by Correspondence.
Bracketup makes it easy to write parsers and compilers for application-specific markup languages that one wants to have parsed and compiled inside a web browser. For example, the application-specific code for Correspondence-Bracketup is just 95 lines of CoffeeScript, not counting comments.
There are many quiz formats on the web, but most of them are cluttered with unnecessary UI.
This item is not software (it's a meme ...), but to write it I had to watch the whole CERN Higg's Boson announcement over streaming video, and I had to understand enough about the statistical techniques in the physicists' presentations to come up with the idea.
And people did seem to like it.
(It should be noted that I make no claim to understand anything about Quantum Field Theory other than the fact that it involves some sort of combination of Quantum Mechanics and Special Relativity.)