Clementson's Blog

Bits and pieces (mostly Lisp-related) that I collect from the ether.

February 2006
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28
Jan  Mar

Concurrent/Parallel Programming - The Next Generation - Part 3

Sunday, February 12, 2006

Last month, I posted about "Message-passing Concurrency" (e.g. - Erlang-style concurrency). In that post, I mentioned a number of different Lisp projects that are attempting to implement this style of light-weight concurrency. Something that I didn't mention in that post is that I've been following the weblogs of Chris Double and Joel Reymont with great interest. Both have been doing things with Erlang and Lisp and it is always interesting to read their posts as they usually provide some great insights (Luke Gorrie is another Erlang/Lisp coder and I would love to read some of his thoughts, but I think he's pretty busy these days with a new Swedish startup and his blog hasn't been updated for a while).

Just recently, Joel Reymont indicated that he is going to implement a stock-trading system called Uptick using a combination of Allegro CL and AllegroCache (see here for a summary/movie of my lispvan presentation on AllegroCache). His announcement (emphasis is mine):

"The goal of this project is to develop a highly scalable and fault-tolerant network application using stock Allegro Common Lisp and AllegroCache.

I will implement an architecture closely matching my existing Erlang-based poker software to be able to compare apples to apples. The multi-server configuration will be suitable for at least 10k players and will be built around AllegroCache. I will reuse the Lisp poker engine that I wrote last year.

I hope to establish a template for developing highly scalable network software in Allegro Common Lisp and identify the rough spots, to be polished later.

You can get the software from the darcs repo at http://wagerlabs.com/cl-openpoker.

I’m using Marco Baringer’s Arnesi libraries and continuations and there’s currently an issue that’s preventing OpenPoker from building fully. I’ll be looking into it next week."
He decided to use CL after spending a lot of time developing concurrent applications with both Erlang and Haskell. He outlines some of the reasons for coming back to Lisp in his "Lisp is Joy" post. I'll be interested in following his progress (especially how he provides for Erlang-style concurrency, something he has indicated that he plans to do).

Update-2006-02-12: Joel Reymont sent me the following comments via email (reprinted here with permission):
"Reading your latest blog post one could think that Uptick is related to the poker server but it's not. It will be a Mac OSX/Cocoa visual trading app and the Lisp backend will be doing similarity search in time series.

I have a whole pipeline of Lisp projects in front of me and ahead of Uptick. I need to finish a project where I'm using Bayesian networks to detect fraud in poker, then cl-openpoker, a translator from a trading language into C#. Also, I need to do the Objective-C bridge, without it there's no Cocoa. Once I'm done with all that I can proceed to Uptick :-).

The poker server in Lisp is jointly copyrighted with Franz. The idea is to identify holes in and general trouble spots one would encounter trying to implement highly-concurrent network apps in Lisp. The follow-up project, I suppose, would be to show how these holes can be filled with Erlisp or something similar and as yet unimplemented.

I have a soft spot for Lisp, I always had. Erlang is great but just not as elegant. Haskell is very hard and eats memory like there's no tomorrow. I suppose Lisp is the golden middle for me and I'm sticking with it."

emacs Copyright © 2006 by Bill Clementson