You should know that I'm probably going to bore you with Morabaraba-related blog entries for a little while, but the process will culminate in a really decent free Morabaraba engine. Today I have finished the new move generator. Although it's only had som limited ad-hoc testing, it understands all three phases of the game, and it fully-understands captures (including not shooting cows in mills). It also (here's where I get a bit smug) is pumping out a little over 10 million positions per second on my laptop (with CPU throttled as I'm on batteries). That's fast; roughly 6x the speed of AHEM v1. What is more, the way the new move generator works, making and unmaking moves is almost free, which will increase the speed advantage even more. Also, looking for interesting patterns in the eval is much easier with bitboards, so that will give another noticeable speed boost. I should also mention that I've been testing with GCC 3.4.4 on Cygwin with NO OPTIMISATION FLAGS whatsoever; I also plan to use a range of compilers and settings to find the ultimate optimisation; I have a feeling that this will scream on a 64 bit processor compiled by the Intel compiler with the EM64T optimisations. All told, I plan to be looking at something like 10x-20x as many nodes as AHEM v1 in the same period of time, in spite of having a smarter eval. That's got to be worth a ply or two in any position.
As some of you may now, I've had an interest in computer Morabaraba for a few years now. I've often claimed that AHEM (Adam's Happy Electronic Morabaraba) is the "world's strongest Morabaraba engine", because to all intents and purposes, it was the world's only Morabaraba engine.
Well, all that is about to change. Over the last little while, I've been trading emails with Jurie Oberholzer, an honours student at the University of Witwatersrand. As part of Jurie's research project, he is focussing on creating a strong evaluation function for Morabaraba - and therefore a stronger player. Jurie is working in Java, and is getting close to finalising his project (about a month left, I think). His questions and ideas lead me to suggest that Jurie is about to open up a can of whoop-ass all over AHEM. Those of you who know me will realise I have a competitive streak about a mile broad, and this is being prodded in the worst possible way.
I'm working on a Sharepoint project which has some interesting points:Â
- We're constrained to use Visual Studio .NET 2003 by the client (so none of your Team System stuff)
- We have 3 developers, on three sites, plus a client developer on a fourth and fifth site
Â It's a biggish project, and the thought of trying to run Visual SourceSafe under these circumstances frightened me. I've seen that thing "working" over a VPN, and it ain't pretty.Â What to do?
Well, if you subscribe to Eric Raymond's taxonomy, we're a "cathedral" sort of company. Microsoft gold partner, well-defined methodology, coding standards and all that. But clearly the working environment smacks somewhat of the "bazaar" (please: no jokes about it being "bizarre" - they are far too close to the bone), and I figured at the outset that it was time to take a serious look at incorporating at least some "bazaar" techniques into our "cathedral" framework. Open-source projects successfully manage hundreds of developers, on hundreds of sites: how do they do it? By subversion (well, perhaps also by CVS and others, but this article is about subversion). I don't mean that they sneakily and deviously implement their software, I mean that they use subversion as a source code/version control system.
As I mentioned previously, I've started working on FICSiface, a toolkit for hooking things (humans, computers etc) up to the Free Internet Chess Server. Well, it's coming along nicely, although hasn't actually got to the point of playing games yet. Here's a sneak preview of what I've done so far:
- FICSiface, a class that will connect to FICS and facilitate traffic two ways (FICSiface fires events for happenings such as receiving shouts, tells, challenges, moves etc; this should make it a doddle to write new interfaces in C#.
- Testbed, a simple sort of test harness for FICSiface, which is a full-featured FICS client (in the same way that Telnet is a full-featured FICS client ;-) ).
- SkottelServer, a Windows service that logs into FICS and does stuff.
This weekend I started working on FICSiface, a sort of toolkit to getting software hooked up to the Free Internet Chess Server (FICS). My initial plan was to have a class that could connect to FICS, send data, and raise events when FICS sends data to it. This came together quite quickly (remind me to talk about asynchronous IO soon), and of course I got carried away. I decided it would be nice to use it to hook up Blikskottel , my chess engine, which would run as a Windows service. All of this glue stuff is being written in C#, because one day it would be nice to run it on Mono. Then I got carried away some more. While I was testing on FICS (my computer account, Skottel, having been reactivated by an extremely helpful and industrious FICS admin - thanks!), Blik (another computer, Rookie by Marcel Kervinck) came on and made some random joke. So I thought, in light of the fact that Blikskottel is now based in Scotland, it would be cool if Skottel could make self-deprecating jokes about Scotsmen from time to time. In order not to be boring, it would need a biggish database of jokes - and Google came through handsomely.
The last few days have seen some exciting weather at North Ballaird (chez Oellermann, to the uninitiated). Although it's usually fairly breezy around these parts, of late we have been lashed with gale-force winds: sometimes driving rain at relativistic velocities, sometimes producing such optical clarity that we seem able to pick stars like pebbles from a burn, turning them over to grok with their glinting, before tossing them idly aside (this last affects the local cattle profoundly; apparently they are unused to the attendant gravitational and thermal effects).
I seem to digress. The point is, it's been windy: we are lashed by a cat'o'nine'tails braided from the edges of Hurricanes Gordon and the other one (that'd be a cat'o'nine'tails which had already used up seven of its tails; perhaps due to the aforementioned gravitational side-effects there are some quantum distortions; if you like, a Schroedinger's cat'o'nine'tails, which is contemporaneously in a state of having just the two tails). For we uninitiated, this has been a deliciously disturbing experience; the brain knows that those stone walls have been there for hundreds of years, but the gut is sure that they shouldn't be oscillating at that precise frequency.Â
The world needs one more blog. There are almost enough blogs out there, but after careful reflection (and years of resistance!) I have concluded that there is probably room for one more, as long as it's mine. I wrote a few paragraphs trying to introduce myself, before concluding that I don't fit well into a paragraph (comments advocating fad diets unwelcome). Moreover, you're probably more interested in the things I'll write, rather than who I am, unless you already know who I am, in which case you probably won't learn anything from a paragraph introducing me. So, instead, let me tell you some of the things you might find in this blog: