I am a physicist and specialize in geophysical fluid dynamics. Currently I do research at NWRA studying inertial oscillations, internal waves, and eddies.

Some of my research includes topics such as symmetry methods for solving partial differential equations, Rossby waves, quasigeostrophic eddies, shallow-water theory, and inertial oscillations.

Scientific Software

GLNumericalModelingKit – I have nearly completed the first draft of an Objective-C framework designed to enable high performance numerical modeling of differential equations. I am very excited about this project and many more details will soon follow.

Numerical Models – I have written numerous numerical models to simulate various aspects of ocean dynamics, including eddies, surface gravity waves, turbulence, internal waves and many others. Most of these models use GLNumericalModelingKit and are available as open source projects.

Image2Movie – A simple program for Mac OS X that takes a series of still images and converts them into a quicktime movie. This application was originally designed to help make higher quality movies from Matlab, but is clearly useful in other contexts as well.


I also have a small software company, Early Innovations, LLC, that specializes in photo annotation and geotagging software.

GPSPhotoLinker is a free software for geotagging photos that I wrote as a graduate in 2004. This was the first geotagging application for Mac OS X and was launched well before the term geotagging was ever used. It was also, as far as I know, the first ever application to automatically annotate photos by embedding human readable locations, such as city, state and county. This is now known as reverse geocoding.

PhotoLinker is powerful photo annotation and geotagging tool that was launched in 2009. PhotoLinker provides a whole new level of interactive geotagging and carefully follows the metadata standards, something that other far more expensive photo annotation tools fail to do.


I tend to have strong opinions about things and enjoy spirited discussions—so I started this blog to get down some of my ideas. Unfortunately, I’m not a particularly good writer so this makes the posts both sparse and incomplete.