Welcome to my Swarthmore page.
My research interests are mostly in programming languages, software engineering and embedded systems.
One of my current projects is about better ways to write responsive interactive software. You can find that over at the Charcoal site.
I have done some work on automatic performance tuning of software and intend to return to that topic when the time and collaborators are right. A dump of the code that I wrote most during graduate school can be found at GitHub.
The current state of tools/frameworks/languages for parallel programming is pretty sorry, especially from the perspective of regular Jane and Joe programmers who want to get a little parallel speed boost, but aren't that invested in it. My hunch is that the libraries that support a task queue or fork/join style are on the right track (TPL, PPL, TBB, Cilk, Fork/Join, GCD). However, I think the workers should really be processes (isolated memory by default), rather than threads (shared memory by default). If this idea sounds fun, drop me a line, I'm looking for a collaborator.
I'm excited about the emergence of cheap, small, low-power, general purpose computing platforms like the RaspberryPi and Arduino. Again, the angle that most interests me is the regular Jane and Joe programmers of the world who aren't going to pick up a soldering iron or learn about statecharts or realtime scheduling algorithms in a million years, but can get into the embedded computing game now. What tools, languages and methods will help these developers strike a workable balance between reliability, productivity and performance?
Previously I worked at GrammaTech where I primarily worked on advanced static analyses for detecting concurrency bugs. Most of this work is proprietary, and therefore is unpublished.
In graduate school I was a member of the Mosaic group at The University of Washington. I designed and implemented a C-level programming language for parallel coprocessor architectures like FPGAs and GPUs. I also worked with a substantial number of undergraduate students on CPU-intensive demonstration applications, drawn from a variety of scientific and media processing domains.
Way back in the day I participated in the PipeRench project.
Other... in progress ...