Back online, postponed the restructure of the database.

The hard drive wasn’t big enough, I had to stop the restructuring of the database. The MySql process make a temporary copy of the table, but there wasn’t enough space left to complete it. So I will buy a new hard drive soon.

During this time, I had manually ‘block’ two positions, for those positions the moves hadn’t be generated. Once I’ll get to new hard drive, and modify the database, I’ll unblock those positions. So I could restart all services.

Please continue to suggest ideas about it, the database size / performance will always be a concern.
If you see anything strange, like a server down, and there’s no mention about it on the twitter, please warn me!
Email, chat, twitter, etc

Thank again to all.


Some news (bad and good ones)

On August 1st, my main computer/server for suicidechess had crash as you already know. Sadly, it was the 1st of each month that I took backups.

After several attempt, I wasn’t able to restore the database as it was. So I got no choice to restore the backup for the 1st of July.
That’s the saddest part, we must re-do all works of July. And I have lost all forum discussion :S

The good news now:
The opening book is back online!
Most of services (Main server, gore, azor,etc) are back online too.
My main computer (previously known as NetBombe) got replaced by a new computer (AMD Phenom II X6 1090 with 8Gb of ram) so we’ll be able to work quickly!

Let start 2010 in a good way

Some people think that my project SuicideChess, it’s just a free-time project. But it’s not.

Even in the part of the year, each day I work on it, and usually I pass more than week work time (40h/week) on it. Today I had correct a bug for StayAlive (Suicide computer on FICS). Still few tests have to be done, but quickly it will improve his opening book, and will resolve the bug where the engine hang and lose on time.

Hopefully, I’ll post a new blog post on any progress made twice a week. Even if I don’t receive any cash from it, I consider SuicideChess project as my job.

Soon, I will release monthly status from some source code analyzer run on the java source code of SuicideChess.

I start to do some tests to know if it’s a good idea to change from Apache Server to a GlassFish server.

To cheat or not to cheat: That’s the question

All depend on which server you are currently playing.

On FICS, any help are illegal. That include: engine help, opening book, human help, endgame table ,etc. So during a suicide game on FICS you cannot look at the opening book or the endgame section. You can use suicidechess project to learn where you had blunder in a previous game.
I think that same rules apply to ICC server, but I’m not sure yet.

On SchemingMind, it’s bit more complicated. You can use opening book, and any chess book. You cannot use any human help and engine help. So yes, you can look in our opening section, but it’s illegal to raise some position’s priorities since positions are evaluated by a engine. IMHO, I found strange that you can look some every depth line (many lines goes father than 50 ply), but according to SchemingMind rule, you still have the right to look at it.

I know, that on any chess server, there will be some cheating humans. Most of them do it knowing that’s cheating, and sooner or later they got caught. In the suicide variant it’s even easier to caught cheaters, since there’s fewer engine and website.

If you are host a chess server supporting suicide variant, and want to know if a player is cheating or if you’re a player, and wanted to know if your opponent had cheated. I can help…

Technical point of SuicideChess project. (part 2 : Database)

I have two database, one is for the forum, and one for any suicide related thing.

The forum database was auto-generate via some script when I installed S.M.F forum.

About the suicide one, let start with some stats to start:
There’s about 530 queries / seconds on this database , this is just a average.
The size of database is currently 98.8 Gb (increasing each seconds).
More than half of billions rows in it.

In this database, there’s two principal table:
Move and GameTree

The Move table record the move ID ,FEN, SAN , score , status (« Not calculated », »Compute in proceed », »Done ») , priority and some other technical fields to provide some info for Gore server.

The GameTree table is quite simple, it’s a many-to-many table , from Move table. This provide all moves possibles after a move.
Let give a example: if the move 1.e3 was ID =1 , and the move 1… c4 was ID = 24. In the GameTree, we will find a row like this : 1 , 24

Beside those two table, I have a table that record the result of all Azor analysis, the Calculate one. I keep info like: which Azor analyze this move, which version of Azor it was, time taken , when it have been analyze. I usually keep only the last month in it, this table is use to generate some stats in the Stats section. When the data is more than a month old, I transfer them in a historical table. I keep them for future bug-hunting, cheater research, etc

I have a Version table, that keep info about version of Azor. This table is read when Azor check if your Azor version is the current one. So when I need to do an Azor update, I just need to add a new row in it, and Azor will be auto-update.

I have a Username table, it keep only a id number and the name that users have provided in the config file. It help to provide some stats by users.

I have a main statistical table that keep info to provide the bottom graphic in the Stats section.

Two other tables exist even if now most user can’t use it, it’s the FavoritePosition and MoveComments one. You may have seen already some move comments. Soon it will be able to add comments to any registered users (via the forum).

I didn’t give the exact name of table , field of database , mainly of security reasons. But like you may have seem , I didn’t keep any informations, even the ip address of azor aren’t keep. Because my goal wasn’t to collect personnal info , it just to provide the largest opening-book database.

About queries made most of them are made for Azors and Gore server. In the 24 hours about 150 000 moves have been analyze by Azors, for each of them. There’s some queries to select a high priority move info. After the Azor analysis, there’s a update on move to update the score value and his status and a row is added in the Calculation table. After that, it’s Gore turn, he made a select to retrieve any move with status « Done » and the move doesn’t have any child. Gore create possible child move according to suicide rules, check with a select if the move already exist in the database,: if not, he insert a new move in the table move , and a new row in GameTree table to link those move. If the move already exist, he simply add a row in GameTree table to link the move analyzed by Azor, with his already existed child.

In average in suicide each positions have about 11 possibles move to do. So about 5 queries for Azor, and about 34 queries for Gore server for each analysis made by a Azor.
So of all 150000 move analyze by Azor, there’s about 5.8 millions queries made to the database.
And when all childs of a move are analyzed, the score of the move is update too, and so on.

Others important queries are those made by the website when an user visit the opening book, stats section.

Technical point of SuicideChess project.

In the whole project, I use many technical things (programming language, server, API, software etc ).
It’s time to make a list of all this.

Java is the main programming language that I use in this project. Some front-end can be easily see, like Azor. But even the back-end are made in this programming language.

With my Java code, I use some open-source API, like ICTK – Internet Chess ToolKit for some few things, like the SAN. And I use Trident API for some graphics elements.

The main database is a MySql one. With some tools provide by MySql like MySql query and MySql administrator.

The Web server is hosted by Slicehost, a great hosting platform. On the web server server, Apache is installed with PHP to provide the website. All this is on a Unbuntu distro.

The development web server is host on Windows, with the software EasyPHP installed.

To generate graphics in php , I use Artichow framework.

Like most chess engine, I use Winboard (Xboard) to connect Nessegrev to FICS

To code, I use two IDE, for java I use mostly Eclipse, and for php & css & JavaScript I use Crimson Editor. To my Eclipse IDE , I have add a lot of plug-in, the list is to long to write it down.

To create static graphic, I use GIMP.

I think it’s almost all I use for this project…