We've just completed nine solid days of development on Gambit.  Now  
that's a "Codefest" alright!  I thought I would share a little with  
the curious about how I think it went...

Greg Brown flew out to my home in Oklahoma so we could work on  
Gambit.  It was nice to finally meet face-to-face.  We've actually  
programmed together on many projects these last couple of years, but  
this was the first time we didn't do it over the Internet.  We're  
both grateful to the wonderful people at Ruby Central for giving us  
that opportunity.

We've had practice, so we work pretty well together by now.  Greg  
would probably say that I've almost beat all his bad habits out of  
him.  ;)  True or not, I know he's always challenging me and pushing  
me to new limits of what I can build.  I think we both learned a lot  
from working together on this project.

And boy did we work!  We played two games, watched two movies, went  
out shopping once and to eat twice over a ten day stay and the rest  
of the time, we were working on Gambit.  We ate a couple of meals a  
day and I slept, but Greg appears to be one of those rare human  
beings that needs very little sleep and because of that he kept us  
working almost 'round the clock.  We designed, implemented, tested  
and built examples of usage in a continuous cycle.

Here's some fun little statistics for our work:

$ rake test
(in /Users/james/Documents/Ruby/gambit)
ruby -Ilib:test /usr/local/lib/ruby/gems/1.8/gems/rake-0.5.3/lib/rake/ 
rake_test_loader.rb test/ts_all.rb
Loaded suite /usr/local/lib/ruby/gems/1.8/gems/rake-0.5.3/lib/rake/ 
rake_test_loader
Started
.........................................................
Finished in 0.163976 seconds.

57 tests, 715 assertions, 0 failures, 0 errors

$ rake stats
(in /Users/james/Documents/Ruby/gambit)
+----------------------+-------+-------+---------+---------+----- 
+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C |  
LOC/M |
+----------------------+-------+-------+---------+---------+----- 
+-------+
| Gambit               |  2084 |  1703 |      23 |     120 |   5 |     
12 |
|   Functionals        |  1834 |  1513 |      12 |      88 |   7 |     
15 |
|   Units              |  1618 |  1346 |      15 |      64 |   4 |     
19 |
+----------------------+-------+-------+---------+---------+----- 
+-------+
| Total                |  5536 |  4562 |      50 |     272 |   5 |     
14 |
+----------------------+-------+-------+---------+---------+----- 
+-------+
   Code LOC: 1703     Test LOC: 2859     Code to Test Ratio: 1:1.7

(Obviously, I borrowed Rails' statistic generation library there.   
"Functionals" refer to our examples and "Units" to our unit tests.)

Which brings us to what we built.  Some of you have expressed  
interest in Gambit and I'm sure you would like to hear how it came  
out.  The short story is, very good.  We met and even exceeded our  
expectations in many areas.

The longer story:  We've built a very hand model layer for common  
game elements like Boards, Cards, and Dice.  This is probably our  
most polished work and has been a real asset to our internal  
development already.

Our views layer started out pretty basic, and really still is in many  
ways, but we're already using it to great effect.  It has evolved as  
we discovered our needs and will continue to evolve with future  
development.  However, it is already an adequate and effective tool.

Finally, our controller (the Gambit server) is still a little rough  
around the edges.  It's quite functional at this point, if not yet  
elegant.  There's probably still some lingering issues hiding in here  
(we've been steadily uncovering and removing them), but I'm sure all  
you beta testers will find those for us right quick!  :)  We'll clean  
up our mess in here as we continue to refine this aspect of Gambit.

Which brings us to the final question.  When can you get your hands  
on a Gambit release?  Naturally, the brave are welcome to pull down  
our CVS and poke around.  There's really a lot to find in there, but  
no good guided tour at this point.  For those that don't think that  
sounds like fun, our official answer is "sometime this summer."  We  
have a few more minor tweaks to do to the controller, some general  
clean-up, and an example to build.

While it's true that we already have many examples, they were built  
at various stages of Gambit functionality and use a mis-match of its  
features.  We're going to unify that with a complete example that  
will serve as your map to exploring our first release of Gambit.   
That's important because the API is not documented yet and probably  
won't be by the time we release.  That's our number one priority  
feature for the second version, scout's honor.

Well, that's where we, and Gambit, are at this point.  Give us a  
little time to uncross our eyes, pay a little attention to our other  
lives, etc. and then we'll get a release packaged up and out for  
public consumption.

Again, we send our thanks to Ruby Central and all those who have  
shown interest in our project!

James Edward Gray II
Greg Brown