Back to Deal Top Page

## Deal 3.1

### A brief history

D
eal was originally conceived in 1988 for bidding practice. I was a math graduate student just learning bridge and another grad student, Robin Pemantle, suggested a way to practice bidding. His idea was to have the computer deal out twenty or so hands, and then offer each hand up to you, randomly, for bidding. This way, you could bid all four hands in each of twenty deals, and, if you tried hard, you could avoid remembering which hand was which.

I mentioned that idea to my partner at the time, Nathan Glasser, and he wrote a program called bid, which is still available from the bridge archives.

The problem with bid was that it could not be used for practicing specific auctions. John Oswalt solved this in a rather crude fashion. His modification forced you to re-link your application each time you wrote a new query (in C).

After using this modified version for a while, I got frustrated and wrote a very crude interpreter. It was a "stack-based" language so I wouldn't have to write a parser. It was very much like the Unix "dc" calculator, only without all the features. (That's a joke, but I guess you wouldn't get it if you didn't know `dc`.)

I could have used a fully interpreted language, like Perl, but for the types of simulations I was doing, I need very fast execution of the computation routines, and so implementing the core in an interpreted language was going to slow down the program too much.

In about 1992 I first stumble across the Tcl language. Immediately, I saw that I could use it in my dealer. Tcl was an interpreted language which had excellent support for extensibility via fast C routines. It turned out that Nathan's code did not easily fit into my new scheme, so I rewrote the dealer from scratch. I had my first version done quickly, and released the first public version (v0.5 I called it, in retrospect) in 1993. I announced it on rec.games.bridge in this post.

The next version (v1.0) was released about two years later, and basically cleaned up the query interface. In the haze of my memory, I can not recall what features were added, certainly "vectors" and "shape classes."

Version 2.0 uses new optimization methods, some of which were suggested to me by the very same Nathan Glasser. There are some other new features, including shape functions, customizable output formatting, and more built-in formats.

Version 3.0 was the next major release. Major changes were:

- GNU GPL license - making it free for all use
- Much faster execution using Tcl 8.x features.
- Addition of 'holding functions' - like 'vectors' but more suitable for complex evaluations like "losers" and "CCCC."
- "Smart stacking" for finding rare hands.

Deal got mentioned in the New York Times bridge column.

Version 3.1 was release in 2008, with Bo Haglund's double dummy solver built in, so you can call a 'deal::tricks' function to get double dummy data.

Starting with release 3.1.6, the source code is hosted at Google Code.

While Deal is a labor of love for me, it makes it easier to love the project if I get feedback which shows people are using Deal. Even if you tried Deal and did not like it, please let me know.

| Thomas Andrews (deal@thomasoandrews.com) Copyright 1996-2010. Deal is covered by the GNU General Public License. Plane Dealing graphic above created using POV-Ray.