Projects

Useful Software

Things people might find useful, usually meaning that they work, are documented, and perform a definite task.

Wiχi
A LaTeX based document workbench, operating in a similar way to a wiki but with full bibtex/template/multiformat support. This was (and is being) developed to maintain working documents for my PhD.
NFreq
An ngram generation and comparison tool that runs in linear time, fixed memory and uses Sqlite3 as a storage format. Written in Haskell, it also comes with some handy ngram libraries.
NearNeural
Written during my undergrad, this is a Java neural net library written initially as a didactic exercise --- it supports multithreaded backprop, multple normalising functions and arbitrary net layouts. This was once used to run an OCR tool, and is quite usable for small tasks.
InfoLab21 Beamer Theme
Now you, yes you, can pretend to be affiliated with Lancs.
Maize
A tool for learning agent-based AI (based around a maze solving task.) Written with Carl Ellis for the Lancaster computing society.
SylWord
A Java tool to count syllables in words. Developed for Andrew Wilson for analysis of Welsh.
PHP File Listing
The file listing script used at /misc on this site. Simple, single-file, and has fully graceful client-side preview features.
Responsive Text Generator
This generator reads a tagged CSV listing and produces a HTML file that displays only the most important text at any one time using media CSS rules.

Physical

From time to time I build random stuff. The only notable things are probably:

Solar Death Ray
The wonderful world of Fresnel lenses and sun.
Van Der-Graaf Generator
What every boy spends the summer after GCSEs doing. Generates around 7KV at a guess.
Pressure Cannon
Using this and a camera brother and I were able to get a few high-speed shots using a sound trigger. The link goes to a picasa album with the pics on.
A Lego Turing Machine
A Lego Mindstorms implementation of Turing's famous automaton.

Useless Software

Some of this is interesting, and most of it works, but it might be a bit lazily built or poorly documented. Please let me know if you use any of it or find it useful. Compile/run at your own risk, though feel free to ask how ;-).

JS brainfuck Interpreter
Now you can run brainfuck, slowly, in your browser!
Obfuscated tree of Vowels
A simple program to count vowels in an input string.
brainfuck Compiler
An optimising compiler written in Ruby. Currently only performs basic optimisations, but produces very fast code.
Haskeylogger
Written to learn bitwise IO. Reads a device file and outputs keypresses in realtime, with the usual haskell benefits of having a fixed memory footprint and being about 10 lines of code ;-).
GaTSP
A Genetic-algorithm based travelling salesman problem solver. Includes lots of insane things to seed the solutions based on radial paths and such.
LifeImg
A tool to generate a series of images corresponding to iterations of Conway's Game of Life.
Ruby IRC lib
This is a heavily reflective IRC bot library designed to allow module/state loading and saving, as well as user auth and other basic tasks. Though quite advanced, and used for a few bots in the past, I've not got the knowledge of IRC to improve it further.
Anamnesis & A2
Memory managers developed in C to keep a sub-malloc in limited space. Anamnesis keeps track of many memory links, and A2 manages a contiguous area of memory. One's been used as a memory manager in John Vidler's prototype kernel.
CSV Merge
A slow and memory hogging tool to merge CSV files. Works well enough if you have the RAM to cache one of the files.
Java Quine
The most useful program ever. Outputs its own source.
MandelNet
A network based mandelbrot point sampler in Haskell. Capable of arbitrary precision, at a speed cost.
Mandelbrot.hs
A Haskell and SDL mandelbrot/julia set renderer.
Lancs uni WiFi Auth
A set of bash scripts to automatically log into the Lancaster university wifi system. Could be adapted for others, no doubt.
Colliculus
A realtime video processing/stream processing system designed to construct 3D images and anaglyphs on the fly. This is based on openCV and written in C++. NB: doesn't compile right now, :-(
NearOCR
My undergrad first year project, a Java OCR system based on neural nets and covariance statistics. Works fairly well for clean data, and might be handy as a learning tool.

Shoddy or Pointless Software

Even more stuff! I'm only going to quickly mention these, they are reasonable ideas but not big enough to list properly.

BigramMM
Ruby based word-bigram transition probabilities, used as a POS tagger with some success but not very polished.
Environment2D
A java library acting as a middleman between the normal drawing libraries and AWT. This allows one to render to a theoretical plane then pass a view-window over it, like in conventional graphics work.
Java Manifolds
Non-affine transformations in Java. Very slow, but a decent proof of concept in the "non-euclidean viewport" realm.
Haskell Caeser Cipher
A toy to learn haskell. You might want it to learn from, I guess.
averAge
Spiders a filesystem and calculates rudimentary statistics on the age of files.
The Deletinator
Spiders the web very aggressively/stupidly, sending HTTP DELETE requests to everything --- does anyone still implement this? The answer is basically no.