Serious Stuff
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.
A pure-python graphics library designed for fast plotting, video display, and basic data analysis.
It has since grown to encompass a bit more..
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.
A python / numpy library for storing multi-dimensional data sets along with meta information such as axis values, column labels, units, etc.
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).
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.
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.
Toys
Downloads your FB friend list and displays as a web of interconnections. Clusters friends into their 'natural' groupings.
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.
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.
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.
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)
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.
You can see some examples at my photo page or Jeff's photo page.
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.
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.
The program uses the Open Dynamics Engine to simulate collisions and friction in a 3D environment.
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.
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.
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.