Gambit Codefest Postmortem

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. :wink: 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! :slight_smile: 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

I'll probably start putting together some news and information on
http://smtose.org regarding Gambit and potentially throwing a few
tarballs up there whenever I think we've done something cool. I'll
probably also package examples and games and experiments and make them
available there as well.

Then again, i've probably had about 15 hours of sleep in 9 days, so
I'll probably sleep a week straight and let my brain unmelt before I do
anything at all.

I want to say thanks to James for holding me up this week, and to Ruby
Central for the opportunity.

I hope you like what we made, and we'll get it out to you just as soon
as we can.