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.