Rich Dougherty's home page

I'm a programmer based in New Zealand.

Projects

Below are some of the projects that I have worked on. I sometimes discuss these projects on my blog.

Scala OTP

This project aims to port the useful bits of Erlang's OTP library into Scala. Scala is a modern object-functional language that runs on the Java VM. It emulates Erlang's concurrency primitives through its actor library.

I am working on providing an asynchronous IO framework that integrates with actors. So far this has involved:

  • writing an immutable binary data structure (based on Ropes),
  • writing a framework for programming with asynchronous computations, and
  • using both of these to wrap Java's nio library.

Apache MINA

MINA provides an event-driven networking framework on top of Java's nio library. I wrote a simple Scala wrapper that translated MINA events into messages sent to actors. This library is not maintained. I am currently focusing on the IO part of Scala OTP.

I have also written a new buffer implementation which may be used in a future version of MINA.

Llack

This is my exploration of using a concatenative language as an IR for a JIT. It is very much a "work in progress". The IR is designed to be easy to translate into LLVM and to be able to participate in modern JIT optimisations.

As part of this work I've prototyped a type inference system in Scala which includes support for Cat-style static typing of stacks and words. It is based on Oleg's non-standard Hindley-Milner algorithm. I'm not sure how well this will work with the IR, but it was a lot of fun to write!