I woke up today to a message from a physics PhD student in the US asking about my old Lisp Go AI bot code (from the Mindstab Go AI competition of 2008) and if I was ever planning on releasing it or if he could get a look at it since Go and programming were two of his hobbies.
“fink”, as my Go AI bot was called, was my frist real Lisp project, and in hindsight probably not that good, but I learned a lot from it and it was fun, which is all that really matters. Possibly it’s most notable feature now is that it’s a Lisp program that speaks GTP and may provide a base for someone to write a better bot with. So if someone else can learn something from it or use it, that would be pretty cool. So here it is
There’s some notes about it in it’s README. I don’t recall if I documented it much but hopefully it can be made sense of :)
Well the Mindstab Go AI competition is really starting to heat up. You can watch the battles unfold over on the match page.
So far the only entered contenders are myself with “fink” and Rob with “RGB”. He took an early lead for a while and was working towards beating our house bot, “Amigo” (found on the net, an old Go bot from the early 90s, was originally an Amiga gobot that was someone’s PhD dissertation. It isn’t super good, but it is fast), and making progress on that. I finally got some free time and have been working a ton in the last week and on friday got my bot up to a point where it could beat his, and thus took the lead. Now with some actual competition the two of use are both hacking away at a good pace and he’s retaken the lead for now but neither of use can quite best Amigo yet.
I’m also pretty happy with myself as my entry is coded entirely in Lisp, and this is my first actual Lisp project. So things are sailing smoothly enough, and I’m also learning tons about Lisp. Also, I’m crediting the high level power of Lisp with letting me do more interesting things easily, which I’m going to attribute to the fact that my bot runs at usually 1/3 to 1/2 the time Rob’s does, even when beating it, and his is written in C. So when it comes to thinking about optimizing, it seems algorithms are a lot more important than the speed of the language implementing it, and a language that lets you more easily use more complex algorithms is possibly better. We’ll see though once everything is all said and done .
We’re hoping a few of the other people who have expressed interest will soon get enough code together to join the competition, and we’re always looking for more interested people. The more the merrier!
Ok, so I know we announced it at around Christmas, but *now* the Mindstab AI Go Competition is starting to get under way. Both Rob and I now have entries that can compete, though mine is mostly just an over engineered random bot, until I get even more framework in place.
Still, everything has really started happening this week as now that school is over, I’ve had some time to devote to this, so my bot finally got off the ground. And then we got together to day and hacked on the server some more cleaning it up, and making an 0.2 release of out Go client/server software.
Finally, and most fun, we whipped together a Matchs page where you can see all the results of games so far. See, real proof that things are happening!
So with this out of the way I can really start to focus on the bot. To that end I’ve defiantly come up against some quicks in Lisp and SBCL. But then today we were also working in C, Python and PHP and we certainly came up against some quirks in the first two (oddly PHP really does manage to get out of your way and let you do your thing). Still, I think I have things mostly worked out and I can focus on the bot. Which is fun because I’m finding for the most part I’m really enjoying coding in Lisp and Slime+Emacs is pretty rocking. As for the bot, I’m excited. I’ve got some fun plans for it and I haven’t done nearly enough fun coding since school’s been on.
So this has been in the works for a bit, and now that I have the basic server software up and running I can let the cat out of the bag! We (some friends and I) are having ourselves an AI competition writing Go bots (Go the ancient Japanese board game). All the details of the competition are on the wiki at ai.mindstab.net and the client (and server) software can be gotten from ai.mindstab.net/wiki/index.php/Goserver.
Anyone who is interested is more than welcome to join our merry little band of novice AI hackers. Just sign up on the wiki and make your presence known.
As for writing the Goserver software, that was an interesting little adventure. We built it around GnuGo’s twogtp.py initially. This was my first time really working in Python, and I’ve got to say it was a pleasure. The language does a really credible job of getting out of your way and just letting you do stuff. There are a few odd little things about the language but once you get up to speed coding in it they hardly seem a problem. I still think I like Ruby overall for elegance, but until Ruby 2.0 lands with it’s proper VM, execution speed isn’t even comparable. Not that for this server that was an issue, more that we had a bunch of already written python code in gtptwo.py, which is is why Python was chosen. Still defiantly pleased, it’s a fine language. So yeah, fun times.
As for a little more history for the 0 people who are interested, we’re using GTP (Go Text Protocol) for the communication between engines and server. It’s a protocol penned by the folks at GNU for GNU Go but being adopted else where. So there’s plenty of software that can speak GTP as a client and several engine vs engine pieces of code using GTP out on the web GPLed for public use. However, running an actually Go server means you need to facilitate lots and lots of matches and also keep track of scores. Code for all that for the different internet Go servers is all closed source, which is why we had to write our own before we could start the competition. That done, we’re all ready to Go!