Programming Projects
I keep some of the more interesting programs I've worked on here. Please note that most of this stuff was written for Linux, although some of it can run under windows / OSX as well. Click on the program title to download the source code. All of the code here is offered license free except where otherwise indicated.

Serious Stuff

ACQ4 Neurophysiology Acquisition and Analysis System (2009, python)
A complete system for data acquisition, management, and analysis designed for whole-cell electrophysiology, photostimulation, and imaging. Supports Multiclamp/AxoPatch/AxoProbe amplifiers, NI DAQ boards, and Photometrics cameras. Written in Python using numpy/scipy and PyQt to be cross-platform and highly modular.
pyqtgraph (2008, python)
A pure-python graphics library designed for fast plotting, video display, and basic data analysis. It has since grown to encompass a bit more..
Special Relativity Simulator (2013, python)
PyKate (2013, python)
PyKate screenshot
A clean-looking source code editor based on the Kate editor from KDE. Includes most of Kate's features--syntax hilighting, configurable shortcuts, indentation management, KIO file access (sftp!), etc., but without all the GUI to get in your way. Borrows the very nice overview scroll bar from Sublime. The download is just a single python script; you will need python-KDE bindings to run it.
MetaArray (2008, python)
A python / numpy library for storing multi-dimensional data sets along with meta information such as axis values, column labels, units, etc.
kuEye (2005, C++/linux)
kuEye screenshot
This is a video analysis tool in progress for the uEye line of cameras. It is based in concept on kScion, but the code originally came from the open source demo software included with the camera. Features include line, average, and surface plots at any angle, exponential averaging and background subtraction, and eventually auto-scale calculation and auto surface matching (allowing you to splice together several plots from different aperture settings).
VRManager (2005, C++/linux)
VRManager screenshot
This is a library I wrote for the Thunder Graphics Lab at the Colorado School of Mines to make immersive VR programming simpler. It basically assumes the task of generating a projection matrix given a viewport and a tracked user. Click above for more information. The image is of an immersive model of ancient tombs in Falerii, Italy.
kScion (2004, C++/linux)
kScion screenshot
Realtime video analysis application I wrote to support some framegrabbers in the Physics department at CSM. Includes exponential averaging and background subtraction filters, generates intensity plots, and has a wicked-cool little function that automatically determines the scale of the plots. Fun little project.


3D Sound Generator; HRTF Tester (2010, python/linux)
Plays sound in 3D using free head-related transfer function libraries (Supports MIT Kemar and CIPIC data sets).

FBizer - FaceBook friend network visualization and clustering (2010, python)
Downloads your FB friend list and displays as a web of interconnections. Clusters friends into their 'natural' groupings.
Wii Organ (2009)
Generate midi signals using the IR camera on the wiimote. Allows you to play music just by positioning infrared light sources (IR LEDs, incandescent bulbs, candles, ...) in front of the wiimote. Requires python-cwiid and pyportmidi.
audiomon (2006, C++/linux)
This is a very simple audio monitoring application. It records a noise profile from the microphone and then watches for changes and records them. Basically this lets you set up your computer recording off of the microphone for long periods of time with all the uninteresting (quiet) bits removed. I wrote this program so that I could prove to Rose that she talks in her sleep :)
  • Keeps a 1-second buffer so that you actually get a short lead in before the recorded sound starts.
  • Uses FFT to analyze bands independently, making it extremely sensitive to quiet sounds even with high background noise.
  • Records a new FLAC (free lossless audio codec) file every time it hears something interesting
  • Removes (attempts to, at least) the known background noise level in the recorded files, making very quiet noises easier to hear.
glScope (2005, C++/linux)
glScope screenshot
This is an audio oscilloscope program I wrote to be used in a physics lab at CSM. It uses OpenGL, GLUT, and ALSA, and runs quite quickly on my old machine. The UI is sort of an experiment in more fluid, intuitive interfaces, and therefore is a departure from the traditional fixed-grid-knobs-and-switches interface on most real oscilloscopes. Overall, a pleasure to play with.
Quadnut (2004, C++)
Quadnut screenshot
An SDL/OpenGL game based on Quadnet by Brainchild. I wrote this mostly to get a feel for SDL programming in anticipation of our upcoming production, The Greatest Game Ever.
Image gallery generator (2004, perl)
Photo gallery site screenshot
An ongoing dead perl/XML project with Jeff Cleary to create a flexible-but-friendly web gallery for our digital photo albums. Not-yet-available for download due to the not-yet-distributable state of the code.

You can see some examples at my photo page or Jeff's photo page.
Fractal generator (2004)
3D fractal generator screenshot
3D base-motif fractal generator, uber-pretty like. I wrote this for my graphics class with the idea that it should be extremely easy to generate any shape of fractal in realtime. I seem to have an obsession with addictive eye-candy.

Reflection-mapper (2004)
3D reflection mapping screenshot
Yet another project for my graphics class. This one is an experimental reflection mapper demo that took entirely too long to write, considering how uninteresting the final product is. The projection matrices used to render the reflections are only approximately correct.
Neural Robot (2004)
3D neural network robot screenshot
I wrote this little beastie for my AI class. It is a little car controlled by a neural network that tries to program itself by random permutation and reinforcement to navigate around obstacles to get across the playing field. It works about 20% of the time, and the rest of the time it goes batty an bangs its head against the walls.
The program uses the Open Dynamics Engine to simulate collisions and friction in a 3D environment.
Sierpinski generator (2004)
3D Sierpinski fractal generator screenshot
A 3D Sierpinski-like fractal generator with various tetrahedra and polygon primitives. I wrote this piece of eye candy for my graphics class.
OGLRoids (2002)
3D multibody gravity simulation screenshot - spiral galaxy formation
This little simulation began as a 3D version of the classic Asteroids, but I got sidetracked and it turned into a multi-body gravitational simulation. It has a curious bug in the collision detection algorithm which causes the angular momentum to increase artificially over time, causing the mass to flatten and spread out in pretty spiral galaxy-like shapes.
Sproing (2002)
3D springs and masses simulation screenshot - elastic fabric
A multi-body masses and springs simulator inspired by my newly discovered OpenGL programming abilities. I wanted to make something interesting and fun to watch.
4D Viewer (2000)
4D viewer screenshot - hypercube wireframe
Displays and rotates 4 dimensional wireframes. I wrote this long ago in VB to help me get a better intuitive grasp of higher-dimensional geometry. It's actually rather addictive to play with if you have access to some red-blue 3D glasses, and can get over its Microsoft handicap. I have some vague plans to recreate it for Linux with OpenGL.