Misc. Projects

Here are a couple of my projects which I have got around to writing up in this CMS. Most of them are quite small. All are distributed under a 3-clause BSD licence, which means you can do whatever you like (even base a commercial product on them) but must give me credit for my work.

All the code is mine, apart from if it's expressly stated otherwise. No warranty or fitness for purpose is implied. The point of publishing the source is so you can check it out yourself. If your computer blows up and you get horribly burnt as a result of running any of these programs, you cannot come and sue me.

I realise that since the site redesign I do not include all the software that was previously here. I've tried to put back the stuff I knew was in use by others, and made a symlink so it'll end here - if there's something you reckon should be here let me know.

Misc. Projects
logic screenshot

Propositional argument verifier

This is a framework for manipulating propositional logic formulae. It can rearrange any given formula into CNF or DNF and may also be used to verify arguments of the form { p1, p2 |- conclusion }

The report details the implementation of a term-rewriting system for boolean algebra using the java programming language. It is capable of parsing propositional logic formula to an abstract syntax tree and performing a number of manipulations on the resulting tree, or generating a truth table for the given formula.

Such manipulations can be performed in an interactive manner, whereby the user is presented a menu listing the applicable rewrites. Alternatively there is support for planner classes which, using a generic interface, work towards some end result - for example converting into conjunctive or disjunctive normal form.

Additionally I propose an algorithm (with implementation) for verification of propositional arguments.

Link to paper: rewriting.pdf

Source code download: logic2.tar.gz

Back to top

scms screenshot

Static CMS

This is a simple static CMS (content management system) written in BASH. It is the program used to create this site.

It supports a blog, project listings and customisable outlinks. My main motivation for writing this was that I needed something more flexible for my university web site, which was previously based on static HTML pages. It was a pain to keep up to date.

It works using a directory-based database. Each project gets a subdirectory containing a number of relevant files. These are then rendered to HTML offline and can be pushed to the server simply using scp.

As there is no server-side database involved, it makes moving between different web hosts easier, and makes sure my testing environment is going to produce the same results as the production one. As an additional consequence, there is no more demand on the server than there would be for any other static site, yet it still allows me to easily add/remove projects and blog posts.

Source code download: cms.tar.gz

User manual: scms.pdf

Back to top

turmites screenshot

Multidimensional Turing Machines

This was my honors project for my degree. It simulates turmites and normal turing machines in arbitrary dimensions.

Turing machines are deterministic finite state machines which have a seemingly infinite amount of storage on a one dimensional tape.

This software simulates them in a three dimensional space (though it is configurable at compile time in the Main class to do more.) There is an OpenGL visualisation for this, which requires the JOGL library to build or run it.

I also provide a web start version, albeit missing a few features. This should automatically download the correct JOGL version for your system.

There appear to be issues with this and certain Intel laptop graphics chips, even though it is sometimes possible to make the jogl demos work on these systems. Just a heads up.

Link to paper: dissertation.pdf

Source code download: turmites.tar.gz

Web Start: turmites.jnlp

Back to top