Don Hatch's Home Page
Hi, welcome to my minimalist (so far) home page.
NEW (Jun 22 2003):
Manfred The Murderer
I wrote this little song around Christmas 2002.
Background: Manfred is a good friend of mine,
who until recently had a very nice patch of kale in his garden.
And he has bees.
And the other day he chopped down a Christmas tree (or two).
And his daughter Nicola hates fish.
NEW (Jun 19 2003): Here are some research projects I've been working on lately. Both of these were posed as prize problems or bets by Professor John H. Conway of Princeton University.
Here are some pretty pictures of
hyperbolic tesselations.
Java version
(in progress).
Some more java applets, without much explanation...
Some artwork based on fractal zooming:
Here are some little tools I wrote that I find useful
(mostly for programming on Unix):
- vec_h.c
- vec.h generator. Generates an include file
of vector math utility macros for any combination
of C/C++ scalar types and any specified maximum
number of dimensions.
(This was first published in the book Graphics Gems V;
this version has some fixes and additional macros.)
- xrcsdiff/xcvsdiff
- graphical rcsdiff/cvsdiff script written in perl
(requires a graphical diff program such as
Martin Blais's
xxdiff).
- rrr
- "remote remote remote" - automates starting multiple levels
of remote interactive shells requiring passwords
(rlogin, ssh,
telnet, ...),
written in expect/tcl.
This is nice even for running just a single ssh,
since you are promped immediately for the password
in parallel with ssh's startup (which typically takes
several seconds).
For logging in through multiple remote hosts,
it's a real sanity saver.
- file.c
- front-end to the Unix "file" command,
that also shows what's happening with the symlinks.
It's written in C (it really should be perl, but
I didn't know perl well enough when I wrote it).
- solve.pl
- my "learning perl" project, solves
MagicCube4d
(the 4d analogue of Rubik's Cube).
- MagicCubeNdSolve.java
- n-dimensional Rubik's cube solver, written in java.
- javacpp
and
javarenumber
- java preprocessor and class file line number fixer,
written in perl (since java is too damn slow).
(This is a work in progress, with some annoying
limitations--
hopefully I will be able to improve it,
but I'm posting it now anyway since it seems to work
and is a lot better than the alternative
(i.e. nothing, or bare cpp with no line number adjustment
in javac error messages and class file debugging info))
- backtracefilt.C
- program for filtering the output of backtrace()
on Linux, to produce a more readable trace
containing source file names and line numbers.
More geeky stuff:
there are a lot of cases where
I want to calculate something,
but the obvious mathematical formula is not numerically robust,
or it's not obvious how to determine exactly how much precision
to ask for.
For example, the following are tricky...
-
1-cos(x),
cos-1(1-x)
-
ex-1,
ln(1+x)
-
sinh(x), sinh-1(x),
tanh(x), tanh-1(x)
-
sqrt(1+x)-1,
1-sqrt(1-x)
-
(1+x)2-1,
1-(1-x)2
-
sin(x)/x, (1-cos(x))/x
-
angle between unit vectors (don't ever say cos-1(v dot w) ! )
-
slerp (spherical linear interpolation) and qslerp (quaternion interpolation)
-
rotation matrix to euler-angle conversion
-
printing a floating-point number "exactly"
-
drawing arcs of big or infinite circles
All of the above have nice alternative formulations,
most of which took me many years to realize or find.
Here are my
current thoughts
on the best ways to go about them.
Here are some excellent links:
Here's my resume
(a bit out of date at the moment).
I'm currently working at Industrial Light & Magic.