I work on programming tools that make it easier to construct
high-performance parallel and distributed programs. I am interested in high-level models of
computation and their ability to enable performance portability
— for example, across todays parallel
platforms and tomorrow's radical new parallel architectures.
In the past, I have targeted sensor networks as an emerging parallel/distributed platform
(Regiment & WaveScope).
If you are interested in any ongoing projects
mentioned on this page, or
the list of potential projects here, or other
related topics, look at my calendar and email me
to set up a meeting.
Also, taking a course with me or looking at some of the
materials linked from this site are good ways to get a sense for what I work on.
These are links to ongoing research and software projects:
Many of these are simple utilities that I've written for my own convenience.
If you know of common unix commands that accomplish the same behavior let me know -- I missed them!
Simple utility to compare file contents, treating files as unorded collections of N-tuples of words.
Source here (haskell), also binaries
for Mac and
for 64 bit Linux.
- ds: A somewhat more precise and portable replacement for the
unix du utility. It lists the exact number of bytes in files, disregarding symlinks and
directories---anything that might differ between platforms. You can probably accomplish this
with ls and a little summing. I use this utility almost every day for quickly confirming
that I have successfully unisoned directories
across different operating systems.
OCaml sources here), also binaries
for Mac and
for Linux (32 bit). The source package also includes a
similar mods utility for summarizing the modtimes in directories.
Cluster unrooted Newick tree files by tree topology.
Hackage Links: Here's a complete list of links to the packages I've released, contributed to substantially, or maintain